独木桥

怎么说呢

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. const int N = ;
  7. int n, l, pos[N], maxx = , minn = ;
  8.  
  9. int main(){
  10. scanf("%d%d", &l, &n);
  11. for(int i = ; i <= n; i++) scanf("%d", &pos[i]);
  12. sort(pos + , pos + n + );
  13. for(int i = ; i <= n; i++)
  14. if(pos[i] <= ( + l) / ) maxx = max(maxx, l - pos[i] + ), minn = max(pos[i], minn);
  15. else maxx = max(maxx, pos[i]), minn = max(minn, l - pos[i] + );
  16. printf("%d %d", minn, maxx);
  17. return ;
  18. }

传纸条 & 方格取数

多维dp的应用

code传纸条

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<algorithm>
  6. #include<cmath>
  7. using namespace std;
  8.  
  9. const int N = ;
  10. int n, m, a[N][N], dp[N][N][N][N];
  11.  
  12. inline int myMax(int u, int v, int x, int y){
  13. int ret = u;
  14. ret = max(ret, v);
  15. ret = max(ret, x);
  16. ret = max(ret, y);
  17. return ret;
  18. }
  19.  
  20. int main(){
  21. scanf("%d%d", &m, &n);
  22. for(int i = ; i <= m; i++)
  23. for(int j = ; j <= n; j++)
  24. scanf("%d", &a[i][j]);
  25. dp[][][][] = a[][];
  26. for(int i = ; i <= m; i++)
  27. for(int j = ; j <= n; j++)
  28. for(int k = ; k <= m; k++)
  29. for(int l = ; l <= n; l++){
  30. if(i == && j == ) continue;
  31. dp[i][j][k][l] = myMax(dp[i - ][j][k - ][l], dp[i][j - ][k - ][l],
  32. dp[i - ][j][k][l - ], dp[i][j - ][k][l - ])
  33. + a[i][j] + a[k][l];
  34. if(i == k && j == l)
  35. dp[i][j][k][l] -= a[i][j];
  36. }
  37. printf("%d", dp[m][n][m][n]);
  38. return ;
  39. }

code方格取数

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<algorithm>
  6. #include<cmath>
  7. using namespace std;
  8.  
  9. const int N = ;
  10. int n, a[N][N], dp[N][N][N][N];
  11.  
  12. inline int myMax(int u, int v, int x, int y){
  13. int ret = u;
  14. ret = max(ret, v);
  15. ret = max(ret, x);
  16. ret = max(ret, y);
  17. return ret;
  18. }
  19.  
  20. int main(){
  21. scanf("%d", &n);
  22. int x, y, w;
  23. while(scanf("%d%d%d", &x, &y, &w), x + y + w)
  24. a[x][y] = w;
  25. // dp[1][1][1][1] = a[1][1];
  26. for(int i = ; i <= n; i++)
  27. for(int j = ; j <= n; j++)
  28. for(int k = ; k <= n; k++)
  29. for(int l = ; l <= n; l++){
  30. // if(i == k && j == l && i != n && j != n) continue;
  31. dp[i][j][k][l] = myMax(dp[i - ][j][k - ][l], dp[i][j - ][k - ][l],
  32. dp[i - ][j][k][l - ], dp[i][j - ][k][l - ])
  33. + a[i][j] + a[k][l];
  34. if(i == k && j == l )
  35. dp[i][j][k][l] -= a[i][j];
  36. }
  37. printf("%d", dp[n][n][n][n]);
  38. return ;
  39. }

矩阵取数游戏

问题识破 + dp + 高精度

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<string>
  4. #include<cstring>
  5. using namespace std;
  6.  
  7. inline int read(){
  8. int i = , f = ; char ch = getchar();
  9. for(; (ch < '' || ch > '') && ch != '-'; ch = getchar());
  10. if(ch == '-') f = -, ch = getchar();
  11. for(; ch >= '' && ch <= ''; ch = getchar())
  12. i = (i << ) + (i << ) + (ch - '');
  13. return i * f;
  14. }
  15.  
  16. const int N = ;
  17. int n, m;
  18.  
  19. struct bign{
  20. int len, s[N];
  21. bign():len(){memset(s, , sizeof s);}
  22. inline void clear(){
  23. while(len > && s[len] == ) len--;
  24. }
  25. inline bign operator * (const bign &u) const{
  26. bign ret;
  27. ret.len = len + u.len + ;
  28. for(int i = ; i <= len; i++)
  29. for(int j = ; j <= u.len; j++)
  30. ret.s[i + j - ] += s[i] * u.s[j];
  31. for(int i = ; i <= ret.len; i++)
  32. if(ret.s[i] >= ){
  33. ret.s[i + ] += ret.s[i] / ;
  34. ret.s[i] %= ;
  35. }
  36. ret.clear();
  37. return ret;
  38. }
  39. inline void print(){
  40. clear();
  41. for(int i = len; i >= ; i--)
  42. putchar(s[i] + '');
  43. }
  44. inline bool operator > (const bign &u) const{
  45. if(len != u.len) return len > u.len;
  46. for(int i = len; i >= ; i--)
  47. if(s[i] != u.s[i]) return s[i] > u.s[i];
  48. return false;
  49. }
  50. inline bign operator + (const bign &u) const{
  51. bign ret;
  52. ret.len = ;
  53. int i, g;
  54. for(i = , g = ; g || i <= max(len, u.len); i++){
  55. ret.s[++ret.len] = g;
  56. if(i <= len) ret.s[ret.len] += s[i];
  57. if(i <= u.len) ret.s[ret.len] += u.s[i];
  58. g = ret.s[ret.len] / ;
  59. ret.s[ret.len] %= ;
  60. }
  61. ret.clear();
  62. return ret;
  63. }
  64. }pow2[N][N], f[N][N], big2, ans, ret, a[N], big0;
  65.  
  66. inline bign newBign(int x){
  67. bign ret;
  68. ret.len = ;
  69. while(x){
  70. ret.s[++ret.len] = x % ;
  71. x /= ;
  72. }
  73. if(ret.len == ) ret.len = ;
  74. return ret;
  75. }
  76.  
  77. inline void initPow(){
  78. for(int i = ; i <= m; i++)
  79. for(int j = ; j <= m; j++)
  80. pow2[i][j] = pow2[i][j - ] + pow2[i][j - ];
  81. }
  82.  
  83. inline bign max(bign a, bign b){
  84. return a > b ? a : b;
  85. }
  86.  
  87. int main(){
  88. n = read(), m = read();
  89. ans = big0 = newBign(); big2 = newBign();
  90. for(int t = ; t <= n; t++){
  91. ret = big0;
  92. for(int i = ; i <= m; i++) pow2[i][] = newBign(read());
  93. initPow();
  94. for(int i = ; i <= m; i++)
  95. for(int j = ; j <= m; j++)
  96. f[i][j] = big0;
  97. for(int i = ; i <= m; i++)
  98. for(int j = ; i + j <= m; j++){
  99. if(i > ) f[i][j] = max(f[i - ][j] + pow2[i][i + j], f[i][j]);
  100. if(j > ) f[i][j] = max(f[i][j - ] + pow2[m - j + ][i + j], f[i][j]);
  101. }
  102. for(int i = ; i <= m; i++)
  103. ret = max(ret, f[i][m - i]);
  104. ans = ans + ret;
  105. }
  106. ans.print();
  107. return ;
  108. }

铺地毯

怎么说呢

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4.  
  5. const int N = 1e4 + ;
  6. int n, x1[N], y1[N], l[N], w[N], x, y, ans = -;
  7.  
  8. int main(){
  9. scanf("%d", &n);
  10. for(int i = ; i <= n; i++)
  11. scanf("%d%d%d%d", &x1[i], &y1[i], &l[i], &w[i]);
  12. scanf("%d%d", &x, &y);
  13. for(int i = n; i >= ; i--){
  14. if(x1[i] <= x && x <= x1[i] + l[i] - && y1[i] <= y && y <= y1[i] + w[i] - ){
  15. ans = i;
  16. break;
  17. }
  18. }
  19. printf("%d", ans);
  20. return ;
  21. }

noip刷题记录 20170823的更多相关文章

  1. noip刷题记录 20170818

    天天爱跑步 lca + 树上差分 #include<iostream> #include<cstdio> #include<cstdlib> #include< ...

  2. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  3. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  4. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  5. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  6. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  7. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  8. 刷题记录:[XNUCA2019Qualifier]EasyPHP

    目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

  9. 刷题记录:[DDCTF 2019]homebrew event loop

    目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...

随机推荐

  1. robotframework Selenium2+RFS自动化测试

    支持浏览器版本:Google Chrome (64位) 52.0.2743.82 正式版 52.0.2743.6_chrome_installer 64位 下载地址:http://www.online ...

  2. .vsdc和.svf用于formal verification tools

    svf:Setup Verification for Formality

  3. c编程:僵尸吃大脑

    第一行输入一个正整数n 以下每一行输入僵尸已经吃了的大脑数量a,和需要生存必需要吃的大脑数量b.总共n行. 例子输入 3 4 5 3 3 4 3 例子输出 NO BRAINS MMM BRAINS M ...

  4. amazeui学习笔记--css(常用组件5)--评论列表Comment

    amazeui学习笔记--css(常用组件5)--评论列表Comment 一.总结 1.am-comment:使用am-comment来声明评论对象,这个是放在article里面的,虽然article ...

  5. iOS_05_变量的内存分析、Scanf函数

    一.变量的内存分析 1.字节和地址 * 为了更好地理解变量在内存中得存储细节,先来认识一下内存中得”字节“和”地址“. * 内存以字节为单位 * 不同类型占用的字节是不一样的,数据越大,所需的字节数九 ...

  6. 第一个Python程序(全面)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.Windows系统 1.编写Python程序方式之Sublime文本编辑器: 1>打开sublime,创建hello.p ...

  7. ZJOI2002昂贵的聘礼题解

    http://codevs.cn/problem/1324/ 题目大意 一个部落,你能够和社会地位等级的极差不大于M的全部人交易.你能够拿金币直接从一个人手里买东西,也能够从别人那里买到那个人想要的东 ...

  8. android 消息系统Handler、MessageQueue、Looper源代码学习

    android消息系统 总体框架如图所看到的 在安卓的消息系统中,每一个线程有一个Looper,Looper中有一个MessageQueue,Handler向这个队列中投递Message,Looper ...

  9. UVA 11178 - Morley's Theorem 向量

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  10. 用bootstrap做一个背景可轮转的登录界面

    用bootstrap做一个背景可轮转的登录界面 一.总结 一句话总结:用css3的动画的 @keyframes 规则,制作轮转图. 1.用bootstrap做一个背景可轮转的登录界面? a.动画部分用 ...