样例过了但是0分的看过来

P2119 [NOIP2016 普及组] 魔法阵

附:60分暴力lowbee程序 ```cpp #include <bits/stdc++.h> using namespace std; int magic[40003]; int cnta[40003],cntb[40003],cntc[40003],cntd[40003]; struct ob { int v,ord; }objs[40003]; bool cmp(ob a,ob b){return a.v<b.v;} int main(int argc, char const *argv[]) { int n,m; cin>>n>>m; for(int i=1;i<=m;i++) { cin>>magic[i]; objs[i].v=magic[i];objs[i].ord=i; } sort(objs+1,objs+m+1,cmp); for(int i=1;i<=m;i++) for(int j=i+1;j<=m;j++) if((objs[j].v-objs[i].v)%2==0) for(int k=j+1;k<=m;k++) if((objs[j].v-objs[i].v)*3<(objs[k].v-objs[j].v)) for(int l=k+1;l<=m;l++) if((objs[l].v-objs[k].v)*2==(objs[j].v-objs[i].v)) { cnta[objs[i].ord]++; cntb[objs[j].ord]++; cntc[objs[k].ord]++; cntd[objs[l].ord]++; } for(int i=1;i<=m;i++) { cout<<cnta[i]<<' '<<cntb[i]<<' '<<cntc[i]<<' '<<cntd[i]<<' '<<endl; } return 0; } ```
by SEELE @ 2017-11-07 17:30:42


上面那个程序就是没判断xa!=xb的0分错误程序 正确: ```cpp #include <bits/stdc++.h> using namespace std; int magic[40003]; int cnta[40003],cntb[40003],cntc[40003],cntd[40003]; struct ob { int v,ord; }objs[40003]; bool cmp(ob a,ob b){return a.v<b.v;} int main(int argc, char const *argv[]) { int n,m; cin>>n>>m; for(int i=1;i<=m;i++) { cin>>magic[i]; objs[i].v=magic[i];objs[i].ord=i; } sort(objs+1,objs+m+1,cmp); for(int i=1;i<=m;i++) for(int j=i+1;j<=m;j++) if((objs[j].v-objs[i].v)&&(objs[j].v-objs[i].v)%2==0&&(objs[j].v-objs[i].v)/2*9<n) { for(int k=j+1;k<=m;k++) if((objs[j].v-objs[i].v)*3<(objs[k].v-objs[j].v)) for(int l=k+1;l<=m;l++) if((objs[l].v-objs[k].v)*2==(objs[j].v-objs[i].v)) { cnta[objs[i].ord]++; cntb[objs[j].ord]++; cntc[objs[k].ord]++; cntd[objs[l].ord]++; //cout<<objs[i].v<<' '<<objs[j].v<<' '<<objs[k].v<<' '<<objs[l].v<<endl; } } for(int i=1;i<=m;i++) { cout<<cnta[i]<<' '<<cntb[i]<<' '<<cntc[i]<<' '<<cntd[i]<<' '<<endl; } return 0; } ```
by SEELE @ 2017-11-07 17:32:25


谢谢大佬,我原来只有十分
by 八水L @ 2018-04-28 10:41:41


#include<iostream> #include<cstring> using namespace std; int main(){ int n,m; int q[40001], w[15001]; int a[15001], b[15001], c[15001], d[15001]; cin>>n>>m; for(int i=1;i<=m;i++){ cin>>q[i]; w[q[i]]++; } for(int i=1;i*9+1<=n;i++){ int e=0; for(int j=i*9+2;j<=n;j++){ e+=w[j-7*i-1]*w[j-9*i-1]; c[j-i]+=w[j]*e; d[j]+=w[j-i]*e; } e=0; for(int j=n-i*9-1;j>=1;j--){ e+=w[j+i*9+1]*w[j+i*8+1]; a[j]+=w[j+2*i]*e; b[j+2*i]+=w[j]*e; } } for(int i=1;i<=m;i++){ cout<<a[q[i]]<<" "<<b[q[i]]<<" "<<c[q[i]]<<" "<<d[q[i]]<<endl; } return 0; }
by wangck @ 2018-05-01 16:36:55


@[沙漠之雁](/space/show?uid=33776) 求大佬帮我看看我这个为什么错?谢谢! ```cpp #include <bits/stdc++.h> using namespace std; int n,m,a[40009]; struct U { int yi; int er; int san; int si; }; U fj[40009]; int main() { scanf("%d %d",&n,&m); for(int i=1; i<=m; i++) { scanf("%d",&a[i]); } sort(a+1,a+m+1); for(int i=1; i<=m; i++) { for(int j=i+1; j<=m; j++) { for(int k=j+1; k<=m; k++) { for(int l=k+1; l<=m; l++) { if(a[j]-a[i]==2*(a[l]-a[k])) { if(a[j]-a[i]<(a[k]-a[j])/3) { fj[i].yi++; fj[j].er++; fj[k].san++; fj[l].si++; } } } } } } for(int i=1; i<=m; i++) { printf("%d %d %d %d\n",fj[i].yi,fj[i].er,fj[i].san,fj[i].si); } return 0; } ```
by si_zhong @ 2018-08-06 18:36:52


没有判 A=B,B=C,C=D的情况 @[tan_gent](/user/31728)
by 洛谷Onlinejudge @ 2019-11-09 12:14:21


|