0
点赞
收藏
分享

微信扫一扫

【ZJOI2009】【BZOJ1432】Function(找规律)


problem

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

solution

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


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;
}


举报

相关推荐

0 条评论