滑稽的题

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上 括号匹配专项的更多相关文章

  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. C#读取文本文件某一行

    某一时候,我们只会读取文本文件内某一行.怎样读?还是用for或foreach循环?其实操作起来,很简单,先看看文本文件,如果你也想用下面的文档来做测试,你可以在这个链接进行拷贝:<VB.NET提 ...

  2. 洛谷P1973 [NOI2011]Noi嘉年华(决策单调性)

    传送门 鉴于FlashHu大佬讲的这么好(而且我根本不会)我就不再讲一遍了->传送 //minamoto #include<iostream> #include<cstdio& ...

  3. java8 optional操作

    目标:测试option的过滤,链式操作: 代码: package test; import java.util.ArrayList; import java.util.Arrays; import j ...

  4. Django2.0以上版本的URL的正则匹配问题

    正则表达式形式的URL匹配问题: 1.导入re_path from django.urls import path,re_path 2.进行正则匹配 re_path('detail-(\d+).htm ...

  5. Django 想要单独执行文件

    Django  单独文件执行  文件  我是在项目根目录文件创建的. 配置文件: #!/usr/bin/env python import os import sys if __name__ == & ...

  6. P5019 铺设道路 (NOIP2018)

    传送门 NOIP2013原题 貌似官方数据都是一模一样的 以前写过竟然毫无印象? 考场上自己瞎JB推结论 显然,如果连续的两端区间可以左边区间减 k 次,右边区间也减 k 次 那么把两个区间合并起来一 ...

  7. dedecms中模板函数

    下面来解说下DEDECMS织梦CMS模板里面的函数说明 在文件include/inc_function.php里面 1 2 GetCurUrl() 获贴切前的脚本的URL 1 2 GetAlabNum ...

  8. 02Data

    1.数据从何而来 2.数据对象和属性类型 数据集合的类型 结构数据的重要特征 数据对象 属性 属性类型 数据属性的类型 离散 vs.连续属性 3.数据的(基本)统计描述 分布度量 代数度量 整体度量 ...

  9. 6.过滤器(Filter)

    ---恢复内容开始--- 1.过滤器简介: 过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象. 过滤器 功能: 分析请求,将请求发送给指定的资源或自己创建一个响应返回:在请求到达服务器端前处 ...

  10. 【ACM】N皇后问题

    N皇后问题 #include <iostream> #include <cmath> using namespace std; ; //判断当前位置的皇后加入是否成立 bool ...