ZOJ Candies 2013年长沙赛区网络赛
2013-09-23 15:41
281 查看
设人数为 n。
当 n%3 != 2 时,每三个人里面可以确定两个人。
当 n%3 == 2 时,每三个人里面只可以确定一个人。
此时需要就需要枚举了,详见代码。
当 n%3 != 2 时,每三个人里面可以确定两个人。
当 n%3 == 2 时,每三个人里面只可以确定一个人。
此时需要就需要枚举了,详见代码。
#include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> using namespace std; int a[100020] = {0}; int s[100020] = {0}; int t[100020] = {0}; int n; bool judge(int v,int q) { int i; t[q] = v; if(q >= 2) { if(a[q-1] == -1) { t[q-1] = s[q-1]-t[q]-a[q-2]; } else { t[q-1] = a[q-1]; } } for(i = q-2;i >= 1; --i) { if(a[i] == -1) { t[i] = s[i+1] - t[i+1] - t[i+2]; if(t[i] < 0) return false; } else { t[i] = a[i]; if(t[i] + t[i+1] + t[i+2] != s[i+1]) return false; } } if(a[q+1] == -1) { t[q+1] = s[q+1]-t[q]-a[q+2]; } else { t[q+1] = a[q+1]; } for(i = q+2;i <= n; ++i) { if(a[i] == -1) { t[i] = s[i-1] - t[i-1] - t[i-2]; if(t[i] < 0) return false; } else { t[i] = a[i]; if(t[i] + t[i-1] + t[i-2] != s[i-1]) return false; } } return true; } int main() { int m,i,q; while(scanf("%d",&n) != EOF) { for(i = 1;i <= n; ++i) { scanf("%d",&a[i]); } for(i = 1;i <= n; ++i) { scanf("%d",&s[i]); } if(n%3 != 2) { for(i = 3;i <= n; i += 3) { a[i] = s[i-1] - s[i-2] + a[i-3]; } for(i = n-2;i >= 0; i -= 3) { a[i] = s[i+1] - s[i+2] + a[i+3]; } scanf("%d",&m); while(m--) { scanf("%d",&q); q++; if(a[q] == -1) { printf("%d\n",s[q]-a[q+1]-a[q-1]); } else { printf("%d\n",a[q]); } } } else { for(i = 3;i <= n; i += 3) { a[i] = s[i-1] - s[i-2] + a[i-3]; } scanf("%d",&m); while(m--) { scanf("%d",&q); q++; if(a[q] != -1) { printf("%d\n",a[q]); } else { int temp; if((q-1)%3 == 0) { temp = (s[q] + s[q+1] - a[q-1] - a[q+2])/2; for(i = temp;i >= 0; --i) { if(judge(i,q)) { break; } } } else { temp = (s[q] + s[q-1] - a[q+1] - a[q-2])/2; for(i = temp;i >= 0; i--) { if(judge(i,q)) { break; } } } printf("%d\n",i); } } } } return 0; }
相关文章推荐
- ZOJ Goldbach 2013年长沙赛区网络赛
- ZOJ Goldbach 2013年长沙赛区网络赛
- ZOJ 3856 Goldbach FFT计数 2013年长沙网络赛
- HDU4565/2013年长沙赛区So easy
- 2013年杭州赛区网络赛The Donkey of Gui Zhou
- HDU4567/2013年长沙赛区Brilliant Programmers Show
- HDU4571/2013年长沙赛区Travel in time
- 2013年ACM网络赛长春赛区
- 2013年长沙网络赛G题
- 2013年成都赛区网络赛之水题A Bit Fun
- 2013年ACM网络赛杭州赛区
- HDU4568/2013年长沙赛区Hunter
- HDU4569/2013年长沙赛区Special equations
- 2013年ACM网络赛成都赛区
- HDU4574/2013年长沙赛区Bombs
- HDU4575/2013年长沙赛区Changsha Marathon
- hdu 4273 2012长春赛区网络赛 三维凸包中心到最近面距离 ***
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 B. Coin(概率)
- 【推导】计蒜客17116 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C. Sum
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 概率+矩阵快速幂