滑稽的题

T1

  1. #include<iostream>
  2. #include<cstring>
  3. #include<queue>
  4. #include<algorithm>
  5. #include<cstdio>
  6. #include<cmath>
  7. #include<ctime>
  8. using namespace std;
  9. int n;
  10. int a,b,x;
  11. int main()
  12. {
  13. // freopen("book.in","r",stdin);
  14. // freopen("bok.out","w",stdout);
  15. scanf("%d",&n);
  16. for(int i=;i<=n;i++)
  17. {
  18. scanf("%d",&x);
  19. if(x==)
  20. {
  21. a++;
  22. continue;
  23. }
  24. if(x==)
  25. {
  26. if(a)
  27. {
  28. a--;
  29. b++;
  30. continue;
  31. }else
  32. {
  33. printf("No\n");
  34. return ;
  35. }
  36. }
  37. if(x==)
  38. {
  39. if(a&&b)
  40. {
  41. a--;
  42. b--;
  43. continue;
  44. }
  45. if(a>=&&(!b))
  46. {
  47. a-=;
  48. continue;
  49. }
  50. printf("No\n");
  51. return ;
  52. }
  53. }
  54. printf("YES\n");
  55. return ;
  56. }

50

奇怪我手动测得都对,而且超时也不太可能吧。? 待解决。

模拟白

T2

  1. #include<iostream>
  2. #include<cstring>
  3. #include<queue>
  4. #include<algorithm>
  5. #include<cstdio>
  6. #include<cmath>
  7. #include<ctime>
  8. using namespace std;
  9. const int N=1e6+;
  10. int n,m;
  11. int sum[N],a[N];
  12. bool is[N];
  13. int main()//又来模拟?
  14. {
  15. freopen("program.in","r",stdin);
  16. freopen("program.out","w",stdout);
  17. scanf("%d",&n);
  18. for(int i=;i<=n;i++)
  19. scanf("%d",&a[i]);
  20. scanf("%d",&m);
  21. for(int i=,x;i<=m;i++)
  22. {
  23. scanf("%d",&x);
  24. is[x]=;
  25. }
  26. for(int i=;i<=n;i++)
  27. {
  28. if(is[i]) sum[a[i]]--;
  29. else
  30. sum[a[i]]++;
  31. if(sum[a[i]]<)
  32. {
  33. printf("NO\n");
  34. return ;
  35. }
  36. }
  37. for(int i=;i<=n;i++)
  38. {
  39. if(sum[i]<||(sum[i]%))
  40. {
  41. printf("NO\n");
  42. return ;
  43. }
  44. sum[i]/=;
  45. }
  46. for(int i=n;i>=;i--)
  47. if(!is[i])//要不是掉下这一步我就可能A了。
  48. {
  49. if(sum[a[i]])
  50. {
  51. is[i]=;
  52. sum[a[i]]--;
  53. }
  54. }
  55. for(int i=;i<=n;i++)
  56. {
  57. if(is[i])
  58. printf("-%d ",a[i]);
  59. else
  60. printf("+%d ",a[i]);
  61. }
  62. return ;
  63. }

括号翻转,站。

区间dp。

但我觉得,模拟就ok。

T3

  1. #include<iostream>
  2. #include<cstring>
  3. #include<queue>
  4. #include<algorithm>
  5. #include<cstdio>
  6. #include<cmath>
  7. #include<ctime>
  8. using namespace std;
  9. const int N=;
  10. int h[N],nex[N*],to[N*],w[N*],cnt;
  11. int n,m,q;
  12. int x,y,z;
  13. void add()
  14. {
  15. scanf("%d%d%d",&x,&y,&z);
  16. to[++cnt]=y,nex[cnt]=h[x],h[x]=cnt,w[cnt]=z;
  17. to[++cnt]=x,nex[cnt]=h[y],h[y]=cnt,w[cnt]=z;
  18. }
  19. int kid[N][];
  20. bool vis[N];
  21. int A,B,flag;
  22. void dfs(int x)
  23. {
  24. if(x==B)
  25. {
  26. bool is=;
  27. for(int i=;i<=;i++)
  28. {
  29. if(kid[i][]&&(!kid[i][]))
  30. is=;
  31. if(kid[i][]&&(!kid[i][]))
  32. is=;
  33. if(abs(kid[i][]-kid[i][])%)
  34. is=;
  35. }
  36. if(is) flag=;
  37. return ;
  38. }
  39. for(int i=h[x],v;i;i=nex[i])
  40. if(!vis[to[i]])
  41. {
  42. vis[to[i]]=;
  43. if(w[i]>)
  44. kid[w[i]][]++;
  45. else kid[-w[i]][]++;
  46. dfs(to[i]);
  47. vis[to[i]]=;
  48. if(w[i]>)
  49. kid[w[i]][]--;
  50. else kid[-w[i]][]--;
  51. }
  52. }
  53. int main()
  54. {
  55. freopen("maze.in","r",stdin);
  56. freopen("maze.out","w",stdout);
  57. scanf("%d%d",&n,&m);
  58. for(int i=;i<=m;i++)
  59. add();
  60. scanf("%d",&q);
  61. for(int i=;i<=q;i++)
  62. {
  63. scanf("%d%d",&A,&B);
  64. flag=;
  65. vis[A]=;
  66. dfs(A);
  67. if(flag) printf("YES\n");
  68. else printf("NO\n");
  69. }
  70. return ;
  71. }

first 25

预处理Floyed  dp

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <cstdlib>
  6. using namespace std;
  7. int n,m;
  8. int g[][][],q[**][],t,x,y,z;
  9. int main()
  10. {
  11. scanf("%d%d",&n,&m);
  12. for(int i=;i<=m;i++)
  13. {
  14. scanf("%d%d%d",&x,&y,&z);
  15. if(!z)
  16. {
  17. if(z<) z=-z;
  18. else z+=;
  19. g[x][y][z]=g[y][x][z]=;
  20. }else
  21. {
  22. g[x][y][z]=g[y][x][z]=;
  23. t++;q[t][]=x,q[t][]=y,q[t][]=;
  24. t++;q[t][]=y,q[t][]=x,q[t][]=;
  25. }
  26. }
  27. for(int i=;i<=n;i++)
  28. {
  29. t++;
  30. q[t][]=i;
  31. q[t][]=i;
  32. q[t][]=;
  33. }
  34. for(int s=;s<=t;s++)
  35. {
  36. int x=q[s][];
  37. int y=q[s][];
  38. int kid=q[s][];
  39. if(!kid)
  40. for(int i=;i<=n;i++)
  41. if(g[i][x][kid-]==&&g[i][y]==)
  42. {
  43. g[i][y][]=;
  44. t++;
  45. q[t][]=i;
  46. q[t][]=y;
  47. q[t][]=;
  48. }
  49. else
  50. for(int i=;i<=;i++)
  51. {
  52. if(g[i][x]&&(!g[i][y]))
  53. {
  54. g[i][y]=;
  55. t++;
  56. q[t][]=i;
  57. q[t][]=y;
  58. q[t][]=;
  59. }
  60. if(g[y][i]&&(!g[x][i]))
  61. {
  62. g[x][i]=;
  63. t++;
  64. q[t][]=x;
  65. q[t][]=i;
  66. q[t][]=;
  67. }
  68. for(int j=;j<=;j++)
  69. if(g[y][i][j]&&(!g[x][i][j+]))
  70. {
  71. g[x][i][j+]=;
  72. t++;
  73. q[t][]=x;
  74. q[t][]=i;
  75. q[t][]=j+;
  76. }
  77. }
  78. }
  79. int q;
  80. scanf("%d",&q);
  81. while(q--)
  82. {
  83. scanf("%d%d",&x,&y);
  84. if(g[x][y][])
  85. printf("YES\n");
  86. else printf("NO\n");
  87.  
  88. }
  89. return ;
  90. }

dp

Day6上 括号匹配专项的更多相关文章

  1. POJ C程序设计进阶 编程题#4:括号匹配问题

    编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...

  2. 【栈思想、DP】NYOJ-15 括号匹配(二)

    括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...

  3. NYOJ 题目15 括号匹配(二)(区间DP)

    点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...

  4. POJ 2955 括号匹配,区间DP

    题意:给你一些括号,问匹配规则成立的括号的个数. 思路:这题lrj的黑书上有,不过他求的是添加最少的括号数,是的这些括号的匹配全部成立. 我想了下,其实这两个问题是一样的,我们可以先求出括号要匹配的最 ...

  5. poj 2955 Brackets (区间dp 括号匹配)

    Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...

  6. NYOJ15|括号匹配(二)|区间DP|Elena

    括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 给你一个字符串,里面只包含"(",")","[&qu ...

  7. Dev-cpp怎样去掉括号匹配?

    很多编C/C++的同学在用Dev-cpp的时候,就感觉到括号匹配很烦,又不知道哪里去掉. 所以,让ljn告诉你怎样去掉括号匹配. 1.打开Dev-cpp. 2.在菜单栏上,点击“工具[T]”,选择“编 ...

  8. 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  9. python实现括号匹配

    1.用一个栈[python中可以用List]就可以解决,时间和空间复杂度都是O(n) # -*- coding: utf8 -*- # 符号表 SYMBOLS = {'}': '{', ']': '[ ...

随机推荐

  1. 程序自动化需要一个Windows服务

    前段时间,写了一个SPC to SQL数据传输的小功能,用户不太想用手执行或有可能忘记操作.解决这个问题,Insus.NET原本是使用windows的任务管理执行的,但觉得并不太理想,因此又得写一个W ...

  2. nodejs nodejs的操作

    nodejs的操作 由于版本造成的命令不能正常安装,请参考五问题 一.概念: 参考百度百科: http://baike.baidu.com/link?url=aUrGlI8Sf20M_YGk8mh-- ...

  3. docker常用命令行集锦

    对工作中用到的docker命令行进行一个汇总,方便以后的命令行查询,同时也为了加强记忆,会把工作中用到的命令,持续更新上 1.查看私有仓库都有哪些镜像 curl -X GET http://10.27 ...

  4. XtraBackup 备份与恢复实例讲解

    前一篇文章我们讲到了PXB的原理以及安装方法,接下来将详细介绍 XtraBackup 备份和恢复的具体过程. xtrabackup 选项 xtrabackup 工具有许多参数,具体可去官网查询(xtr ...

  5. tinkphp中的自动验证

    tinkphp是国内非常流行的一个开源框架,国内大小公司都在用的框架.对于初学的好多同学感觉不太好上手,其实并没没有大家想的那么复杂.自动验证功能是thinkphp提高的一种数据验证方法,分为动态和静 ...

  6. Exadata扩展

    所谓Exadata扩展,也即向现有的Exadata环境中增加新的数据库服务器或存储服务器. 扩展原则 可以依循以下规则扩展Exadata: (1).可以将Exadata从某种固定配置扩展到另一种固定配 ...

  7. libxml2 安装及使用

    https://gitlab.gnome.org/GNOME/libxml2/ ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz /configuremak ...

  8. 【SSO】单点登录系统

    一.单点登录系统介绍 对于一个开发项目来说,每个项目都必不可少要有登录的这个功能.但是随着项目的变大,变大,再变大.系统可能会被拆分成多个小系统,咱们就拿支付宝和淘宝来说,咱们在淘宝上购物,然后就可以 ...

  9. java编程技巧和心得

    1.在一个类中修改或调用另一个类的变量: 只需要将该变量用public static 这个修饰符修饰,再用类名直接调用即可 2.实现对只有下标不同变量的操作 解决思路:可以将这些变量放在一个数组里,在 ...

  10. Android 远程连接数据库。。。。。

    本来是 6.0.6  换成mysql 5.1.14 驱动ok.... 将方法 放在 new Thread() 解决..... 只能在主线程绘制ui.... 解决办法...子Thread 获取数据后,将 ...