spoj 147
dfs枚举真值
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <stack> using namespace std; char s[120];
bool ch[30];
bool b[30];
int cur[30];
int len;
int dfs(int m, int mm)
{
if(m == mm)
{
stack<bool> q;
for(int i = len-1; i >= 0; i--)
{
if(s[i] >= 'a' && s[i] <= 'z')
{
q.push(b[cur[s[i]-'a'+1]]);
}
else
{
if(s[i] == 'C')
{
bool x,y;
x = q.top(), q.pop();
y = q.top(), q.pop();
q.push(x && y);
}
else if(s[i] == 'D')
{
bool x,y;
x = q.top(), q.pop();
y = q.top(), q.pop();
q.push(x || y);
}
else if(s[i] == 'I')
{
bool x,y;
x = q.top(), q.pop();
y = q.top(), q.pop();
q.push((!x) || y);
}
else if(s[i] == 'E')
{
bool x,y;
x = q.top(), q.pop();
y = q.top(), q.pop();
q.push(((!x) || y) && ((!y) || x));
}
else
{
bool x;
x = q.top(), q.pop();
q.push(!x);
}
}
}
return q.top();
}
else
{
b[m] = true;
if(dfs(m+1, mm))
{
b[m] = false;
return dfs(m+1, mm);
}
}
return false;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
memset(ch, false, sizeof(ch));
memset(b, false, sizeof(b));
scanf("%s",s);
len = strlen(s);
for(int i = len-1; i >= 0; i--)
{
if(s[i] >= 'a' && s[i] <= 'z')
ch[s[i] - 'a'+1] = true;
}
int e = 1;
for(int i = 1; i <= 26; i++)
if(ch[i])
cur[i] = e++;
if(dfs(1, e))
puts("YES");
else
puts("NO");
}
return 0;
}
spoj 147的更多相关文章
- 【SPOJ 1182】 SORTBIT - Sorted bit squence (数位DP)
SORTBIT - Sorted bit squence no tags Let's consider the 32 bit representation of all integers i from ...
- SPOJ BALNUM - Balanced Numbers - [数位DP][状态压缩]
题目链接:http://www.spoj.com/problems/BALNUM/en/ Time limit: 0.123s Source limit: 50000B Memory limit: 1 ...
- BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MBSubmit: 5217 Solved: 1233 ...
- SPOJ DQUERY D-query(主席树)
题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...
- SPOJ GSS3 Can you answer these queries III[线段树]
SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...
- 【填坑向】spoj COT/bzoj2588 Count on a tree
这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...
- uva 147 Dollars
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- SPOJ bsubstr
题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...
- 【SPOJ 7258】Lexicographical Substring Search
http://www.spoj.com/problems/SUBLEX/ 好难啊. 建出后缀自动机,然后在后缀自动机的每个状态上记录通过这个状态能走到的不同子串的数量.该状态能走到的所有状态的f值的和 ...
随机推荐
- Linux基本服务命令
启动Httpd服务:service httpd start 停止Httpd服务:service httpd stop 重启Httpd服务:service httpd restart 关闭httpd所有 ...
- (转)文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别
这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_r ...
- Codevs 1380 没有上司的舞会
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就 ...
- C++ 双链表基本操作
上一篇博客主要总结了单向链表,这次再总结一下双向链表. 1.概念 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都 ...
- activiti系列导读
此用于管理activiti系列标签文章,activiti的分析是建立在目前最新的版本5.21之上. 官方指导手册链接:http://www.activiti.org/userguide/index.h ...
- Thinkphp整合最新Ueditor编辑器
说到最新的富文本编辑器的确不少(ckeditor.fkeditor.ueditor),这些富文本编辑器如果单独使用基本上很方便,不需要做额外的配置,只要把官方的插件下载下来放到一个web容器中,看看 ...
- How to change comment
AX2009 // USR Changed on 2013-07-10 at 12:57:46 by 7519 - Begin // USR Changed on 2013-07-10 at 12:5 ...
- ios开发之数据的持久化存储机制
IOS中数据的持久化保存这块内容,类似于Android中文件的几种常见的存储方式. 对于数据的持久化存储,ios中一般提供了4种不同的机制. 1.属性列表 2.对象归档 3.数据库存储(SQLite3 ...
- 帝国cms刷洗内容页提示.phome_ecms_news_data_' doesn't exist
帝国cms后台刷新提示.phome_ecms_news_data_' doesn't exist解决方法: 刷新所有信息内容页面时提示“Table '*.phome_ecms_article_data ...
- [WinForm]- 设置DataGridView单元格内根据不同值显示图片
首先设置要显示图片的列 DataGridViewImageColumn status = new DataGridViewImageColumn(); status.DisplayIndex = ; ...