[关闭]
@baobaobear 2020-02-05T06:26:07.000000Z 字数 11525 阅读 183

Contest 2020

contest

A

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n,num[105],t,flag;
  5. for(int i=0;i<105;i++)num[i]=0;
  6. while(scanf("%d",&n)!=EOF)
  7. {
  8. for(int i=0;i<n;i++)
  9. {
  10. scanf("%d",&t);
  11. num[t]++;
  12. }
  13. flag=0;
  14. for(int i=0;i<105;i++)
  15. {
  16. while(num[i])
  17. {
  18. if(flag==1)printf(" %d",i);
  19. else
  20. {
  21. printf("%d",i);
  22. flag=1;
  23. }
  24. num[i]--;
  25. }
  26. }
  27. printf("\n");
  28. }
  29. }

B

  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <map>
  6. #include <set>
  7. #include <queue>
  8. #include <stack>
  9. #include <algorithm>
  10. #include <cstdlib>
  11. #include <cmath>
  12. #include <vector>
  13. #include <iomanip>
  14. #if __cplusplus >= 201103L
  15. #include <unordered_map>
  16. #include <unordered_set>
  17. #endif
  18. #define ls ro<<1
  19. #define fi first
  20. #define se second
  21. #define rs ro<<1|1
  22. #define ll long long
  23. #define pb push_back
  24. #define vi vector<int>
  25. #define lowbit(x) x&(-x)
  26. #define pii pair<int,int>
  27. #define lson ro<<1,l,mid
  28. #define umap unordered_map
  29. #define uset unordered_set
  30. #define rson ro<<1|1,mid+1,r
  31. #define mem(a,b) memset(a,b,sizeof(a))
  32. #define IOS ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);
  33. using namespace std;
  34. const int INF = 0x3f3f3f3f;
  35. int main() {
  36. #ifdef xiaofan
  37. freopen("in.txt","r",stdin);
  38. #endif
  39. int a[7]= {0,1,2,11,101,111,1001};
  40. int n,m;
  41. while(scanf("%d %d",&n,&m)!=EOF) {
  42. if(m<n){
  43. int f=m;
  44. m=n;
  45. n=f;
  46. }
  47. int f=0;
  48. for(int i=0; i<7; i++) {
  49. if(a[i]>=n&&a[i]<=m) {
  50. f=1;
  51. cout<<a[i]<<" ";
  52. }
  53. }
  54. if(!f)
  55. cout<<-1;
  56. cout<<endl;
  57. }
  58. #ifdef xiaofan
  59. cerr<<"Time elapsed: "<<1.0*clock()/CLOCKS_PER_SEC<<"s.\n";
  60. #endif
  61. return 0;
  62. }

C

  1. #include<stdio.h>
  2. #define Pai 3.141592653589
  3. double solution1(double k,double m)
  4. {
  5. double r=k/(2*Pai);
  6. return Pai*r*r*(m-2*r);
  7. }
  8. double solution2(double k,double m)
  9. {
  10. double r=m/(2*Pai+2);
  11. if(r>k/2)r=k/2;
  12. return Pai*r*r*k;
  13. }
  14. int main()
  15. {
  16. double a,b,ans1,ans2;
  17. while(1)
  18. {
  19. scanf("%lf%lf",&a,&b);
  20. if(a==0&&b==0)break;
  21. ans1=solution1(a,b);
  22. ans2=solution2(a,b);
  23. if(ans1>ans2)printf("%.3lf\n",ans1);
  24. else printf("%.3lf\n",ans2);
  25. }
  26. }

D

  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <map>
  6. #include <set>
  7. #include <queue>
  8. #include <stack>
  9. #include <algorithm>
  10. #include <cstdlib>
  11. #include <cmath>
  12. #include <vector>
  13. #include <iomanip>
  14. #if __cplusplus >= 201103L
  15. #include <unordered_map>
  16. #include <unordered_set>
  17. #endif
  18. #define ls ro<<1
  19. #define fi first
  20. #define se second
  21. #define rs ro<<1|1
  22. #define ll long long
  23. #define int long long
  24. #define pb push_back
  25. #define vi vector<int>
  26. #define lowbit(x) x&(-x)
  27. #define pii pair<int,int>
  28. #define lson ro<<1,l,mid
  29. #define umap unordered_map
  30. #define uset unordered_set
  31. #define rson ro<<1|1,mid+1,r
  32. #define mem(a,b) memset(a,b,sizeof(a))
  33. #define IOS ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);
  34. using namespace std;
  35. const int INF = 0x3f3f3f3f;
  36. const int N=2e5+10;
  37. int s[N],x[N],a[N];
  38. signed main() {
  39. IOS;
  40. #ifdef xiaofan
  41. freopen("in.txt","r",stdin);
  42. #endif
  43. int n;
  44. cin>>n;
  45. for(int i=1;i<=n;i++)
  46. cin>>a[i];
  47. for(int i=1;i<=n;i++){
  48. s[i]=s[i-1]+a[i];
  49. x[i]=x[i-1]^a[i];
  50. }
  51. int l=1,r=1;
  52. int ans=0;
  53. while(r<=n){
  54. while((s[r]-s[l-1])!=(x[r]^x[l-1]))
  55. l++;
  56. //cout<<l<<" "<<r<<endl;
  57. ans+=r-l+1;
  58. r++;
  59. }
  60. cout<<ans<<endl;
  61. #ifdef xiaofan
  62. cerr<<"Time elapsed: "<<1.0*clock()/CLOCKS_PER_SEC<<"s.\n";
  63. #endif
  64. return 0;
  65. }

E

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int cas=0,flag;
  5. long long mul,k,min,m,n,temp;
  6. while(scanf("%lld",&k)!=EOF)
  7. {
  8. printf("Case %d: ",++cas);
  9. temp=1;flag=0;
  10. if(k==1)
  11. {
  12. printf("Impossible\n");
  13. continue;
  14. }
  15. for(long long i=2;i<k;i++)
  16. {
  17. temp*=i;
  18. if(temp>=k)
  19. {
  20. min=i;
  21. break;
  22. }
  23. }
  24. if(temp==k)
  25. {
  26. printf("%lld 1\n",min);
  27. continue;
  28. }
  29. for(long long i=min;(i-1)*(i-1)<=k;i++)
  30. {
  31. mul=i;
  32. for(long long j=i-1;j>=1;j--)
  33. {
  34. mul*=j;
  35. if(mul>k)break;
  36. if(mul==k)
  37. {
  38. printf("%lld %lld\n",i,j-1);
  39. flag=1;
  40. break;
  41. }
  42. }
  43. if(flag)break;
  44. }
  45. if(!flag)printf("%lld %lld\n",k,k-1);
  46. }
  47. }

F

  1. #include <stdio.h>
  2. char down[12][12],up[12][12];
  3. bool check(int n)
  4. {
  5. for(int i=0;i<n;i++)
  6. {
  7. for(int j=0;j<n;j++)if(up[i][j]=='*')return false;
  8. }
  9. return true;
  10. }
  11. int main()
  12. {
  13. int x1,y1,x2,y2,n,m,end;
  14. while(1)
  15. {
  16. scanf("%d%d",&n,&m);
  17. if(!n&&!m)break;
  18. getchar();
  19. for(int i=0;i<n;i++)gets(up[i]);
  20. for(int i=0;i<m;i++)gets(down[i]);
  21. int flag=0;end=1;
  22. for(int i=0;i<m;i++)
  23. {
  24. for(int j=0;j<m;j++)
  25. {
  26. if(down[i][j]=='*')
  27. {
  28. x2=i;
  29. y2=j;
  30. flag=1;
  31. break;
  32. }
  33. }
  34. if(flag)break;
  35. }
  36. while(!check(n)&&end)
  37. {
  38. int flag=0;
  39. for(int i=0;i<n;i++)
  40. {
  41. for(int j=0;j<n;j++)
  42. {
  43. if(up[i][j]=='*')
  44. {
  45. x1=i;
  46. y1=j;
  47. flag=1;
  48. break;
  49. }
  50. }
  51. if(flag)break;
  52. }
  53. for(int i=0;i<m&&end;i++)
  54. {
  55. for(int j=0;j<m&&end;j++)
  56. {
  57. if(down[i][j]=='*')
  58. {
  59. if(up[x1-x2+i][y1-y2+j]=='*')up[x1-x2+i][y1-y2+j]='.';
  60. else
  61. {
  62. end=0;
  63. break;
  64. }
  65. }
  66. }
  67. }
  68. }
  69. if(end)printf("1\n");
  70. else printf("0\n");
  71. }
  72. }

G

  1. #include<stdio.h>
  2. int a[10005];
  3. int findtop(int x)
  4. {
  5. return x==a[x]?x:a[x]=findtop(a[x]);
  6. }
  7. int checktop(int x)
  8. {
  9. return x==a[x]?x:checktop(a[x]);
  10. }
  11. int main()
  12. {
  13. int n,m,x,y,t,sum,k1,k2,b[10];
  14. char ch[10];
  15. while(scanf("%d%d",&n,&m)!=EOF)
  16. {
  17. for(int i=0;i<=(n+1)*(n+1);i++)a[i]=-1;
  18. sum=0;k1=0;
  19. while(m--)
  20. {
  21. scanf("%s",ch);
  22. if(ch[0]=='O')
  23. {
  24. scanf("%d%d",&x,&y);
  25. t=x*n+y;
  26. if(a[t]!=-1)continue;
  27. a[t]=t;
  28. k1=0;
  29. if(x!=n-1)if(a[t+n]!=-1){b[k1]=checktop(t+n);k1++;}
  30. if(x!=0)if(a[t-n]!=-1){b[k1]=checktop(t-n);k1++;}
  31. if(y!=n-1)if(a[t+1]!=-1){b[k1]=checktop(t+1);k1++;}
  32. if(y!=0)if(a[t-1]!=-1){b[k1]=checktop(t-1);k1++;}
  33. int temp=k1;
  34. for(int i=0;i<temp;i++)
  35. {
  36. for(int j=i+1;j<temp;j++)
  37. {
  38. if(b[i]==b[j]&&b[i]!=-1)
  39. {
  40. k1--;
  41. b[j]=-1;
  42. }
  43. }
  44. }
  45. if(x!=n-1)if(a[t+n]!=-1&&a[findtop(t)]!=a[findtop(t+n)])a[findtop(t)]=a[findtop(t+n)];
  46. if(x!=0)if(a[t-n]!=-1&&a[findtop(t)]!=a[findtop(t-n)])a[findtop(t)]=a[findtop(t-n)];
  47. if(y!=n-1)if(a[t+1]!=-1&&a[findtop(t)]!=a[findtop(t+1)])a[findtop(t)]=a[findtop(t+1)];
  48. if(y!=0)if(a[t-1]!=-1&&a[findtop(t)]!=a[findtop(t-1)])a[findtop(t)]=a[findtop(t-1)];
  49. sum=sum+1-k1;
  50. }
  51. else if(ch[0]=='P')printf("%d\n",sum);
  52. }
  53. }
  54. }

H

  1. #include<stdio.h>
  2. int dfs(int a,int b)
  3. {
  4. if(a>b)
  5. {
  6. int temp=a;
  7. a=b;
  8. b=temp;
  9. }
  10. if(b%a==0)return 1;
  11. else
  12. {
  13. if(dfs(b%a,a)==1&&b-a<a)return 0;
  14. else return 1;
  15. }
  16. }
  17. int main()
  18. {
  19. int a,b;
  20. while(1)
  21. {
  22. scanf("%d%d",&a,&b);
  23. if(a==0&&b==0)break;
  24. if(dfs(a,b)==1)printf("Captain\n");
  25. else printf("Big Pang Pang\n");
  26. }
  27. }

I

  1. #include <cstdio>
  2. #include <cctype>
  3. #include <algorithm>
  4. #define int long long
  5. using namespace std;
  6. struct Node {
  7. int x, y;
  8. } a[233];
  9. int n, num, ans = 0x7fffffffffffffff;
  10. int read() {
  11. int ret, f = 1;
  12. char ch;
  13. while(!isdigit(ch = getchar())) (ch == '-') && (f = -1);
  14. for(ret = ch - '0'; isdigit(ch = getchar()); ret *= 10, ret += ch - '0');
  15. return ret * f;
  16. }
  17. void print(int x) {
  18. if(x < 0) putchar('-'), x = -x;
  19. if(x > 9) print(x / 10);
  20. putchar(x % 10 + '0');
  21. }
  22. bool cmp(Node a, Node b) {
  23. return a.x < b.x;
  24. }
  25. signed main() {
  26. n = read(), num = read();
  27. for(int i = 1; i <= n; ++i) a[i].x = read(), a[i].y = read();
  28. std::sort(a + 1, a + n + 1, cmp);
  29. for(int i = 1; i <= n; ++i)
  30. for(int j = i + 1; j <= n; ++j) {
  31. int tmx = std::max(a[i].y, a[j].y),
  32. tmn = std::min(a[i].y, a[j].y);
  33. for(int k = 1; k <= n; ++k) {
  34. if(a[k].y > tmx || a[k].y < tmn) continue;
  35. int cnt = 0;
  36. for(int l = k; l <= n; ++l) {
  37. if(a[l].y > tmx || a[l].y < tmn) continue;
  38. if(++cnt >= num) ans = min(ans, (tmx - tmn) * (a[l].x - a[k].x));
  39. }
  40. }
  41. }
  42. print(ans);
  43. return 0;
  44. }

J

  1. #include <cstdio>
  2. #include <cctype>
  3. #include <algorithm>
  4. #define int long long
  5. int n, m;
  6. int a[100010], fs[100010];
  7. int l = 0, r = 200010, ans, cnt, res;
  8. int read() {
  9. int ret, f = 1;
  10. char ch;
  11. while(!isdigit(ch = getchar())) (ch == '-') && (f = -1);
  12. for(ret = ch - '0'; isdigit(ch = getchar()); ret *= 10, ret += ch - '0');
  13. return ret * f;
  14. }
  15. void print(int x) {
  16. if(x < 0) putchar('-'), x = -x;
  17. if(x > 9) print(x / 10);
  18. putchar(x % 10 + '0');
  19. }
  20. signed main() {
  21. n = read(), m = read();
  22. for(int i = 1; i <= n; ++i) a[i] = read();
  23. std::sort(a + 1, a + n + 1);
  24. for(int i = 1; i <= n; ++i) fs[i] = fs[i - 1] + a[i];
  25. while(l <= r) {
  26. int mid = (l + r) >> 1;
  27. cnt = res = 0;
  28. for(int i = 1; i <= n; ++i) {
  29. int pos = std::lower_bound(a + 1, a + n + 1, mid - a[i]) - a;
  30. res += fs[n] - fs[pos - 1] + a[i] * (n - pos + 1);
  31. cnt += n - pos + 1;
  32. }
  33. if(cnt >= m) ans = mid, l = mid + 1;
  34. else r = mid - 1;
  35. }
  36. print(res - ans * (cnt - m));
  37. return 0;
  38. }

K

  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <map>
  6. #include <set>
  7. #include <queue>
  8. #include <stack>
  9. #include <algorithm>
  10. #include <cstdlib>
  11. #include <cmath>
  12. #include <vector>
  13. #include <iomanip>
  14. #if __cplusplus >= 201103L
  15. #include <unordered_map>
  16. #include <unordered_set>
  17. #endif
  18. #define ls ro<<1
  19. #define fi first
  20. #define se second
  21. #define rs ro<<1|1
  22. #define ll long long
  23. #define pb push_back
  24. #define vi vector<int>
  25. #define lowbit(x) x&(-x)
  26. #define pii pair<int,int>
  27. #define lson ro<<1,l,mid
  28. #define umap unordered_map
  29. #define uset unordered_set
  30. #define rson ro<<1|1,mid+1,r
  31. #define mem(a,b) memset(a,b,sizeof(a))
  32. #define IOS ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);
  33. using namespace std;
  34. const int INF = 0x3f3f3f3f;
  35. const int mod=20130719;
  36. struct node {
  37. ll m,l;
  38. ll v[3][3];
  39. };
  40. node qmul(node a,node b) {
  41. node c;
  42. c.m=a.m,c.l=b.l;
  43. for(int i=1; i<=c.m; i++) {
  44. for(int j=1; j<=c.l; j++) {
  45. c.v[i][j]=0;
  46. for(int k=1; k<=a.l; k++) {
  47. c.v[i][j]=(c.v[i][j]+a.v[i][k]*b.v[k][j])%mod;
  48. }
  49. }
  50. }
  51. return c;
  52. }
  53. int get(ll n) {
  54. node a,b;
  55. a.l=2,a.m=1,a.v[1][1]=1,a.v[1][2]=0;
  56. b.l=2,b.m=2,b.v[1][1]=1,b.v[1][2]=1,b.v[2][1]=1,b.v[2][2]=0;
  57. while(n) {
  58. if(n&1)
  59. a=qmul(a,b);
  60. b=qmul(b,b);
  61. n/=2;
  62. }
  63. return a.v[1][2];
  64. }
  65. int main() {
  66. IOS;
  67. #ifdef xiaofan
  68. freopen("in.txt","r",stdin);
  69. #endif
  70. ll n;
  71. while(cin>>n)
  72. cout<<get(n)<<endl;
  73. #ifdef xiaofan
  74. cerr<<"Time elapsed: "<<1.0*clock()/CLOCKS_PER_SEC<<"s.\n";
  75. #endif
  76. return 0;
  77. }

L

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <string>
  5. #include <vector>
  6. #include <stack>
  7. #include <deque>
  8. #include <queue>
  9. #include <list>
  10. #include <limits>
  11. #include <set>
  12. #include <map>
  13. #include <functional>
  14. #include <inttypes.h>
  15. #include <stdint.h>
  16. #include <limits.h>
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include <math.h>
  21. #include <time.h>
  22. using namespace std;
  23. typedef long long ll;
  24. #ifndef PRId64
  25. #define PRId64 "lld"
  26. #endif
  27. #ifndef SCNd64
  28. #define SCNd64 "lld"
  29. #endif
  30. #define SC sc()
  31. #define PT pr()
  32. #define FORi(i,b,e) for (int i = (b), _ = (e); i < _; ++i)
  33. #define FORe(i,b,e) for (int i = (b), _ = (e); i <= _; ++i)
  34. #define FORre(i,b,e) for (int i = (b), _ = (e); i >= _; --i)
  35. static int sc_ret = 0;
  36. struct sc
  37. {
  38. sc& operator()(char& v) { v = sc_ret = getchar(); return *this; }
  39. sc& operator()(int& v) { sc_ret = read(v); return *this; }
  40. sc& operator()(unsigned& v) { sc_ret = scanf("%u", &v); return *this; }
  41. sc& operator()(double& v) { sc_ret = scanf("%lf", &v); return *this; }
  42. sc& operator()(char* v) { sc_ret = scanf("%s", v); return *this; }
  43. sc& operator()(string& v) { sc_ret = (bool)(cin >> v); return *this; }
  44. sc& operator()(ll& v) { sc_ret = read(v); return *this; }
  45. sc& ch(char& v) { sc_ret = scanf(" %c", &v); return *this; }
  46. sc& gets(char* v) { sc_ret = fgets(v, INT_MAX, stdin) != 0; v[strlen(v) - 1] = 0; return *this; }
  47. operator bool() const { return sc_ret > 0; }
  48. template <typename T>
  49. int read(T& v)
  50. {
  51. T x = 0, k = 1;
  52. int c = getchar();
  53. while (c < '0' || c > '9')
  54. {
  55. if (c == '-') k = -1;
  56. c = getchar();
  57. }
  58. while (c >= '0' && c <= '9') x = (x << 3) + (x << 1) + (c - 48), c = getchar();
  59. v = x * k;
  60. return c;
  61. }
  62. };
  63. struct pr
  64. {
  65. pr& ln() { putchar('\n'); return *this; }
  66. pr& operator()(char v) { putchar(v); return *this; }
  67. pr& operator()(int v) { write(v); return *this; }
  68. pr& operator()(double v) { printf("%.2f", v); return *this; }
  69. pr& operator()(const char* fmt, double v) { printf(fmt, v); return *this; }
  70. pr& operator()(const char* v) { printf("%s", v);return *this; }
  71. pr& operator()(string v) { printf("%s", v.c_str());return *this; }
  72. pr& operator()(ll v) { write(v);return *this; }
  73. template <typename T>
  74. void write(T v)
  75. {
  76. int cnt = 0; char c[23];
  77. if (v == 0)
  78. {
  79. putchar('0');
  80. return;
  81. }
  82. if (v < 0) putchar('-'), v = -v;
  83. while (v) c[++cnt] = (v % 10) + 48, v /= 10;
  84. while (cnt > 0) putchar(c[cnt--]);
  85. }
  86. template <typename T>
  87. void ln(T* arr, int size)
  88. {
  89. if (size > 0)
  90. {
  91. (*this)(arr[0]);
  92. for (int i = 1; i < size; ++i)
  93. {
  94. putchar(' ');
  95. (*this)(arr[i]);
  96. }
  97. putchar('\n');
  98. }
  99. }
  100. template <typename T>
  101. void muln(T* arr, int size)
  102. {
  103. for (int i = 0; i < size; ++i)
  104. {
  105. (*this)(arr[i]);
  106. putchar('\n');
  107. }
  108. }
  109. };
  110. const int inf = 0x3f3f3f3f;
  111. const int mod = 1000000007;
  112. const int maxn = 10000 + 10;
  113. const int maxm = 2000 + 10;
  114. int ans[maxn];
  115. typedef const char* CSTR;
  116. struct scmp
  117. {
  118. bool operator()(CSTR a, CSTR b) const
  119. {
  120. return strcmp(a, b) < 0;
  121. }
  122. };
  123. std::map<CSTR, int, scmp> sort_m;
  124. int same_pre(CSTR a, CSTR b)
  125. {
  126. for (CSTR p = a; ; ++p, ++b)
  127. {
  128. if (*p != *b)
  129. {
  130. return (int)(p - a);
  131. }
  132. }
  133. return 0;
  134. }
  135. void dfs(vector<int> edge[], char node[], char vis[], char st_node[], int cur, int last, int deep)
  136. {
  137. if (vis[cur])
  138. {
  139. return;
  140. }
  141. vis[cur] = 1;
  142. *st_node = node[cur];
  143. sort_m[st_node] = 0;
  144. std::map<CSTR, int, scmp>::iterator it = sort_m.find(st_node),
  145. it_pre = it, it_next = it;
  146. it_pre--; it_next++;
  147. int add = 0;
  148. if (it_pre != it && it_pre != sort_m.end())
  149. {
  150. add = same_pre(it_pre->first, it->first);
  151. }
  152. if (it_next != sort_m.end())
  153. {
  154. add = std::max(add, same_pre(it_next->first, it->first));
  155. }
  156. int sum = last + deep - add;
  157. ans[cur] = sum;
  158. for (vector<int>::iterator vit = edge[cur].begin(); vit!= edge[cur].end(); ++vit)
  159. {
  160. dfs(edge, node, vis, st_node - 1, *vit, sum, deep + 1);
  161. }
  162. sort_m.erase(it);
  163. vis[cur] = 0;
  164. }
  165. int main()
  166. {
  167. int t;
  168. SC(t);
  169. FORi(c, 0, t)
  170. {
  171. vector<int> edge[maxn];
  172. char node[maxn] = "";
  173. char vis[maxn] = "";
  174. char st_node[maxn * 2] = "";
  175. sort_m.clear();
  176. int n;
  177. SC(n);
  178. FORi(i, 1, n)
  179. {
  180. int x, y;
  181. SC(x)(y);
  182. edge[x-1].push_back(y-1);
  183. edge[y-1].push_back(x-1);
  184. }
  185. SC(node);
  186. dfs(edge, node, vis, st_node + maxn, 0, 0, 1);
  187. FORi(i, 0, n)
  188. {
  189. PT(ans[i]).ln();
  190. }
  191. }
  192. return 0;
  193. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注