码迷,mamicode.com
首页 > 其他好文 > 详细

2018 ACM 网络选拔赛 沈阳赛区

时间:2018-09-18 13:06:59      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:cal   class   ring   list   iostream   nbsp   log   pac   db2   

 

B. Call of Accepted

  1 #include <cstdio>
  2 #include <cstdlib>
  3 #include <cmath>
  4 #include <cstring>
  5 #include <time.h>
  6 #include <string>
  7 #include <set>
  8 #include <map>
  9 #include <list>
 10 #include <stack>
 11 #include <queue>
 12 #include <vector>
 13 #include <bitset>
 14 #include <ext/rope>
 15 #include <algorithm>
 16 #include <iostream>
 17 using namespace std;
 18 #define ll long long
 19 #define minv 1e-6
 20 #define inf 1e9
 21 #define pi 3.1415926536
 22 #define nl 2.7182818284
 23 const ll mod=1e9+7;//998244353
 24 const int maxn=1e2+10;
 25 
 26 /**
 27 + - 3
 28 * / 2
 29 d   1
 30 ( ) 0
 31 **/
 32 
 33 int xl[maxn],xr[maxn],y[maxn];
 34 char s[maxn],z[maxn];
 35 
 36 int main()
 37 {
 38     int len,i,g1,g2,a,b,c,d,sym;
 39     while (~scanf("%s",s))
 40     {
 41         len=strlen(s);
 42         g1=0;
 43         g2=0;
 44         y[0]=inf;
 45         for (i=0;i<len;i++)
 46             if (s[i]>=0 && s[i]<=9)
 47             {
 48                 g1++;
 49                 xl[g1]=0;
 50                 while (s[i]>=0 && s[i]<=9)
 51                 {
 52                     xl[g1]=xl[g1]*10+s[i]-48;
 53                     i++;
 54                 }
 55                 i--;
 56                 xr[g1]=xl[g1];
 57             }
 58             else
 59             {
 60                 switch(s[i])
 61                 {
 62                     case (:
 63                         sym=0;
 64                         break;
 65                     case ):
 66                         sym=0;
 67                         break;
 68                     case d:
 69                         sym=1;
 70                         break;
 71                     case *:
 72                         sym=2;
 73                         break;
 74                     case /:
 75                         sym=2;
 76                         break;
 77                     case +:
 78                         sym=3;
 79                         break;
 80                     case -:
 81                         sym=3;
 82                         break;
 83                 }
 84                 while (y[g2]<=sym || s[i]==))
 85                 {
 86                     switch(z[g2])
 87                     {
 88                         case d:
 89                             ///ldr l>=0,r>=1,else illegal
 90                             ///正数,负数
 91                             xl[g1-1]=max(0,xl[g1-1]);
 92                             xl[g1]=max(1,xl[g1]);
 93                             xr[g1-1]*=xr[g1];
 94                             break;
 95                         case +:
 96                             xl[g1-1]+=xl[g1];
 97                             xr[g1-1]+=xr[g1];
 98                             break;
 99                         case -:
100                             xl[g1-1]-=xr[g1];
101                             xr[g1-1]-=xl[g1];
102                             break;
103                         case *:
104                             a=xl[g1-1]*xl[g1];
105                             b=xl[g1-1]*xr[g1];
106                             c=xr[g1-1]*xl[g1];
107                             d=xr[g1-1]*xr[g1];
108                             xl[g1-1]=min(min(a,b),min(c,d));
109                             xr[g1-1]=max(max(a,b),max(c,d));
110                             break;
111                         case /:
112                             a=xl[g1-1]/xl[g1];
113                             b=xl[g1-1]/xr[g1];
114                             c=xr[g1-1]/xl[g1];
115                             d=xr[g1-1]/xr[g1];
116                             xl[g1-1]=min(min(a,b),min(c,d));
117                             xr[g1-1]=max(max(a,b),max(c,d));
118                             break;
119                         case (:
120                             break;
121                     }
122                     if (z[g2]==()
123                         break;
124                     g2--;
125                     g1--;
126                 }
127                 if (s[i]==))
128                     g2--;
129                 else
130                 {
131                     y[++g2]=sym;
132                     z[g2]=s[i];
133                 }
134             }
135 
136         while (g2!=0)
137         {
138             switch(z[g2])
139             {
140                 case d:
141                     xr[g1-1]*=xr[g1];
142                     break;
143                 case +:
144                     xl[g1-1]+=xl[g1];
145                     xr[g1-1]+=xr[g1];
146                     break;
147                 case -:
148                     xl[g1-1]-=xr[g1];
149                     xr[g1-1]-=xl[g1];
150                     break;
151                 case *:
152                     a=xl[g1-1]*xl[g1];
153                     b=xl[g1-1]*xr[g1];
154                     c=xr[g1-1]*xl[g1];
155                     d=xr[g1-1]*xr[g1];
156                     xl[g1-1]=min(min(a,b),min(c,d));
157                     xr[g1-1]=max(max(a,b),max(c,d));
158                     break;
159                 case /:
160                     a=xl[g1-1]/xl[g1];
161                     b=xl[g1-1]/xr[g1];
162                     c=xr[g1-1]/xl[g1];
163                     d=xr[g1-1]/xr[g1];
164                     xl[g1-1]=min(min(a,b),min(c,d));
165                     xr[g1-1]=max(max(a,b),max(c,d));
166                     break;
167                 case (:
168                     break;
169             }
170             g2--;
171             g1--;
172         }
173 
174         printf("%d %d\n",xl[1],xr[1]);
175     }
176 
177     return 0;
178 }
179 /*
180 3*(2d3)
181 1+1d2d3d4d5+2
182 
183 (2d3)*(1+3*3d4)d5
184 
185 (2+(3*4+5d1d3)d2)d3
186 
187 
188 
189 (10-30)*3d4
190 
191 (10-3d4)*2d3
192 
193 (10-3d4)*(10-3d4)
194 
195 (10-5d5)*(10-5d5)
196 
197 3d(10-3d4)
198 3d(10-3d4)d(10-3d4)
199 */

 

 

 

I. Lattice‘s basics in digital electronics

  1 #include <cstdio>
  2 #include <cstdlib>
  3 #include <cmath>
  4 #include <cstring>
  5 #include <time.h>
  6 #include <string>
  7 #include <set>
  8 #include <map>
  9 #include <list>
 10 #include <stack>
 11 #include <queue>
 12 #include <vector>
 13 #include <bitset>
 14 #include <ext/rope>
 15 #include <algorithm>
 16 #include <iostream>
 17 using namespace std;
 18 #define ll long long
 19 #define minv 1e-6
 20 #define inf 1e9
 21 #define pi 3.1415926536
 22 #define nl 2.7182818284
 23 const ll mod=1e9+7;//998244353
 24 const int maxn=1e5+10;
 25 
 26 int tr[1000000];
 27 char s1[200010*10],s2[200010*10],s3[200010*10],s4[200010*10];
 28 char s[200010*10];
 29 
 30 int main()
 31 {
 32     int t,m,n,a,i,j,k,len,now,g,value;
 33     scanf("%d",&t);
 34     while (t--)
 35     {
 36         memset(tr,0,sizeof(tr));
 37         scanf("%d%d",&m,&n);
 38         for (i=1;i<=n;i++)
 39         {
 40             scanf("%d%s",&a,s);
 41             len=strlen(s);
 42             k=1;
 43             for (j=0;j<len;j++)
 44                 k=(k<<1)+s[j]-48;
 45             tr[k]=a;
 46         }
 47 
 48         scanf("%s",s1);
 49         len=strlen(s1);
 50         j=0;
 51         for (i=0;i<len;i++)
 52         {
 53             if (s1[i]>=0 && s1[i]<=9)
 54                 value=s1[i]-48;
 55             else if (s1[i]>=A && s1[i]<=F)
 56                 value=s1[i]-55;
 57             else
 58                 value=s1[i]-87;
 59 
 60             s2[j++]=value/8+48;
 61             value%=8;
 62             s2[j++]=value/4+48;
 63             value%=4;
 64             s2[j++]=value/2+48;
 65             value%=2;
 66             s2[j++]=value+48;
 67         }
 68         s2[j]=\0;
 69         len=j;
 70 
 71         now=0;
 72         for (i=0;i<len/9;i++)
 73         {
 74             g=0;
 75             j=i*9;
 76             for (k=j;k<j+8;k++)
 77                 g+=s2[k]-48;
 78             if ((g+1)%2==s2[k]-48)
 79             {
 80                 for (k=j;k<j+8;k++)
 81                     s3[now++]=s2[k];
 82             }
 83         }
 84         s3[now]=\0;
 85 
 86         j=1;
 87         len=0;
 88         for (i=0;i<now;i++)
 89         {
 90             j=j*2+s3[i]-48;
 91             if (j>10000)
 92                 continue;
 93             if (tr[j])
 94             {
 95                 s4[len++]=tr[j];
 96                 if (len==m)
 97                     break;
 98                 j=1;
 99             }
100         }
101         s4[len]=\0;
102         printf("%s\n",s4);
103     }
104     return 0;
105 }
106 /*
107 10
108 8 3
109 49 0001
110 50 01001
111 51 011
112 14DB24722698
113 
114 
115 2
116 15 9
117 32 0100
118 33 11
119 100 1011
120 101 0110
121 104 1010
122 108 00
123 111 100
124 114 0111
125 119 0101
126 908
127 
128 100
129 100 2
130 65 010
131 66 1011
132 AAAAAA
133 */

 

K. Supreme Number

  1 #include <cstdio>
  2 #include <cstdlib>
  3 #include <cmath>
  4 #include <cstring>
  5 #include <time.h>
  6 #include <string>
  7 #include <set>
  8 #include <map>
  9 #include <list>
 10 #include <stack>
 11 #include <queue>
 12 #include <vector>
 13 #include <bitset>
 14 #include <ext/rope>
 15 #include <algorithm>
 16 #include <iostream>
 17 using namespace std;
 18 #define ll long long
 19 #define minv 1e-6
 20 #define inf 1e9
 21 #define pi 3.1415926536
 22 #define nl 2.7182818284
 23 const ll mod=1e9+7;//998244353
 24 const int maxn=1e5+10;
 25 
 26 typedef pair<int,int> P;
 27 
 28 char str[maxn];
 29 int g=0,b,a[maxn];
 30 int c[5]={1,2,3,5,7};
 31 int shi[10];
 32 
 33 bool prime(int t)
 34 {
 35     int i;
 36     for (i=2;i<=sqrt(t);i++)
 37         if (t%i==0)
 38             return 0;
 39     return 1;
 40 }
 41 
 42 void dfs(int s,int w,vector<P>v)
 43 {
 44     vector<P>::iterator j;
 45     vector<P>vv;
 46     int t,i;
 47 
 48     for (i=0;i<5;i++)
 49     {
 50 
 51 //        if (shi[w]*c[i]+s==711)
 52 //            printf("z");
 53 
 54         for (j=v.begin();j!=v.end();j++)
 55         {
 56             if (!prime(j->first+shi[j->second]*c[i]))
 57                 break;
 58         }
 59 
 60         if (j==v.end())
 61         {
 62             t=shi[w]*c[i]+s;
 63             vv.clear();
 64             for (j=v.begin();j!=v.end();j++)
 65             {
 66                 vv.push_back(make_pair(j->first,j->second));
 67                 vv.push_back(make_pair(j->first+shi[j->second]*c[i],j->second+1));
 68             }
 69             vv.push_back(make_pair(c[i],1));
 70 
 71 //            printf("%d:\n",t);
 72 //            for (j=vv.begin();j!=vv.end();j++)
 73 //                printf("%d\n",j->first);
 74 
 75             g++;
 76             a[g]=t;
 77             dfs(t,w+1,vv);
 78         }
 79     }
 80 }
 81 
 82 int main()
 83 {
 84     vector<P>v;
 85     int t,T,i;
 86 //    cout<<pow(10,0)<<endl;
 87 //    cout<<pow(10,1)<<endl;
 88 //    cout<<pow(10,2)<<endl;
 89 //
 90 //    printf("\n");
 91 //
 92 //    printf("%f\n",pow(10,0));
 93 //    printf("%f\n",pow(10,1));
 94 //    printf("%f\n",pow(10,2));
 95 //
 96 //    printf("\n");
 97 //
 98 //    printf("%d\n",pow(10,0));
 99 //    printf("%d\n",pow(10,1));
100 //    printf("%d\n",pow(10,2));
101 //
102 //    printf("\n");
103 //
104 //    printf("%d\n",(int)pow(10,0));
105 //    printf("%d\n",(int)pow(10,1));
106 //    printf("%d\n",(int)pow(10,2));
107 //
108 //    printf("\n");
109 //
110 //    printf("\n");
111 //
112 //    printf("%f\n",log(2)/log(2));
113 //    printf("%f\n",log(4)/log(2));
114 //    printf("%f\n",log(8)/log(2));
115 //    printf("%f\n",log(16)/log(2));
116 //
117 //    printf("%d\n",(int)(log(2)/log(2)));
118 //    printf("%d\n",(int)(log(4)/log(2)));
119 //    printf("%d\n",(int)(log(8)/log(2)));
120 //    printf("%d\n",(int)(log(16)/log(2)));
121 //
122 //    printf("\n");
123 //
124 //    printf("%d\n",(int)log(2)/log(2));
125 //    printf("%d\n",(int)log(4)/log(2));
126 //    printf("%d\n",(int)log(8)/log(2));
127 //    printf("%d\n",(int)log(16)/log(2));
128 //    return 0;
129 
130     shi[0]=1;
131     for (i=1;i<=9;i++)
132         shi[i]=shi[i-1]*10;
133 
134     v.push_back(make_pair(0,0));
135     dfs(0,0,v);
136     sort(a+1,a+g+1);
137 
138 //    for (i=1;i<=g;i++)
139 //        printf("%d ",a[i]);
140 
141     scanf("%d",&t);
142     for (T=1;T<=t;T++)
143     {
144         scanf("%str",str);
145         if (strlen(str)>9)
146         {
147             printf("Case #%d: %d\n",T,a[g]);
148             continue;
149         }
150         b=atoi(str);
151         for (i=g;i>=1;i--)
152             if (b>=a[i])
153                 break;
154         printf("Case #%d: %d\n",T,a[i]);
155     }
156     return 0;
157 }

 

2018 ACM 网络选拔赛 沈阳赛区

标签:cal   class   ring   list   iostream   nbsp   log   pac   db2   

原文地址:https://www.cnblogs.com/cmyg/p/9668266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!