【ZJOI2009】【BZOJ1432】Function

problem

  • n条直线,没有任意三条及以上直线相交于同一点。
  • 求从下往上第k层(具体见原题)最少能被划分成多少条线段。

solution

n条边两两相交可以截出n^2段线段(自己画画就出来了QAQ)
所以对于每一层,有如下规律:
当k = 1时,线段数sum=n;
当k>=2时,线段数sum=(n-k+1)*2;

至今有点晕,放两个题解先:
https://blog.csdn.net/flaze_/article/details/52886497
https://blog.csdn.net/CHNWJD/article/details/71909581

codes

#include<iostream>
using namespace std;
int main(){
    int n,k;
    cin>>n>>k;
    if(n==1){
        cout<<1<<'\n';
    }else{
        cout<<2*min(k,(n-k+1))<<'\n';
    }
    return 0;
}
posted @ 2018-05-27 12:43  gwj1139177410  阅读(85)  评论(0编辑  收藏  举报
选择