【bzoj1432】Function【结论题】

来源:互联网 发布:八字不合 知乎 编辑:程序博客网 时间:2024/05/21 14:40

结论题的特点是:代码往往都很短……
我先说一下答案:n=1的时候输出1,其余时候输出2*k,假如k>(n>>1)的话,令k=n-k+1(因为1和n-1是对称的)。
为什么呢……
我们画一个图。

这是5条直线(函数)。可以看到,这些点以
A
BC
DEF
GHIJ
的方式排列。
第一个部分只经过A(这样一定是最优的)
第二个部分只经过BAC
第三个部分只经过DBECF……
1
1+2
2+3
3+4……
线段数比点数多一,所以就是
2
4
6
8……
特别地,当n=1时是1。

#include<iostream>using namespace std;int main(){    int n,k;    cin>>n>>k;    if(n==1) cout<<"1";    else{        if(k>n/2) k=n-k+1;        cout<<2*k;    }    return 0;}
1 0
原创粉丝点击