Day6上 括号匹配专项
滑稽的题
T1
- #include<iostream>
- #include<cstring>
- #include<queue>
- #include<algorithm>
- #include<cstdio>
- #include<cmath>
- #include<ctime>
- using namespace std;
- int n;
- int a,b,x;
- int main()
- {
- // freopen("book.in","r",stdin);
- // freopen("bok.out","w",stdout);
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- {
- scanf("%d",&x);
- if(x==)
- {
- a++;
- continue;
- }
- if(x==)
- {
- if(a)
- {
- a--;
- b++;
- continue;
- }else
- {
- printf("No\n");
- return ;
- }
- }
- if(x==)
- {
- if(a&&b)
- {
- a--;
- b--;
- continue;
- }
- if(a>=&&(!b))
- {
- a-=;
- continue;
- }
- printf("No\n");
- return ;
- }
- }
- printf("YES\n");
- return ;
- }
50
奇怪我手动测得都对,而且超时也不太可能吧。? 待解决。
模拟白
T2
- #include<iostream>
- #include<cstring>
- #include<queue>
- #include<algorithm>
- #include<cstdio>
- #include<cmath>
- #include<ctime>
- using namespace std;
- const int N=1e6+;
- int n,m;
- int sum[N],a[N];
- bool is[N];
- int main()//又来模拟?
- {
- freopen("program.in","r",stdin);
- freopen("program.out","w",stdout);
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- scanf("%d",&a[i]);
- scanf("%d",&m);
- for(int i=,x;i<=m;i++)
- {
- scanf("%d",&x);
- is[x]=;
- }
- for(int i=;i<=n;i++)
- {
- if(is[i]) sum[a[i]]--;
- else
- sum[a[i]]++;
- if(sum[a[i]]<)
- {
- printf("NO\n");
- return ;
- }
- }
- for(int i=;i<=n;i++)
- {
- if(sum[i]<||(sum[i]%))
- {
- printf("NO\n");
- return ;
- }
- sum[i]/=;
- }
- for(int i=n;i>=;i--)
- if(!is[i])//要不是掉下这一步我就可能A了。
- {
- if(sum[a[i]])
- {
- is[i]=;
- sum[a[i]]--;
- }
- }
- for(int i=;i<=n;i++)
- {
- if(is[i])
- printf("-%d ",a[i]);
- else
- printf("+%d ",a[i]);
- }
- return ;
- }
括号翻转,站。
区间dp。
但我觉得,模拟就ok。
T3
- #include<iostream>
- #include<cstring>
- #include<queue>
- #include<algorithm>
- #include<cstdio>
- #include<cmath>
- #include<ctime>
- using namespace std;
- const int N=;
- int h[N],nex[N*],to[N*],w[N*],cnt;
- int n,m,q;
- int x,y,z;
- void add()
- {
- scanf("%d%d%d",&x,&y,&z);
- to[++cnt]=y,nex[cnt]=h[x],h[x]=cnt,w[cnt]=z;
- to[++cnt]=x,nex[cnt]=h[y],h[y]=cnt,w[cnt]=z;
- }
- int kid[N][];
- bool vis[N];
- int A,B,flag;
- void dfs(int x)
- {
- if(x==B)
- {
- bool is=;
- for(int i=;i<=;i++)
- {
- if(kid[i][]&&(!kid[i][]))
- is=;
- if(kid[i][]&&(!kid[i][]))
- is=;
- if(abs(kid[i][]-kid[i][])%)
- is=;
- }
- if(is) flag=;
- return ;
- }
- for(int i=h[x],v;i;i=nex[i])
- if(!vis[to[i]])
- {
- vis[to[i]]=;
- if(w[i]>)
- kid[w[i]][]++;
- else kid[-w[i]][]++;
- dfs(to[i]);
- vis[to[i]]=;
- if(w[i]>)
- kid[w[i]][]--;
- else kid[-w[i]][]--;
- }
- }
- int main()
- {
- freopen("maze.in","r",stdin);
- freopen("maze.out","w",stdout);
- scanf("%d%d",&n,&m);
- for(int i=;i<=m;i++)
- add();
- scanf("%d",&q);
- for(int i=;i<=q;i++)
- {
- scanf("%d%d",&A,&B);
- flag=;
- vis[A]=;
- dfs(A);
- if(flag) printf("YES\n");
- else printf("NO\n");
- }
- return ;
- }
first 25
预处理Floyed dp
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #include <cstdlib>
- using namespace std;
- int n,m;
- int g[][][],q[**][],t,x,y,z;
- int main()
- {
- scanf("%d%d",&n,&m);
- for(int i=;i<=m;i++)
- {
- scanf("%d%d%d",&x,&y,&z);
- if(!z)
- {
- if(z<) z=-z;
- else z+=;
- g[x][y][z]=g[y][x][z]=;
- }else
- {
- g[x][y][z]=g[y][x][z]=;
- t++;q[t][]=x,q[t][]=y,q[t][]=;
- t++;q[t][]=y,q[t][]=x,q[t][]=;
- }
- }
- for(int i=;i<=n;i++)
- {
- t++;
- q[t][]=i;
- q[t][]=i;
- q[t][]=;
- }
- for(int s=;s<=t;s++)
- {
- int x=q[s][];
- int y=q[s][];
- int kid=q[s][];
- if(!kid)
- for(int i=;i<=n;i++)
- if(g[i][x][kid-]==&&g[i][y]==)
- {
- g[i][y][]=;
- t++;
- q[t][]=i;
- q[t][]=y;
- q[t][]=;
- }
- else
- for(int i=;i<=;i++)
- {
- if(g[i][x]&&(!g[i][y]))
- {
- g[i][y]=;
- t++;
- q[t][]=i;
- q[t][]=y;
- q[t][]=;
- }
- if(g[y][i]&&(!g[x][i]))
- {
- g[x][i]=;
- t++;
- q[t][]=x;
- q[t][]=i;
- q[t][]=;
- }
- for(int j=;j<=;j++)
- if(g[y][i][j]&&(!g[x][i][j+]))
- {
- g[x][i][j+]=;
- t++;
- q[t][]=x;
- q[t][]=i;
- q[t][]=j+;
- }
- }
- }
- int q;
- scanf("%d",&q);
- while(q--)
- {
- scanf("%d%d",&x,&y);
- if(g[x][y][])
- printf("YES\n");
- else printf("NO\n");
- }
- return ;
- }
dp
Day6上 括号匹配专项的更多相关文章
- POJ C程序设计进阶 编程题#4:括号匹配问题
编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...
- 【栈思想、DP】NYOJ-15 括号匹配(二)
括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...
- NYOJ 题目15 括号匹配(二)(区间DP)
点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...
- POJ 2955 括号匹配,区间DP
题意:给你一些括号,问匹配规则成立的括号的个数. 思路:这题lrj的黑书上有,不过他求的是添加最少的括号数,是的这些括号的匹配全部成立. 我想了下,其实这两个问题是一样的,我们可以先求出括号要匹配的最 ...
- poj 2955 Brackets (区间dp 括号匹配)
Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...
- NYOJ15|括号匹配(二)|区间DP|Elena
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[&qu ...
- Dev-cpp怎样去掉括号匹配?
很多编C/C++的同学在用Dev-cpp的时候,就感觉到括号匹配很烦,又不知道哪里去掉. 所以,让ljn告诉你怎样去掉括号匹配. 1.打开Dev-cpp. 2.在菜单栏上,点击“工具[T]”,选择“编 ...
- 《LeetBook》leetcode题解(20):Valid Parentheses[E]——栈解决括号匹配问题
我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...
- python实现括号匹配
1.用一个栈[python中可以用List]就可以解决,时间和空间复杂度都是O(n) # -*- coding: utf8 -*- # 符号表 SYMBOLS = {'}': '{', ']': '[ ...
随机推荐
- 程序自动化需要一个Windows服务
前段时间,写了一个SPC to SQL数据传输的小功能,用户不太想用手执行或有可能忘记操作.解决这个问题,Insus.NET原本是使用windows的任务管理执行的,但觉得并不太理想,因此又得写一个W ...
- nodejs nodejs的操作
nodejs的操作 由于版本造成的命令不能正常安装,请参考五问题 一.概念: 参考百度百科: http://baike.baidu.com/link?url=aUrGlI8Sf20M_YGk8mh-- ...
- docker常用命令行集锦
对工作中用到的docker命令行进行一个汇总,方便以后的命令行查询,同时也为了加强记忆,会把工作中用到的命令,持续更新上 1.查看私有仓库都有哪些镜像 curl -X GET http://10.27 ...
- XtraBackup 备份与恢复实例讲解
前一篇文章我们讲到了PXB的原理以及安装方法,接下来将详细介绍 XtraBackup 备份和恢复的具体过程. xtrabackup 选项 xtrabackup 工具有许多参数,具体可去官网查询(xtr ...
- tinkphp中的自动验证
tinkphp是国内非常流行的一个开源框架,国内大小公司都在用的框架.对于初学的好多同学感觉不太好上手,其实并没没有大家想的那么复杂.自动验证功能是thinkphp提高的一种数据验证方法,分为动态和静 ...
- Exadata扩展
所谓Exadata扩展,也即向现有的Exadata环境中增加新的数据库服务器或存储服务器. 扩展原则 可以依循以下规则扩展Exadata: (1).可以将Exadata从某种固定配置扩展到另一种固定配 ...
- libxml2 安装及使用
https://gitlab.gnome.org/GNOME/libxml2/ ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz /configuremak ...
- 【SSO】单点登录系统
一.单点登录系统介绍 对于一个开发项目来说,每个项目都必不可少要有登录的这个功能.但是随着项目的变大,变大,再变大.系统可能会被拆分成多个小系统,咱们就拿支付宝和淘宝来说,咱们在淘宝上购物,然后就可以 ...
- java编程技巧和心得
1.在一个类中修改或调用另一个类的变量: 只需要将该变量用public static 这个修饰符修饰,再用类名直接调用即可 2.实现对只有下标不同变量的操作 解决思路:可以将这些变量放在一个数组里,在 ...
- Android 远程连接数据库。。。。。
本来是 6.0.6 换成mysql 5.1.14 驱动ok.... 将方法 放在 new Thread() 解决..... 只能在主线程绘制ui.... 解决办法...子Thread 获取数据后,将 ...