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