| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:怎么都是WA啊 什么情况啊 。。。 求大牛解答。。(PS:新手一个AND代码有点长)In Reply To:怎么都是WA啊 什么情况啊 。。。 求大牛解答。。(PS:新手一个AND代码有点长) Posted by:Burglar at 2014-01-03 11:21:41 > #include<stdio.h>
> #include<string.h>
> #include<algorithm>
> using namespace std;
> #define INF 0x3f3f3f3f
> #define NF -0x3f3f3f3f
> int ans;
> int x[11];
> int a1[11];
> int ak[11];
> int b1[11];
> int k,a,b,e,h,z,mine;
> int po(int n){
> if(n==0)
> return 1;
> int y,p;
> p=1;
> for(y=0;y<n;y++){
> p=10*p;
> }
> return p;
> }
> int max(int n){
> int i,r,j;
> r=NF;
> for(i=0;i<n;i++){
> if(x[i]>r&&ak[i]!=-1)
> r=x[i];
> }
> for(j=0;j<n;j++){
> if(x[j]==r){
> ak[j]=-1;
> break;
> }
> }
> return r;
> }
> int min(int n){
> int i,r,j;
> r=INF;
> for(i=0;i<n;i++){
> if(x[i]<r&&ak[i]!=-1)
> r=x[i];
> }
> for(j=0;j<n;j++){
> if(x[j]==r){
> ak[j]=-1;
> break;
> }
> }
> return r;
> }
> int solution1(int h){
> int w,c,v,s,ans1;
> v=h/2;
> for(w=0;w<h;w++){
> memset(ak, 0, sizeof(ak));
> memset(a1, 0, sizeof(a1));
> memset(b1, 0, sizeof(b1));
> c=v-1;
> if(z==0){
> if(x[w+1]==0||x[w+2]==0)
> continue;
> a1[0]=x[w+1];
> ak[w+1]=-1;
> b1[0]=x[w+2];
> ak[w+2]=-1;
> a=a1[0]*po(c);
> b=b1[0]*po(c);
> for(s=1;s<v;s++){
> a1[s]=max(h);
> c--;
> a+=a1[s]*po(c);
> }
> c=v-1;
> for(s=1;s<v;s++){
> b1[s]=min(h);
> c--;
> b+=b1[s]*po(c);
> }
> }
> else if(z==1){
> if(x[w]==0||x[w+1]==0)
> continue;
> a1[0]=x[w];
> ak[w]=-1;
> b1[0]=x[w+1];
> ak[w+1]=-1;
> a=a1[0]*po(c);
> b=b1[0]*po(c);
> for(s=1;s<v;s++){
> a1[s]=max(h);
> c--;
> a+=a1[s]*po(c);
> }
> c=v-1;
> for(s=1;s<v;s++){
> b1[s]=min(h);
> c--;
> b+=b1[s]*po(c);
> }
> } if((a-b)>0)
> ans1=a-b;
> else
> ans1=b-a;
> if(ans1<mine)
> mine=ans1;
> }
> return mine;
> }
> int solution2(int h){
> int c,v,s,ans1;
> v=(h/2)+1;
> memset(ak, 0, sizeof(ak));
> memset(a1, 0, sizeof(a1));
> memset(b1, 0, sizeof(b1));
> c=v-1;
> if(z==0){
> a1[0]=x[1];
> ak[1]=-1;
> b1[0]=x[h-1];
> ak[h-1]=-1;
> a=a1[0]*po(c);
> b=b1[0]*po(c-1);
> for(s=1;s<v;s++){
> a1[s]=min(h);
> c--;
> a+=a1[s]*po(c);
> }
> c=v-1;
> for(s=1;s<(h-v);s++){
> b1[s]=max(h);
> c--;
> b+=b1[s]*po(c-1);
> }
> }
> else if(z==1){
> a1[0]=x[0];
> ak[0]=-1;
> b1[0]=x[h-1];
> ak[h-1]=-1;
> a=a1[0]*po(c);
> b=b1[0]*po(c-1);
> for(s=1;s<v;s++){
> a1[s]=min(h);
> c--;
> a+=a1[s]*po(c);
> }
> c=v-1;
> for(s=1;s<(h-v);s++){
> b1[s]=max(h);
> c--;
> b+=b1[s]*po(c-1);
> }
> }
> mine=a-b;
> return mine;
> }
> int main(){
> scanf("%d\n",&k);
> int q;
> for(e=0;e<k;e++){
> memset(x, 0, sizeof(x));
> mine=INF;
> a=0;
> b=0;
> h=0;
> ans=0;
> char ch;
> while((ch=getchar())!='\n')
> {
> if(ch==' ')
> continue;
> x[h++]=ch-'0';
> }
> if(h==1){
> printf("%d\n",x[0]);
> continue;
> }
> sort(x,x+h);
> if(x[0]==0){
> z=0;
> }
> else if(x[0]!=0){
> z=1;
> }
> if(h%2==0){
> ans=solution1(h);
> }
> else if(h%2==1){
> ans=solution2(h);
> }
> printf("%d\n",ans);
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator