zoukankan      html  css  js  c++  java
  • [ZJOI2009]函数 题解

    题目链接:[ZJOI2009]函数

    对于$n=1$的情况,直接输出$1$

    对于$n>1$的情况,由于我们可以将图上下反转,所以第$k$层的情况可以被转成第$n-k+1$层

    规律自己打个表可以推出来:$ans=min(k,n-k+1)*2$

    关键是如何证明它,我们用数学归纳法证明

    当$k=1$,时,很明显$ans=2$(即最下端的那两部分)

    假设在$k-1$的时候结论成立,即此时$ans=2*(k-1)$,

    那么在$k$的时候

    我们将$ans$中的每一段向上延伸,在碰到交点时停止,所得到的新$2(k-1)$段则是第$k$层的组成部分(因为每一个交点只会涉及到两个函数值的大小关系变化,这由题目中“没有三个函数共点”可以推知)

    而每一层的开头与结尾必须是像正负无穷大无限延伸的

    所以我们还要补上一头一尾两段

    总的答案$=2(k-1)+2=2k$段,命题得证

     1 #include<iostream>
     2 #include<string>
     3 #include<string.h>
     4 #include<stdio.h>
     5 #include<algorithm>
     6 #include<vector>
     7 #include<queue>
     8 #include<map>
     9 using namespace std;
    10 int n,k;
    11 int main()
    12 {
    13     cin >> n >> k;
    14     if (n==1) cout << 1;
    15     else cout << min(k,n-k+1)*2;
    16     return 0;
    17 }
  • 相关阅读:
    Eclipse在线集成maven M2eclipse插件
    RBAC用户权限管理数据库设计
    Linux下修改mysql密码
    Red hat 6.4下面的qt安装
    export default {} 和new Vue()区别
    Ajax中POST和GET的区别
    JS es6-Symbol
    JS es6编程规范
    JS之箭头函数
    JS异步加载的方式
  • 原文地址:https://www.cnblogs.com/encodetalker/p/9791706.html
Copyright © 2011-2022 走看看