[关闭]
@baobaobear 2020-02-16T14:25:25.000000Z 字数 11948 阅读 207

Contest15 首A代码

contest


A hesorchen

  1. //https://blog.csdn.net/hesorchen
  2. // #include <bits/stdc++.h>
  3. #include<iostream>
  4. using namespace std;
  5. #define ll long long
  6. #define mem(a, b) memset(a, b, sizeof(a))
  7. #define lowbit(a) (a & (-a))
  8. #define mod 1000000007
  9. #define endl "\n"
  10. int main()
  11. {
  12. ll a, b, c;
  13. cin >> a >> b >> c;
  14. cout << c / min(a, b)<<endl;
  15. return 0;
  16. }

B hesorchen

  1. //https://blog.csdn.net/hesorchen
  2. // #include <bits/stdc++.h>
  3. #include <iostream>
  4. #include <algorithm>
  5. using namespace std;
  6. #define ll long long
  7. #define mem(a, b) memset(a, b, sizeof(a))
  8. #define lowbit(a) (a & (-a))
  9. #define mod 1000000007
  10. #define endl "\n"
  11. int main()
  12. {
  13. ll n, minn = 1000000009, a;
  14. cin >> n;
  15. ll ans = 0;
  16. while (n--)
  17. {
  18. cin >> a;
  19. if (a <= minn)
  20. ans++;
  21. minn = min(minn, a);
  22. }
  23. cout << ans << endl;
  24. return 0;
  25. }

C 541907190117

  1. /**************************************************************************************************
  2. O[OOO@@OO@@O@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O^...=@@@@@@@@@@@@@@O[.........=@@@@@@@@@@@@
  3. .....[OOOOOOOOOOOOO@@@@@@@@@@@OOOOOOOOO@@OOOOOOOOOOOOO[..../OOOO@@@@@@/\O/............OOOOOOOOOOOOO
  4. ^........,\OOOOOOOO@@@@@@@@@@OOOOOOOOOOO[[....................,[OOOO`.........`./O...=OOOOOOOOOOOOO
  5. O`....].........,\O@@@@@@@@@@OOOOOO/........................................,O@@@^.../OOOOOOOOOOOOO
  6. OO....O@@\`.........,\@@@@@@@OOO[..........................................=@@@@@`..,OOOOOOOOOOOOOO
  7. @@\...=@@@@@\...........,\@@@`............................................*`=@@@/...OOOOOOOOOOOOOOO
  8. @@@O...=@@@^,`..............................................................=/@@...=OOOOOOOOOOOOOOO
  9. @@@@\...O@OO`.................................................................\^...OOOOOOOOOOOOOOOO
  10. @@@@@\...\@`......................................................................OOOOOOOOOOOOOOOOO
  11. @@@@@@\.../......................................................................=OOOOOOOOOOOOOOOOO
  12. OOOOOOO.......................... ................................................\@@OOOOOOOOOOOOOO
  13. @@@@@@@@@`................................=^...................^...................=@@@@@@@@@@@@@@@
  14. @@@@@@@@@@...*.............................*...................*....................O@@@@@@@@@@@@@@
  15. OOOOOOOOO.....**............. .......................................................@@@@@@@@@@@@@@
  16. OOOOOOOOOOO`..****..........................*................................. ......=@@@@@@@@@@@@@
  17. OOOOOOOOOOOOOO.*****,............................. ...................................O@@@@@@@@@@@@
  18. @@@@@@@@@@@@O...***./..*..............................................................O@@@@@@@@@@@@
  19. @@@@@@@@@@@@..........,..........,`........................................*......*..*=@@@@@@@@@@@@
  20. @@@@@@@@@@@^.........*.,`......,@@@@@@@@@@@@@@@@@@@\]]]`...,]]@@@@@@@@@[\@@/@@@@@@O....O@@@@@@@@@@@
  21. @@@@@@@@@@O.,`.......=.........,@@@@O[..,/OOOOO\....@@@@@@@@@@`.OOOOOOOO.,....=@@@O....\@@@@@@@@@@@
  22. @@@@@@@@@@`=@^...................\@@[..=/[,\`..\.....@@`...@@@..,]....,/.......@@^[^...=@@@@@@@@@@@
  23. @@@@@@@@@@=@@^....................@@....[\`..][.....@@`.....\@\....,[.........,@@....=.=@@@@@@@@@@@
  24. @@@@@@@@@\@@O..........^..........,@^.............]@/........,@@`.............//....*...@@@@@@@@@@@
  25. @@@@@@@@@@@@^.........*,.`..........@@\]]]..,]]/@/[............,\@@\]]`..,]]/@/.......*.\O@@@@@@@@@
  26. @@@@@@@@@@@@.....**...=*,*..................................................*`........*.=@@@@@@@@@@
  27. @@@@@@@@@@@O......*...,**=^...........................................................*..O@@@@@@@@@
  28. OOOOOOOOOOO^......*...*`**,.. .........................................,.................OO@@@@@@@@
  29. OOOOOOOOOOO^..........*^***,.. .....................................**..................OO@@@@@@@@
  30. @@@@@@@OO@@..*.........^****\.........**\].......................]*.....................*OO@@@@@@@@
  31. @@@@@@OO@@^......*.....=\***=`.........*=^**,[]`.............``.**...**............/`...=@@@@@@@@@@
  32. @@@@@OO@@O^..,..**...*..=****o..........*=*********[,]...]o*.....*******.............../OO@@@@@@@@@
  33. @@@@OO@@OO\..=/..**...*..o`**,^*........*=***************,/**...*******..........*..../@@@@@@@@@@@@
  34. @@@OO@@@OO@^..O^.....@@@O/O],[\]]......../@@@\`*******]@@@@`*..***,//`]/@@@^....*...,/@@@@@@@@@@@@@
  35. @@OO@@@OO@O\...O.....,@@@@@@@@@@@@`...@@/@@@@@@@`.**,@@@@@@@@@@@O]/@@@@@@@@.........=@@@@@@@@@@@@@@
  36. **************************************************************************************************/
  37. #include<set>
  38. #include<map>
  39. #include<stack>
  40. #include<queue>
  41. #include<cmath>
  42. #include<cstdio>
  43. #include<cctype>
  44. #include<string>
  45. #include<vector>
  46. #include<climits>
  47. #include<cstring>
  48. #include<cstdlib>
  49. #include<iostream>
  50. #include<algorithm>
  51. #define endl '\n'
  52. #define max(a, b) (a > b ? a : b)
  53. #define min(a, b) (a < b ? a : b)
  54. #define mst(a) memset(a, 0, sizeof(a))
  55. #define IOS ios::sync_with_stdio(false)
  56. #define _test printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
  57. using namespace std;
  58. typedef long long ll;
  59. typedef pair<int, int> P;
  60. typedef pair<ll, ll> P2;
  61. const double pi = acos(-1.0);
  62. const double eps = 1e-7;
  63. const ll MOD = 1000000007LL;
  64. const int INF = 0x3f3f3f3f;
  65. const int _NAN = -0x3f3f3f3f;
  66. const double EULC = 0.5772156649015328;
  67. const int NIL = -1;
  68. template<typename T> void read(T &x){
  69. x = 0;char ch = getchar();ll f = 1;
  70. while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}
  71. while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
  72. }
  73. const int maxn = 1e5+10;
  74. ll arr[maxn] = {-9};
  75. int main(void) {
  76. for (int i = 1, t, t2; i<maxn; ++i) {
  77. t = i, t2 = i;
  78. while(t) {
  79. t2 += t%10;
  80. t /= 10;
  81. }
  82. if (t2 <= 100000 && !arr[t2])
  83. arr[t2] = i;
  84. }
  85. int t;
  86. scanf("%d", &t);
  87. while(t--) {
  88. int num;
  89. scanf("%d", &num);
  90. printf("%lld\n", arr[num]);
  91. }
  92. return 0;
  93. }

D lnkkerst

  1. #include <iostream>
  2. using namespace std;
  3. #define int long long
  4. int l, r, a, b;
  5. int gcd(int x, int y) {
  6. return !y ? x : gcd(y, x % y);
  7. }
  8. int lcm(int x, int y) {
  9. return x * y / gcd(x, y);
  10. }
  11. signed main() {
  12. cin >> l >> r >> a >> b;
  13. int t = lcm(a, b);
  14. int ans = r - l + 1;
  15. ans -= (r) / a - (l - 1) / a;
  16. ans -= (r) / b - (l - 1) / b;
  17. ans += (r) / t - (l - 1) / t;
  18. cout << ans;
  19. return 0;
  20. }

E hesorchen

  1. //https://blog.csdn.net/hesorchen
  2. // #include <bits/stdc++.h>
  3. #include <iostream>
  4. #include <algorithm>
  5. using namespace std;
  6. #define ll long long
  7. #define mem(a, b) memset(a, b, sizeof(a))
  8. #define lowbit(a) (a & (-a))
  9. #define mod 1000000007
  10. #define endl "\n"
  11. ll zuhe(ll n, ll m)
  12. {
  13. ll a = 1, b = 1;
  14. for (int i = n; i > n - m; i--)
  15. a *= i;
  16. for (int i = 1; i <= m; i++)
  17. b *= i;
  18. return a / b;
  19. }
  20. ll p[100] = {1, 5, 17, 49, 129, 321, 769, 1793, 4097, 9217, 20481, 45057, 98305, 212993, 458753, 983041, 2097153, 4456449, 9437185, 19919791, 40934240, 85635360, 162200853, 329314625, 434219937, 1001996852, 1649979779, 3139896570, 2514876211, 6265438914, 9491293469, 13540317595, 20548233969, 33446368715, 15048064581, 40189067607, 40811498685, 59399120025, 96275183197, 129030690842, 168010512548, 262738143190, -101495838273, 18277894373, 197031734518, 401760972831, 226207130411, 540955206077, 548189037620, 665107065036, 947089322773, 950871050259, 1188398367837, 1681173095220, 2091832350787, 2491879393861, 2921490344108};
  21. int main()
  22. {
  23. ll n;
  24. while (cin >> n)
  25. {
  26. n -= 1;
  27. int temp = n;
  28. ll t = 1;
  29. while (temp--)
  30. {
  31. t *= 2;
  32. }
  33. cout << 1 + (n - 1) * t << endl;
  34. }
  35. //1+(n-1)*2^n
  36. return 0;
  37. }

F Ruikertql

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a,b,m[50000],n[50000],k=0,begin,end=0,kind;
  5. while(scanf("%d%d",&a,&b)!=EOF)
  6. {
  7. k=0;
  8. printf("%d/%d = %d.",a,b,a/b);
  9. if(a%b)
  10. {
  11. a=a%b*10;
  12. int flag=0;
  13. while(flag==0)
  14. {
  15. k++;
  16. m[k]=a/b;
  17. n[k]=a%b;
  18. a-=m[k]*b;
  19. if(n[k]==0)
  20. {
  21. begin=k;end=k;
  22. kind=2;flag=1;
  23. break;
  24. }
  25. a*=10;
  26. for(int i=1;i<k;i++)
  27. {
  28. if(m[i]==m[k]&&n[i]==n[k])
  29. {
  30. begin=i;end=k-1;
  31. flag=1;kind=1;
  32. break;
  33. }
  34. }
  35. }
  36. }
  37. else
  38. {
  39. begin=end=0;
  40. kind=2;
  41. }
  42. if(kind==2)
  43. {
  44. for(int i=1;i<=end;i++)printf("%d",m[i]);
  45. printf("(0)\n");
  46. }
  47. else
  48. {
  49. for(int i=1;i<begin;i++)printf("%d",m[i]);
  50. printf("(");
  51. if(end<=50)for(int i=begin;i<=end;i++)printf("%d",m[i]);
  52. else
  53. {
  54. for(int i=begin;i<=50;i++)printf("%d",m[i]);
  55. printf("...");
  56. }
  57. printf(")\n");
  58. }
  59. printf(" %d = number of digits in repeating cycle\n\n",end-begin+1);
  60. }
  61. }

G lnkkerst

  1. #include <iostream>
  2. using namespace std;
  3. int n, m;
  4. int f[110][110], a[110][110];
  5. const int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
  6. int solve(int x, int y) {
  7. if(f[x][y] > 1) return f[x][y];
  8. for(int i = 0; i < 4; ++i) {
  9. int nx = x + dx[i], ny = y + dy[i];
  10. if(nx >= 1 && nx <= n && ny >= 1 && ny <= m && a[nx][ny] < a[x][y])
  11. f[x][y] = max(f[x][y], solve(nx, ny) + 1);
  12. }
  13. return f[x][y];
  14. }
  15. int main() {
  16. cin >> n >> m;
  17. for(int i = 1; i <= n; ++i)
  18. for(int j = 1; j <= m; ++j)
  19. f[i][j] = 1, cin >> a[i][j];
  20. int ans = -1;
  21. for(int i = 1; i <= n; ++i)
  22. for(int j = 1; j <= m; ++j)
  23. ans = max(solve(i, j), ans);
  24. cout << ans;
  25. return 0;
  26. }

H 1070856563

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. const double eps=1e-7;
  5. const int N=250005;
  6. const ll mod=1000000007;
  7. const int maxn = 1e5 + 5;
  8. ll t[maxn];
  9. ll a[maxn];
  10. void calJc(ll mod)
  11. {
  12. t[0] = t[1] = 1;
  13. for (ll i = 2; i < maxn; i++)
  14. t[i]=t[i - 1]*i%mod;
  15. }
  16. ll pow(ll a,ll n,ll p)
  17. {
  18. ll ans = 1;
  19. while(n)
  20. {
  21. if(n&1) ans=ans*a%p;
  22. a = a*a%p;
  23. n >>= 1;
  24. }
  25. return ans;
  26. }
  27. ll niYuan(ll a,ll b)
  28. {
  29. return pow(a,b - 2,b);
  30. }
  31. ll C(ll a, ll b, ll mod)
  32. {
  33. return t[a]*niYuan(t[b],mod)%mod*niYuan(t[a - b],mod)%mod;
  34. }
  35. int main()
  36. {
  37. calJc(mod);
  38. int x,y;
  39. scanf("%d%d",&x,&y);
  40. int mx=min(x,y);
  41. ll ans=0;
  42. while(mx>0)
  43. {
  44. int xx=x-mx,yy=y-mx;
  45. ans=(ans+C(mx+xx-1,mx-1,mod)%mod*C(mx+yy-1,mx-1,mod)%mod)%mod;
  46. mx--;
  47. }
  48. printf("%d\n",ans);
  49. return 0;
  50. }

I lnkkerst

  1. #include <cstdio>
  2. #include <cctype>
  3. #include <algorithm>
  4. #include <cstring>
  5. #define int long long
  6. using namespace std;
  7. const int MOD = (int)1e9 + 7;
  8. int n = 2;
  9. struct Mat {
  10. int m[10][10];
  11. int* operator[] (const int x) {
  12. return m[x];
  13. }
  14. Mat() {
  15. memset(m, 0, sizeof(m));
  16. }
  17. };
  18. int read() {
  19. int ret, f = 1;
  20. char ch;
  21. while(!isdigit(ch = getchar())) (ch == '-') && (f = -1);
  22. for(ret = ch - '0'; isdigit(ch = getchar()); ret *= 10, ret += ch - '0');
  23. return ret * f;
  24. }
  25. void print(int x) {
  26. if(x < 0) putchar('-'), x = -x;
  27. if(x > 9) print(x / 10);
  28. putchar(x % 10 + '0');
  29. }
  30. int mod(int x) {
  31. return (x % MOD + MOD) % MOD;
  32. }
  33. Mat mul(Mat a, Mat b) {
  34. Mat ret;
  35. for(int i = 1; i <= n; ++i)
  36. for(int j = 1; j <= n; ++j)
  37. for(int k = 1; k <= n; ++k)
  38. ret[i][j] = mod(ret[i][j] + mod(a[i][k]) * mod(b[k][j]));
  39. return ret;
  40. }
  41. signed main() {
  42. int f1 = read(), f2 = read(), x = read();
  43. if(x == 1) {
  44. print(mod(f1));
  45. return 0;
  46. }
  47. if(x == 2) {
  48. print(mod(f2));
  49. return 0;
  50. }
  51. Mat ans, base;
  52. ans[1][1] = f2, ans[1][2] = f1;
  53. base[1][1] = 1, base[2][1] = -1, base[1][2] = 1;
  54. x = max(x - 2, 0ll);
  55. while(x) {
  56. if(x & 1) ans = mul(ans, base);
  57. base = mul(base, base);
  58. x >>= 1;
  59. }
  60. print(mod(ans[1][1]));
  61. return 0;
  62. }

J lnkkerst

  1. #include <cstdio>
  2. #include <cstring>
  3. int x, t;
  4. char str[200010];
  5. void solve(int len, char s[]) {
  6. for(int i = 1; i <= len; ++i) s[len + i] = s[i];
  7. int i = 1, j = 2;
  8. while(i <= len && j <= len) {
  9. int k = 0;
  10. while(k < len && s[i + k] == s[j + k]) ++k;
  11. if(k == len) break;
  12. if(s[i + k] > s[j + k]) i += k + 1, (i == j) && ++i;
  13. else j += k + 1, (i == j) && ++j;
  14. }
  15. printf("%d\n", (i < j ? i : j) - 1);
  16. return ;
  17. }
  18. int main() {
  19. scanf("%d", &t);
  20. while(t--) {
  21. scanf("%d%s", &x, str + 1);
  22. solve(x, str);
  23. }
  24. return 0;
  25. }

K Ruikertql

  1. #include<stdio.h>
  2. #include<math.h>
  3. int a[85][85],b[85][85];
  4. bool dp[82][82][25445]; //一共有80*159*2=25440种取值,从-12720~12720
  5. int main()
  6. {
  7. int m,n,derta,max,min;
  8. scanf("%d%d",&m,&n);
  9. for(int i=0;i<m;i++)for(int j=0;j<n;j++)scanf("%d",&a[i][j]);
  10. for(int i=0;i<m;i++)for(int j=0;j<n;j++)scanf("%d",&b[i][j]);
  11. derta=b[0][0]-a[0][0];
  12. max=12720+fabs(derta);
  13. min=12720-fabs(derta);
  14. dp[0][0][derta+12720]=true;
  15. dp[0][0][-derta+12720]=true;
  16. for(int i=0;i<m;i++)
  17. {
  18. for(int j=0;j<n;j++)
  19. {
  20. for(int k=(min<80?0:min-80);k<=(max>25366?25440:max+80);k++)
  21. {
  22. if(j>0)if(dp[i][j-1][k-(b[i][j]-a[i][j])])dp[i][j][k]=true;
  23. if(i>0)if(dp[i-1][j][k-(b[i][j]-a[i][j])])dp[i][j][k]=true;
  24. if(j>0)if(dp[i][j-1][k-(a[i][j]-b[i][j])])dp[i][j][k]=true;
  25. if(i>0)if(dp[i-1][j][k-(a[i][j]-b[i][j])])dp[i][j][k]=true;
  26. if(dp[i][j][k]==true&&k<min)min=k;
  27. if(dp[i][j][k]==true&&k>max)max=k;
  28. }
  29. }
  30. }
  31. int ans=25441,temp;
  32. for(int i=0;i<25441;i++)
  33. {
  34. if(dp[m-1][n-1][i]==true)if(fabs(i-12720)<ans)ans=fabs(i-12720);
  35. if(i>12720&&i>ans)break;
  36. }
  37. printf("%d\n",ans);
  38. }

L 6109118071

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5. const int N = 100000 + 5;
  6. int a[N], b[N], rt[N * 20], ls[N * 20], rs[N * 20], sum[N * 20];
  7. int n, k, tot, sz, ql, qr, x, q;
  8. void Build(int& o, int l, int r){
  9. o = ++ tot;
  10. sum[o] = 0;
  11. if(l == r) return;
  12. int m = (l + r) >> 1;
  13. Build(ls[o], l, m);
  14. Build(rs[o], m + 1, r);
  15. }
  16. void update(int& o, int l, int r, int last, int p){
  17. o = ++ tot;
  18. ls[o] = ls[last];
  19. rs[o] = rs[last];
  20. sum[o] = sum[last] + 1;
  21. if(l == r) return;
  22. int m = (l + r) >> 1;
  23. if(p <= m) update(ls[o], l, m, ls[last], p);
  24. else update(rs[o], m + 1, r, rs[last], p);
  25. }
  26. int query(int ss, int tt, int l, int r, int k){
  27. if(l == r) return l;
  28. int m = (l + r) >> 1;
  29. int cnt = sum[ls[tt]] - sum[ls[ss]];
  30. if(k <= cnt) return query(ls[ss], ls[tt], l, m, k);
  31. else return query(rs[ss], rs[tt], m + 1, r, k - cnt);
  32. }
  33. void work(){
  34. scanf("%d%d%d", &ql, &qr, &x);
  35. int ans = query(rt[ql - 1], rt[qr], 1, sz, x);
  36. printf("%d\n", b[ans]);
  37. }
  38. int main(){
  39. scanf("%d%d", &n, &q);
  40. for(int i = 1; i <= n; i++) scanf("%d", a + i), b[i] = a[i];
  41. sort(b + 1, b + n + 1);
  42. sz = unique(b + 1, b + n + 1) - (b + 1);
  43. tot = 0;
  44. Build(rt[0],1, sz);
  45. //for(int i = 0; i <= 4 * n; i ++)printf("%d,rt = %d,ls = %d, rs = %d, sum = %d\n", i, rt[i], ls[i], rs[i], sum[i]);
  46. for(int i = 1; i <= n; i++)a[i] = lower_bound(b + 1, b + sz + 1, a[i]) - b;
  47. for(int i = 1; i <= n; i++)update(rt[i], 1, sz, rt[i - 1], a[i]);
  48. //for(int i = 0; i <= 5 * n; i++)printf("%d,rt = %d,ls = %d, rs = %d, sum = %d\n", i, rt[i], ls[i], rs[i], sum[i]);
  49. while(q--)work();
  50. return 0;
  51. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注