3 条题解
-
1
/*两种方法,核心思想都是跳过最长的几个无牛区 第二种方法较快:直接用输入的数据计算无牛区的长度 第一种方法:用数组模拟牛棚,0无1有*/ #include<bits/stdc++.h> using namespace std; int a[300],b,c,d,e,f[300]; //num line,board num,total num,ox num,temp,blank length bool way(int a,int b) { return a>b; } int main() { int b,c,d,e; cin>>b>>c>>d; //way 2: for (int i=0;i<d;i++) cin>>a[i]; sort (a,a+d); for (int i=0;i<d-1;i++) f[i]=a[i+1]-a[i]-1;//count the blank e=a[d-1]-a[0]+1;//from the first to the last sort (f,f+c,way);//sort the blank length for (int i=0;i<b-1;i++) e-=f[i];//cut form the middle,take out the rest //--------changable part end--------- cout<<e; return 0; } //way 1: //for (int i=0;i<d;i++) // { // cin>>e; // a[e]=1; // }//mark ox position // e=0; // for (int i=1;i<=c;i++) // if (a[i]==1)//begin from the first ox // { // for (int j=i;j<=c;j++) // { // if (a[j]==0) // e++;//connected cowshed count // if (a[j]==1) // { // f[j]=e; // e=0;//take num to f[],recount // } // } // i=c; // } // e=c; // sort (f,f+c+1,way);//sort the blank length // for (int i=0;i<b-1;i++) // e-=f[i];//cut form the middle,take out the rest // for (int i=1;i<=c;i++) // { // if (a[i]==0) // e--; // else // break; // }//except front blank // for (int i=c;i>=0;i--) // { // if (a[i]==0) // e--; // else // break; // }//except back blank
信息
- ID
- 13
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 36
- 已通过
- 14
- 上传者