【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<<'
';
    }else{
        cout<<2*min(k,(n-k+1))<<'
';
    }
    return 0;
}
原文地址:https://www.cnblogs.com/gwj1314/p/9444795.html