华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: smileandyxu
打印 上一主题 下一主题

2015 HSYIT代码暂存楼[0]

[复制链接]

1

主题

49

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
11#
 楼主| 发表于 2015-11-18 13:51:57 | 只看该作者
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #define MAXN 100
  5. using namespace std;
  6. typedef struct num {
  7.     int data[MAXN];
  8. };
  9. void input_num(num &a)
  10. {
  11.     string s;
  12.     cin >> s;
  13.     for (int i = 0; i != s.size(); ++i) {
  14.         a.data[i] = int(s[i]) - 48;
  15.     }
  16. }
  17. void output_num(num a)
  18. {
  19.     int i = MAXN;
  20.     while (a.data[i] == 0)
  21.         --i;
  22.     while (i >= 0)
  23.         cout << a.data[i];
  24. }
  25. bool comp_num(num a, num b) {
  26.     int i = MAXN;
  27.     int j = MAXN;
  28.     while (a.data[i] == 0)
  29.         --i;
  30.     while (b.data[j] == 0)
  31.         --j;
  32.     if (i < j)
  33.         return true;
  34.     else if (i > j)
  35.         return false;
  36.     else {
  37.         while (i >= 0) {
  38.             if (a.data[i] < b.data[i])
  39.                 return true;
  40.             else if (a.data[i] > b.data[i])
  41.                 return false;
  42.             else
  43.                 --i;
  44.         }
  45.         return true;
  46.     }
  47. }
  48. void plus_num(num &a, num b)
  49. {
  50.     int x = 0;
  51.     for (int i = 0; i != MAXN; ++i) {
  52.         a.data[i] += b.data[i];
  53.         a.data[i] += x;
  54.         x = a.data[i] / 10;
  55.         a.data[i] %= 10;
  56.     }
  57. }
  58. void minus_num(num &a, num b)
  59. {
  60.    
  61. }
  62. num x[10000];
  63. num tot;
  64. int n;
  65. int main()
  66. {
  67.     cin >> n;
  68.     for (int i = 0; i != n; ++i)
  69.         input_num(x[i]);
  70.     sort(x, x + n, comp_num);
  71.     for (int i = 0; i != n; ++i) {
  72.         for (int j = i + 1; j != n; ++j) {
  73.             num y;
  74.             for (int k = 0; k != MAXN; ++k)
  75.                 y.data[k] = x[j].data[k];
  76.             minus_num(y, x[i]);
  77.             plus_num(tot, y);
  78.             tot += ((x[j] - x[i]) * 2);
  79.         }
  80.     }
  81.     output(tot);
  82.     return 0;
  83. }
复制代码
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1607

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1607
12#
发表于 2015-11-18 17:03:37 | 只看该作者
stone[3]
  1. //#include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream cin("stone3.in");
  5. ofstream cout("stone3.out");
  6. int a[50002];
  7. int l, n, k;
  8. int i, j, t, p, b, e;
  9. int main()
  10. {
  11.     cin >> l >> n >> k;
  12.     for (i = 1; i <= n; ++i)
  13.     {
  14.         cin >> j;
  15.         a[i] = j - t;
  16.         t = j;
  17.     }
  18.     a[n+1] = l - t;
  19.     for (i = 1; i <= k; ++i)
  20.     {
  21.         t = 0;
  22.         for (j = 0; j <= n+1; ++j)
  23.             if ((a[j] != 0 && a[j] < t) || t == 0)
  24.             {
  25.                 t = a[j];
  26.                 p = j;
  27.             }
  28.         b = 0;
  29.         while (a[b] == 0)
  30.             ++b;
  31.         if (p == b)
  32.         {
  33.             b = p + 1;
  34.             while (a[b] == 0)
  35.                 ++b;
  36.             a[b] += a[p];
  37.         }
  38.         else if (p == n+1)
  39.         {
  40.             e = p - 1;
  41.             while (a[e] == 0)
  42.                 --e;
  43.             a[p] += a[e];
  44.         }
  45.         else
  46.         {
  47.             b = p + 1;
  48.             while (a[b] == 0)
  49.                 ++b;
  50.             e = p - 1;
  51.             while (a[e] == 0)
  52.                 --e;
  53.             if (a[b] <= a[e])
  54.                 a[b] += a[p];
  55.             else
  56.                 a[e] += a[p];
  57.         }
  58.         a[p] = 0;
  59.     }
  60.     t = 0;
  61.     for (j = 0; j <= n; ++j)
  62.         if (t == 0 || (a[j] != 0 && a[j] < t))
  63.             t = a[j];
  64.     cout << t;
  65.     return 0;
  66. }
复制代码
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1607

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1607
13#
发表于 2015-11-18 17:11:44 | 只看该作者
stone[4]
  1. //#include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream cin("stone3.in");
  5. ofstream cout("stone3.out");
  6. int a[50002];
  7. int l, n, k;
  8. int i, j, t, p, b, e;
  9. int main()
  10. {
  11.     cin >> l >> n >> k;
  12.     for (i = 1; i <= n; ++i)
  13.     {
  14.         cin >> j;
  15.         a[i] = j - t;
  16.         t = j;
  17.     }
  18.     a[n+1] = l - t;
  19.     for (i = 1; i <= k; ++i)
  20.     {
  21.         t = 0;
  22.         for (j = 0; j <= n+1; ++j)
  23.             if ((a[j] != 0 && a[j] < t) || t == 0)
  24.             {
  25.                 t = a[j];
  26.                 p = j;
  27.             }
  28.         b = 1;
  29.         while (!a[b])
  30.             ++b;
  31.         if (p == b)
  32.         {
  33.             b = p + 1;
  34.             while (!a[b])
  35.                 ++b;
  36.             a[b] += a[p];
  37.             a[p] = 0;
  38.         }
  39.         else if (p == n+1)
  40.         {
  41.             e = p - 1;
  42.             while (!a[e])
  43.                 --e;
  44.             a[p] += a[e];
  45.             a[e] = 0;
  46.         }
  47.         else
  48.         {
  49.             b = p + 1;
  50.             while (!a[b])
  51.                 ++b;
  52.             e = p - 1;
  53.             while (!a[e])
  54.                 --e;
  55.             if (a[b] <= a[e])
  56.             {
  57.                 a[b] += a[p];
  58.                 a[p] = 0;
  59.             }
  60.             else
  61.             {
  62.                 a[p] += a[e];
  63.                 a[e] = 0;
  64.             }
  65.         }
  66.     }
  67.     t = 0;
  68.     for (j = 0; j <= n; ++j)
  69.         if (t == 0 || (a[j] != 0 && a[j] < t))
  70.             t = a[j];
  71.     cout << t;
  72.     return 0;
  73. }
复制代码
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

1

主题

49

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
14#
 楼主| 发表于 2015-11-18 17:12:45 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int D[2001];
  4. int f[2001][501];
  5. int N, M;
  6. int main()
  7. {
  8.     cin >> N >> M;
  9.     for (int i = 1; i <= N; ++i)
  10.         cin >> D[i];
  11.     for (int i = 1; i <= N; ++i) {
  12.         for (int j = 1; j <= M; ++j) {
  13.             if (f[i - 1][j - 1] + D[i] > f[i][j])
  14.                 f[i][j] = f[i - 1][j - 1] + D[i];
  15.         }
  16.     }
  17.     cout << f[N][M];
  18.     return 0;
  19. }
复制代码
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1607

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1607
15#
发表于 2015-11-27 15:53:30 | 只看该作者
P1916
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. int i, j, k, n, l, t;
  5. int a[1000];
  6. int main()
  7. {
  8.     ci >> k >> n;
  9.     t = j = 1;
  10.     for (i = 0; i <= log2(n); ++i)
  11.     {
  12.         a[j-1] = t;
  13.         j *= 2;
  14.     }
  15.     cout << a[n];
  16.     return 0;
  17. }
复制代码
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1607

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1607
16#
发表于 2015-11-27 16:07:40 | 只看该作者
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. int i, j, k, n, l, t;
  5. int a[1000];
  6. int main()
  7. {
  8.     ci >> k >> n;
  9.     t = j = 1;
  10.     for (i = 0; i <= log2(n); ++i)
  11.     {
  12.         a[j-1] = t;
  13.         j *= 2;
  14.         t *= k;
  15.     }
  16.     for (i = 0; i <= n; ++i)
  17.     {
  18.         if (a[i])
  19.         {
  20.             ++i;
  21.             while (a[i])
  22.         }
  23.     }
  24.     cout << a[n];
  25.     return 0;
  26. }
复制代码
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1607

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1607
17#
发表于 2015-12-13 16:43:03 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int a[5][5];
  4. int x_now, x_next, y_now, y_next;
  5. void pmn(int i)
  6. {
  7.     int j, k;
  8.     if (i == 25)
  9.         for (j = 0; j < 5; ++j)
  10.         {
  11.             for (k = 0; k < 5; ++k)
  12.                 cout << a[j][k] << ' ';
  13.             cout << endl;
  14.         }
  15.     else
  16.     {
  17.         x_next = x_now + 1;
  18.         x_next = x_now + 1;
  19.         x_next = x_now + 2;
  20.         x_next = x_now + 2;
  21.         x_next = x_now - 1;
  22.         x_next = x_now - 1;
  23.         x_next = x_now - 2;
  24.         x_next = x_now - 2;
  25.     }
  26. }
  27. int main()
  28. {
  29.     pmn(0);
  30.     return 0;
  31. }
复制代码
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

1

主题

49

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
18#
 楼主| 发表于 2015-12-15 13:52:02 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int A[100];
  4. int F[100][100];
  5. int n;
  6. int main()
  7. {
  8.     cin >> n;
  9.     for (int i = 0; i != n; ++i)
  10.         cin >> A[i];
  11.     for (int i = 0; i != n - 2; ++i) {
  12.         F[i][i + 2] = A[i] * A[i + 1] * A[i + 2];
  13.     }
  14.     for (int i = 0; i != n - 2; ++i) {
  15.         for (int j = i + 2; j != n; ++j) {
  16.             for (int k = i + 1; k != j; ++k) {
  17.                 if (F[i][k] * k * F[k][j] < F[i][j])
  18.                     F[i][j] = F[i][k] * k * F[k][j];
  19.             }
  20.         }
  21.     }
  22.     cout << F[0][n - 1];
  23.     return 0;
  24. }
复制代码

回复 支持 反对

使用道具 举报

1

主题

49

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
19#
 楼主| 发表于 2015-12-15 15:04:24 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int A[100];
  4. int F[100][100];
  5. int n;
  6. int mysearch(int p, int q)
  7. {
  8.     if (q - p == 2) {
  9.         F[p][q] = A[p] * A[p + 1] * A[q];
  10.         return F[p][q];
  11.     }
  12.     else if (q - p > 2) {
  13.         for (int k = p + 1; k != q; ++k) {
  14.             int a = (F[p][k] > 0) ? F[p][k] : mysearch(p, k);
  15.             int b = (F[k][q] > 0) ? F[k][q] : mysearch(k, q);
  16.             if (a + b + (A[p] * A[k] * A[q]) < F[p][q])
  17.                 F[p][q] = a + b + (A[p] * A[k] * A[q]);
  18.         }
  19.         return F[p][q];
  20.     }
  21. }
  22. int main()
  23. {
  24.     cin >> n;
  25.     for (int i = 0; i != n; ++i)
  26.         cin >> A[i];
  27.     cout << mysearch(0, n - 1);
  28.     return 0;
  29. }
复制代码
回复 支持 反对

使用道具 举报

4

主题

68

帖子

1607

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1607
20#
发表于 2015-12-15 20:10:18 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int n, m, a[2000];
  4. int i, j, b[2000], c[2000];
  5. int main()
  6. {
  7.     cin >> n >> m;
  8.     for (i = 0; i < n; ++i)
  9.         cin >> a[i];
  10.     for (i = 0; i < n; ++i)
  11.     {
  12.         b
  13.     }
  14.     return 0;
  15. }
复制代码
这个人很懒,不想写签名。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-26 02:18 , Processed in 0.139158 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表