第一周 7.19-7.25
暑假仍按周写。多校题每场另开一篇。
7.19
补一个计算客。
429 企鹅手机地图
由于角度都是整数。计算每个角度为1°的小扇形面积和即可。
坑点在于r有1e5。精度要1e-3。所以pi精度要高。
角度a=b的时候就是没有覆盖。理解成覆盖一周所以一直WA。
1 # include <iostream> 2 # include <cstdio> 3 # include <cstring> 4 # include <algorithm> 5 using namespace std; 6 const long double pi=3.141592653589793; 7 long double MAX[360]; 8 9 int main(void) 10 { 11 int T; cin>>T; 12 while(T--) 13 { 14 memset(MAX,0,sizeof(MAX)); 15 int n; scanf("%d",&n); 16 while(n--) 17 { 18 int a,b; long double r; 19 scanf("%Lf%d%d",&r,&a,&b); 20 a+=90; b+=90; 21 for(int i=a;i<b;i++) MAX[i]=max(MAX[i],r); 22 } 23 long double ans=0; 24 for(int i=0;i<360;i++) ans+=pi*MAX[i]*MAX[i]/360; 25 printf("%Lf\n",ans); 26 } 27 return 0; 28 }
7.20
补一个BC。
HDU 5285 wyh2000 and pupil
二分图。用染色法贪心的求最大即可。
1 # include <iostream> 2 # include <cstdio> 3 # include <cstring> 4 # include <vector> 5 # include <algorithm> 6 # include <queue> 7 using namespace std; 8 # define maxn 100010 9 vector <int> vec[maxn]; 10 queue <int> q; 11 int color[maxn]; 12 13 int main(void) 14 { 15 int T; cin>>T; 16 while(T--) 17 { 18 memset(color,0,sizeof(color)); 19 int n,m; scanf("%d%d",&n,&m); 20 for(int i=1;i<=n;i++) vec[i].clear(); 21 while(m--) 22 { 23 int x,y; scanf("%d%d",&x,&y); 24 vec[x].push_back(y); 25 vec[y].push_back(x); 26 } 27 if(n<=1) {printf("Poor wyh\n"); continue;} 28 int ans=0,ok=1; 29 for(int i=1;i<=n;i++) 30 { 31 if(!color[i]) 32 { 33 int black=1,white=0; 34 color[i]=1; 35 q.push(i); 36 while(!q.empty()) 37 { 38 int tem=q.front(); q.pop(); 39 for(int j=0;j<vec[tem].size();j++) 40 { 41 if(color[vec[tem][j]]) 42 { 43 if(color[vec[tem][j]]==color[tem]) {ok=0; break;} 44 } 45 else 46 { 47 color[vec[tem][j]]=3-color[tem]; 48 if(color[vec[tem][j]]==1) black++; 49 else white++; 50 q.push(vec[tem][j]); 51 } 52 } 53 } 54 ans+=max(black,white); 55 } 56 } 57 if(!ok) printf("Poor wyh\n"); 58 else 59 { 60 if(ans==n) printf("%d 1\n",ans-1); 61 else printf("%d %d\n",ans,n-ans); 62 } 63 } 64 return 0; 65 }
7.21
打多校。
见2015 Multi-University Training Contest 1
7.22
补多校。
打了个CF。
7.23
我打了多校?不我只是看了几个小时的题。
2015 Multi-University Training Contest 2
先补CF。
((其实这次CF很水
按题目说的递归judge就可以了。比赛的时候浪费太久。没写完。
1 # include <iostream> 2 # include <cstdio> 3 # include <cstring> 4 using namespace std; 5 char a[200005],b[200005]; 6 7 bool judge(int l1,int r1,int l2,int r2) 8 { 9 if((r1-l1+1)%2) 10 { 11 for(int i=0;i<=r1-l1;i++) if(a[l1+i]!=b[l2+i]) return false; 12 return true; 13 } 14 if( judge(l1,(l1+r1)/2,l2,(l2+r2)/2) && judge((l1+r1)/2+1,r1,(l2+r2)/2+1,r2)) return true; 15 if( judge(l1,(l1+r1)/2,(l2+r2)/2+1,r2) && judge((l1+r1)/2+1,r1,l2,(l2+r2)/2)) return true; 16 return false; 17 } 18 19 int main(void) 20 { 21 scanf("%s %s",a+1,b+1); 22 int len=strlen(a+1); 23 if(judge(1,len,1,len)) printf("YES\n"); 24 else printf("NO\n"); 25 return 0; 26 }
7.24
补多校。
7.25
补多校。
晚上打了BC。