P2837 晚餐队列安排
P2837 晚餐队列安排
对程序有新的理解
难度:读懂题&&准确地从题中提取有效信息>设计算法>代码实践
mmp,我看错题啦。
前缀和&&枚举断点即可
1 #include<queue> 2 #include<algorithm> 3 #include<cmath> 4 #include<ctime> 5 #include<cstring> 6 #define inf 2147483647 7 #define For(i,a,b) for(register int i=a;i<=b;i++) 8 #define p(a) putchar(a) 9 #define g() getchar() 10 //by war 11 //2017.10.18 12 using namespace std; 13 int n; 14 int sum[300010]; 15 int x; 16 int ans; 17 void in(int &x) 18 { 19 int y=1; 20 char c=g();x=0; 21 while(c<'0'||c>'9') 22 { 23 if(c=='-') 24 y=-1; 25 c=g(); 26 } 27 while(c<='9'&&c>='0')x=x*10+c-'0',c=g(); 28 x*=y; 29 } 30 void o(int x) 31 { 32 if(x<0) 33 { 34 p('-'); 35 x=-x; 36 } 37 if(x>9)o(x/10); 38 p(x%10+'0'); 39 } 40 int main() 41 { 42 in(n); 43 For(i,1,n) 44 { 45 in(x); 46 if(x==1) 47 sum[i]=sum[i-1]+1; 48 else 49 sum[i]=sum[i-1]; 50 } 51 int ans=inf; 52 for(int i=1;i<=n+1;i++) 53 ans=min(i-1-sum[i-1]+sum[n]-sum[i-1],ans); 54 o(ans); 55 return 0; 56 }