Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
2017-10-17 16:40
549 查看
A题:一个三角形,一开始在C点,给边长a,b,c问上面走n-1次走多少步。
???为什么会写错???
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> //#include<assert.h> #include<math.h> //#include<iostream> using namespace std; int a,b,c,n; int main() { scanf("%d%d%d%d",&n,&a,&b,&c); int ans=0; if (n==1) printf("0\n"); else if (a<=b && a<=c) printf("%d\n",a*(n-1));//不要少了等于号!!!! else if (b<=c && b<=a) printf("%d\n",b*(n-1));//不要少了等于号!!!! else printf("%d\n",min(a,b)+c*(n-2)); return 0; }
B题:膜m意义下同个值超过K个即可。
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> //#include<assert.h> #include<math.h> //#include<iostream> using namespace std; int n,K,m; #define maxn 100011 int a[maxn],cnt[maxn]; int main() { scanf("%d%d%d",&n,&K,&m); for (int i=1;i<=n;i++) scanf("%d",&a[i]),cnt[a[i]%m]++; int ans=-1; for (int i=0;i<m;i++) if (cnt[i]>=K) ans=i; if (ans<0) printf("No\n"); else { puts("Yes"); int cc=0; for (int i=1;i<=n;i++) { if (a[i]%m==ans) cc++,printf("%d ",a[i]); if (cc==K) break; } } return 0; }
C题:设答案x,n-x>=9*9,检测n前面若干个数即可。
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<algorithm> 5 //#include<assert.h> 6 #include<math.h> 7 #include<iostream> 8 using namespace std; 9 10 int n; 11 #define maxn 200011 12 int a[maxn],lmax[maxn],rmax[maxn],lch[maxn],rch[maxn],sta[maxn],top; 13 int hus[33][maxn],hut[33]; 14 #define LL long long 15 int main() 16 { 17 scanf("%d",&n); 18 for (int i=1;i<=n;i++) scanf("%d",&a[i]); 19 top=0; 20 for (int i=1;i<=n;i++) 21 { 22 while (top && a[sta[top]]<=a[i]) top--; 23 if (!top) lmax[i]=1; 24 else lmax[i]=sta[top]+1; 25 sta[++top]=i; 26 } 27 top=0; 28 for (int i=n;i>=1;i--) 29 { 30 while (top && a[sta[top]]<a[i]) top--; 31 if (!top) rmax[i]=n; 32 else rmax[i]=sta[top]-1; 33 sta[++top]=i; 34 } 35 memset(hut,0,sizeof(hut)); 36 for (int i=1;i<=n;i++) 37 { 38 lch[i]=0; 39 for (int j=0;j<=30;j++) 40 { 41 if (a[i]&(1<<j)) hus[j][++hut[j]]=i; 42 else if (hut[j]) lch[i]=max(lch[i],hus[j][hut[j]]); 43 } 44 if (lch[i]<lmax[i]) lch[i]=lmax[i]-1; 45 } 46 memset(hut,0,sizeof(hut)); 47 for (int i=n;i>=1;i--) 48 { 49 rch[i]=n+1; 50 for (int j=0;j<=30;j++) 51 { 52 if (a[i]&(1<<j)) hus[j][++hut[j]]=i; 53 else if (hut[j]) rch[i]=min(rch[i],hus[j][hut[j]]); 54 } 55 if (rch[i]>rmax[i]) rch[i]=rmax[i]+1; 56 } 57 LL ans=0; 58 for (int i=1;i<=n;i++) 59 ans+=1ll*(rmax[i]-rch[i]+1)*(i-lmax[i]+1)+1ll*(rmax[i]-i+1)*(lch[i]-lmax[i]+1) 60 -1ll*(rmax[i]-rch[i]+1)*(lch[i]-lmax[i]+1); 61 // for (int i=1;i<=n;i++) cout<<i<<' '<<lmax[i]<<' '<<lch[i]<<' '<<rmax[i]<<' '<<rch[i]<<endl; 62 printf("%I64d\n",ans); 63 return 0; 64 }View Code
相关文章推荐
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) B. Divisiblity of Differences
- Codeforces Round #441 (Div. 1, by Moscow Team Olympiad)
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) A-D题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 1, by Moscow Team Olympiad) D. High Cry
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) A. Trip For Meal
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) ABCD题解
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) B. Divisiblity of Differences
- Codeforces Round #441 (Div. 1, by Moscow Team Olympiad) E. Delivery Club
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) D. Sorting the Coins【规律】
- ACM-ICPC (10/16) Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
- Codeforces Round #441 (Div. 2, by Moscow Team Olympiad) F. High Cry(思维 统计)