题目描述

有n 个连续函数fi (x),其中1 ≤ i ≤ n。对于任何两个函数fi (x) 和fj (x),(i != j),恰好存在一个x 使得fi (x) = fj (x),并且存在无穷多的x 使得fi (x) < fj (x)。对于任何i; j; k,满足1 ≤ i < j < k ≤ n,则不存在x 使得fi (x) = fj (x) = fk (x)。



如上左图就是3 个满足条件的函数,最左边从下往上依次为f1; f2; f3。右图中红色部分是这整个函数图像的最低层,我们称它为第一层。同理绿色部分称为第二层,蓝色部分称为第三层。注意到,右图中第一层左边一段属于f1,中间属于f2,最后属于f3。而第二层左边属于f2,接下来一段属于f1,再接下来一段属于f3,最后属于f2。因此,我们称第一层分为了三段,第二层分为了四段。同理第三层只分为了两段。求满足前面条件的n 个函数,第k 层最少能由多少段组成。

输入输出格式

输入格式

一行两个整数n; k。

输出公式

一行一个整数,表示n 个函数第k 层最少能由多少段组成。

样例

INPUT

1 1

OUTPUT

1

HINT

SOLUTION

(#`O′)喂这样例也太水了点吧。

感谢zzr的友情支持。

推规律:自己多画几个图就出来啦(最好画到\(n=5\)以上吧,不然看不出啥规律),注意一下可以对称翻转整个图形即可。

数学证明:

首先,我们要求的是且仅是\(n\)条线,分出的第\(k\)层的最优解,所以,若能使我们的\(1~n/2\)层有最优解,由于对称性,将整个图形翻转过来之后,我们的\(n/2~n\)层一样也可以有最优解。

然后有一个特判:\(n=1\)时,\(ans=1\)

接下来我们要找的就是上半部分(也可以是下半部分,反正是某半边就可以了对吧)的最优解的求得方法。

数学归纳法证明:

[Warning]其实我并不太熟悉数学归纳法,如果有dalao对这篇题解有问题提出,欢迎一起讨论qwq但这好像姑且算个数学归纳法吧

我们首先可知在\(\forall n\in N_+(n\neq1)\)中,\(k=1时\)一定有\(ans=2\)

\(k>1\)时,对于\(k-1\)层,我们假使结论\(ans=2*(k-1)\)成立,

我们第\(k-1\)层现有的\(2*(k-1)\)段的每一段向原延伸方向延伸直至碰到下一个交点为止,于是得到了新的\(2*(k-1)\)段,而我们又知道,一个交点涉及的的有且只有两条直线,而易得我们每一层的两端必定是由无限远延伸来的射线,因为出现过的直线的线段就是由一个端点延伸而来,故这两条射线所在的直线应该是第一次出现,不能包含在原有的\(2*(k-1)\)段里,所以可以得出,对于第\(k\)层,我们有\(ans=2*k\)

命题得证。

#include <cstdio>
#include <iostream>
using namespace std;
int main(){
int n,k;
scanf("%d%d",&n,&k);
if (n==1) {puts("1");return 0;}
printf("%d\n",min(k*2,2*(n-k+1)));
return 0;
}

bzoj1432_[ZJOI2009]Function的更多相关文章

  1. BZOJ 1432: [ZJOI2009]Function

    1432: [ZJOI2009]Function Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1046  Solved: 765[Submit][Sta ...

  2. 1432: [ZJOI2009]Function

    1432: [ZJOI2009]Function Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 710  Solved: 528[Submit][Stat ...

  3. BZOJ 1432: [ZJOI2009]Function(新生必做的水题)

    1432: [ZJOI2009]Function Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1205  Solved: 895[Submit][Sta ...

  4. 【BZOJ1432】[ZJOI2009]Function(找规律)

    [BZOJ1432][ZJOI2009]Function(找规律) 题面 BZOJ 洛谷 题解 这...找找规律吧. #include<iostream> using namespace ...

  5. bzoj千题计划138:bzoj1432: [ZJOI2009]Function

    http://www.lydsy.com/JudgeOnline/problem.php?id=1432 http://blog.sina.com.cn/s/blog_86942b1401014bd2 ...

  6. bzoj 1432 [ZJOI2009]Function 思想

    [bzoj1432][ZJOI2009]Function Description Input 一行两个整数n; k. Output 一行一个整数,表示n 个函数第k 层最少能由多少段组成. Sampl ...

  7. BZOJ1432 [ZJOI2009]Function

    Description Input 一行两个整数n; k. Output 一行一个整数,表示n 个函数第k 层最少能由多少段组成. Sample Input 1 1 Sample Output 1 H ...

  8. bzoj 1432 [ZJOI2009]Function(找规律)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1432 [思路] 找(cha)规(ti)律(jie) 分析戳这儿 click here ...

  9. 【构造】Bzoj1432[ZJOI2009]Function

    Description Input 一行两个整数n; k. Output 一行一个整数,表示n 个函数第k 层最少能由多少段组成. Sample Input 1 1 Sample Output 1   ...

随机推荐

  1. Java 14 有哪些新特性?

    记录为 Java 提供了一种正确实现数据类的能力,不再需要为实现数据类而编写冗长的代码.下面就来看看 Java 14 中的记录有哪些新特性. 作者 | Nathan Esquenazi 译者 | 弯月 ...

  2. MySQL--MySQL 日志

    在 MySQL中,有 4 种不同的日志,分别是错误日志.二进制日志(BINLOG 日志).查询日志和慢查询日志. 1.错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启 ...

  3. 关于 TCP 和 UDP 协议

    TCP\UDP 两者区别总结:https://blog.csdn.net/striveb/article/details/84063712 图解HTTP,状态码,TCP.UDP等网络协议相关总结(持续 ...

  4. Office文档WEB端在线浏览(转换成Html)

    最近在做了一个项目,要求是对Office文档在线预览.下面给大家分享一下我的方法. 1.第一种方法(不建议使用)我是在网上搜了一个利用COM组件对office文档进行转换,但是此方法必须要装Offic ...

  5. 大言不惭 swank? talk about sth or speak too confidently cán,意思是指说大话而毫不感到难为情。出自《论语·宪问》:“子曰:‘其言之不怍,则为之也难。’”宋·朱熹注:“大言不惭,则无必为之志,而不自度其能否也。欲践其言,其不难哉!” 是不是类似于 swank?

    大言不惭 swank? talk about sth or speak too confidently cán,意思是指说大话而毫不感到难为情.出自<论语·宪问>:“子曰:‘其言之不怍,则 ...

  6. 五、Shell脚本高级编程实战第五部

    一.条件表达式 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作.有时也和if结合,让我们方便判断. test: 1)判断文件是否存在:test -f  file 2) ...

  7. 分辨率单位及换算,LW / PH、LP / mm、L / mm、Cycles / mm、Cycles / pixel、LP / PH

    对于测试数字成像设备非常重要的参数是分辨率.但有不同的方式来表达数码相机的分辨率,有时令人困惑.下面介绍的是是最常见的单位. 百万像素 “这台相机有1000万像素的分辨率”是我们经常在广告上看到的数据 ...

  8. vue中过滤器filter

    Vue.js 允许我们自定义过滤器,可被用作一些常见的文本格式化.过滤器可以用在两个地方:mustache 插值表达式. v-bind表达式.过滤器应该被添加在 JavaScript 表达式的尾部,由 ...

  9. tomcat更新class不生效

    替换线上lib里的class不生效,需要想想是不是前人为了图方便在classes里面扔了一份老版本class

  10. \b 是单词边界锚点 word-boundary anchor,一个“\b”匹配一个单词的一端,两个“\b”匹配一个单词的头尾两端

    123 $_ = "beforematcha? fter";    124 if(/\b\w+a\b/){    125     print "matched: < ...