本文共 1848 字,大约阅读时间需要 6 分钟。
题意:一个比赛中,n裁判依次给你打分,第i个裁判给了A[i]分,但你记性不好,没有记住所有得分,连初始分都忘记了,只记得m个加完分后的总分B[i](不是按顺序的),且B[i]互不相同。问:初始分有多少种可能的情况。
#include#include #include #include using namespace std;int main(){ int n,k; int a[2005],b[2005],c[2005]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); cin>>k>>n; for(int i=1;i<=k;++i) { scanf("%d",&a[i]); c[i]=a[i]; a[i]+=a[i-1]; } sort(a+1,a+k+1); k=unique(a+1,a+k+1)-a-1; for(int i=1;i<=n;++i) scanf("%d",&b[i]); int score,flag,ans=0,ant,tag; for(int i=1;i<=k;++i) { score=b[1]-a[i]; ant=0; for(int j=1;j<=n;++j) { tag = b[j]-score; if(binary_search(a+1,a+k+1,tag)) { ant++; } else break; } if(ant==n) ans++; } cout< <
#include#include #include #include using namespace std;int main(){ int n,k; int a[2005],b[2005],c[2005]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); cin>>k>>n; for(int i=1;i<=k;++i) { scanf("%d",&a[i]); c[i]=a[i]; a[i]+=a[i-1]; } sort(a+1,a+k+1); k=unique(a+1,a+k+1)-a-1; for(int i=1;i<=n;++i) scanf("%d",&b[i]); int score,flag,ans=0,ant=0,tag; for(int i=1;i<=k;++i) { score=b[1]-a[i]; ant=0; for(int j=1;j<=n;++j) { tag = b[j]-score; flag=0; for(int q=1;q<=k;++q) { if(tag==a[q]) { ant++; flag=1; break; } } if(!flag) break; } if(ant==n) ans++; } cout< <
转载地址:http://vhfai.baihongyu.com/