Solved:3

rank:405.................................

B. Harvest of Apples

知道了S(n,m) 可以o(1)的求S(n - 1, m),S(n + 1,m),S(n,m - 1),S(n,m + 1)  天秀莫队

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <iostream>
  4. using namespace std;
  5. typedef long long ll;
  6. const ll mod = 1e9 + ;
  7.  
  8. int blo = ;
  9. ll ans;
  10. ll f[];
  11. ll inv[];
  12. ll anss[];
  13.  
  14. ll pow_mod(ll x, ll y)
  15. {
  16. ll res = ;
  17. while(y)
  18. {
  19. if(y & ) res = res * x % mod;
  20. x = x * x % mod;
  21. y >>= ;
  22. }
  23. return res;
  24. }
  25.  
  26. void prework()
  27. {
  28. f[] = ; inv[] = ;
  29. for(int i = ; i <= ; i++) f[i] = f[i - ] * 1LL * i % mod;
  30. for(int i = ; i <= ; i++) inv[i] = pow_mod(f[i], mod - 2LL);
  31. }
  32.  
  33. struct node
  34. {
  35. int n, m, id;
  36. }E[];
  37.  
  38. bool cmp(node A, node B)
  39. {
  40. int a = (A.n - ) / blo;
  41. int b = (B.n - ) / blo;
  42. if(a == b) return A.m < B.m;
  43. else return a < b;
  44. }
  45.  
  46. int main()
  47. {
  48. ans = ;
  49. prework();
  50. int T;
  51. scanf("%d", &T);
  52. for(int i = ; i <= T; i++)
  53. {
  54. scanf("%d%d", &E[i].n, &E[i].m);
  55. E[i].id = i;
  56. }
  57. sort(E + , E + + T, cmp);
  58.  
  59. ll n = , m = ;
  60. for(int i = ; i <= T; i++)
  61. {
  62. while(n < E[i].n)
  63. {
  64. ans *= 2LL;
  65. ll tmp = f[n] * inv[m] % mod * inv[n - m] % mod;
  66. ans = (ans - tmp + mod) % mod;
  67. n++;
  68. }
  69. while(m > E[i].m)
  70. {
  71. ll tmp = f[n] * inv[m] % mod * inv[n - m] % mod;
  72. ans = (ans - tmp + mod) % mod;
  73. m--;
  74. }
  75. while(n > E[i].n)
  76. {
  77. ll tmp = f[n - ] * inv[m] % mod * inv[n - - m] % mod;
  78. ans += tmp;
  79. ans = ans * inv[] % mod;
  80. n--;
  81. }
  82. while(m < E[i].m)
  83. {
  84. ll tmp = f[n] * inv[m + ] % mod * inv[n - m - ] % mod;
  85. ans = (ans + tmp) % mod;
  86. m++;
  87. }
  88. anss[E[i].id] = ans;
  89. }
  90. for(int i = ; i <= T; i++) printf("%lld\n", anss[i]);
  91. return ;
  92. }

D. Nothing is Impossible

题意出锅 秒变签到题

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <string.h>
  5. using namespace std;
  6. typedef long long ll;
  7.  
  8. struct node
  9. {
  10. int a, b;
  11. }E[];
  12.  
  13. bool cmp(node A, node B)
  14. {
  15. return A.b < B.b;
  16. }
  17.  
  18. int main()
  19. {
  20. int T;
  21. scanf("%d", &T);
  22. while(T--)
  23. {
  24. int n, m;
  25. scanf("%d%d", &n, &m);
  26. for(int i = ; i <= n; i++) scanf("%d%d", &E[i].a, &E[i].b);
  27. sort(E + , E + + n, cmp);
  28.  
  29. ll tmp = ;
  30. int ans = n;
  31. for(int i = ; i <= n; i++)
  32. {
  33. if(tmp * (E[i].b + 1LL) <= m)
  34. {
  35. tmp *= (E[i].b + 1LL);
  36. }
  37. else
  38. {
  39. ans = i - ;
  40. break;
  41. }
  42. }
  43. printf("%d\n", ans);
  44. }
  45. return ;
  46. }

J. Let Sudoku Rotate

玄学剪纸 把一个矩阵翻转的话就考虑换一种方法遍历 转四次相当于转一圈 dfs回来的时候要恢复状态

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <cmath>
  5. #include <string.h>
  6. using namespace std;
  7.  
  8. int ans;
  9. int num[][];
  10. int tmp[][];
  11. int vis[];
  12.  
  13. int cal(char x)
  14. {
  15. if(x - '' >= && x - '' <= ) return x - '';
  16. else return + x - 'A';
  17. }
  18.  
  19. void rotate(int x, int y)
  20. {
  21. int ix = x * - ;
  22. int iy = y * - ;
  23. for(int i1 = ix, i2 = iy; i2 <= iy + ; i2++, i1++)
  24. for(int j1 = iy, j2 = ix + ; j2 >= ix; j1++, j2--)
  25. tmp[i1][j1] = num[j2][i2];
  26. for(int i = ix; i <= ix + ; i++)
  27. for(int j = iy; j <= iy + ; j++)
  28. num[i][j] = tmp[i][j];
  29. }
  30.  
  31. bool check(int x, int y)
  32. {
  33. int ix = x * - ;
  34. int iy = y * - ;
  35.  
  36. for(int i = ix; i <= ix + ; i++)
  37. {
  38. memset(vis, , sizeof(vis));
  39. for(int j = ; j <= y * ; j++)
  40. {
  41. if(vis[num[i][j]]) return false;
  42. vis[num[i][j]] = ;
  43. }
  44. }
  45. for(int j = iy; j <= iy + ; j++)
  46. {
  47. memset(vis, , sizeof(vis));
  48. for(int i = ; i <= x * ; i++)
  49. {
  50. if(vis[num[i][j]]) return false;
  51. vis[num[i][j]] = ;
  52. }
  53. }
  54. return true;
  55. }
  56.  
  57. void dfs(int x, int y, int st)
  58. {
  59. if(x == )
  60. {
  61. ans = min(ans, st);
  62. return;
  63. }
  64.  
  65. for(int i = ; i <= ; i++)
  66. {
  67. if(i != ) rotate(x, y);
  68. if(check(x, y))
  69. {
  70. if(y != ) dfs(x, y + , st + i);
  71. else dfs(x + , , st + i);
  72. }
  73. }
  74. rotate(x, y);
  75. }
  76.  
  77. int main()
  78. {
  79. int T;
  80. scanf("%d", &T);
  81. while(T--)
  82. {
  83. ans = ;
  84. for(int i = ; i <= ; i++)
  85. {
  86. char s[]; scanf("%s", s + );
  87. for(int j = ; j <= ; j++) num[i][j] = cal(s[j]);
  88. }
  89. dfs(, , );
  90. printf("%d\n", ans);
  91. }
  92. return ;
  93. }

K. Expression in Memories

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <string.h>
  5. using namespace std;
  6.  
  7. char s[];
  8. int vis[];
  9. int main()
  10. {
  11. int T;
  12. scanf("%d", &T);
  13. while(T--)
  14. {
  15. memset(vis, , sizeof(vis));
  16. scanf("%s", s);
  17. int len = strlen(s);
  18. bool f = true;
  19.  
  20. for(int i = ; i < len; i++)
  21. {
  22. if(s[i] == '+')
  23. {
  24. if(i == || i == len - ) f = false;
  25. if(i + < len && s[i + ] == '+') f = false;
  26. if(i + < len && s[i + ] == '*') f = false;
  27. }
  28. else if(s[i] == '*')
  29. {
  30. if(i == || i == len - ) f = false;
  31. if(i + < len && s[i + ] == '+') f = false;
  32. if(i + < len && s[i + ] == '*') f = false;
  33. }
  34. else if(s[i] - '' > && s[i] - '' <= ) vis[i] = ;
  35. else if(s[i] == '')
  36. {
  37. if(i - >= && vis[i - ] == ) vis[i] = ;
  38. else
  39. {
  40. if(i + < len && s[i + ] - '' >= && s[i + ] - '' <= ) f = false;
  41. else if(i + < len && s[i + ] == '?') s[i + ] = '+';
  42. }
  43. }
  44. else if(s[i] == '?')
  45. {
  46. if(i == || i + == len) s[i] = '', vis[i] = ;
  47. else if(i - >= && vis[i - ] == )
  48. {
  49. if(s[i - ] == '') s[i] = '+';
  50. else s[i] = '', vis[i] = ;
  51. }
  52. else
  53. {
  54. s[i] = '', vis[i] = ;
  55. }
  56. }
  57. }
  58. if(!f) puts("IMPOSSIBLE");
  59. else printf("%s\n", s);
  60. }
  61. return ;
  62. }

L. Graph Theory Homework

  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <cmath>
  5. using namespace std;
  6.  
  7. int q[];
  8. int main()
  9. {
  10. int T;
  11. scanf("%d", &T);
  12. while(T--)
  13. {
  14. int n;
  15. scanf("%d", &n);
  16.  
  17. for(int i = ; i <= n; i++) scanf("%d", &q[i]);
  18. int ans = sqrt(abs(q[n] - q[]));
  19. printf("%d\n", ans);
  20. }
  21. return ;
  22. }

HDU多校Round 4的更多相关文章

  1. HDU多校Round 8

    Solved:2 rank:141 D. Parentheses Matrix n,m有一个小于6的时候是一种构造方法 答案是n + (m - 2) / 2 (n > m) 都大于6的时候 可以 ...

  2. HDU多校Round 7

    Solved:2 rank:293 J. Sequense 不知道自己写的什么东西 以后整数分块直接用 n / (n / i)表示一个块内相同n / i的最大i #include <bits/s ...

  3. HDU多校Round 6

    Solved:2 rank:452 I. Werewolf 没有铁人 找铁狼 如果一个环中只有一条狼人边那个人就是铁狼 说铁狼是好人的人也是铁狼 #include <bits/stdc++.h& ...

  4. HDU多校Round 5

    Solved:3 rank:71 E. Everything Has Changed #include <bits/stdc++.h> using namespace std; const ...

  5. HDU多校Round 3

    Solved:4 rank:268 C. Dynamic Graph Matching  状压DP一下 #include <stdio.h> #include <algorithm& ...

  6. HDU多校Round 1

    Solved:5 rank:172 A.Maximum Multiple #include <stdio.h> #include <algorithm> #include &l ...

  7. hdu 5667 BestCoder Round #80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  8. hdu 5643 BestCoder Round #75

    King's Game  Accepts: 249  Submissions: 671  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6 ...

  9. hdu 5641 BestCoder Round #75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

随机推荐

  1. MySQL 中间层 Atlas MySQL

    Atlas MySQL 详细介绍 Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0. ...

  2. Android一些网站介绍

    1.开源镜像: Android SDK在线更新镜像服务器 中国科学院开源协会镜像站地址: IPV4/IPV6: http://mirrors.opencas.cn 端口:80 IPV4/IPV6: h ...

  3. (一)Java 入门教程

    Java 入门教程 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言. Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统 ...

  4. HDU 5000 2014 ACM/ICPC Asia Regional Anshan Online DP

    Clone Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other) Total Submiss ...

  5. 【Dairy】2016.10.23 观火&中彩记

    ...................... 就第一条可以! 观火10分钟,长郡附近老房子起火...

  6. [POI2012]FES-Festival

    https://www.zybuluo.com/ysner/note/1252538 题面 有一个数列\(\{a\}\).现给定多组限制,限制分成\(2\)类,第一类是\(a_x+1=a_y\),有\ ...

  7. 配置URL

  8. PHP面向对象技术(全面讲解)

    作者:高洛峰    来源:<PHPer>杂志 1.面向对象的概念      面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机 ...

  9. datatable-bootstrap 基本配置

    function doSearch() { if(dtable!=null){ dtable.fnClearTable(0); dtable.fnDraw(); // 重新加载数据 }else{ dt ...

  10. 398 Random Pick Index 随机数索引

    给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引. 您可以假设给定的数字一定存在于数组中.注意:数组大小可能非常大. 使用太多额外空间的解决方案将不会通过测试.示例:int[] num ...