【BZOJ1823】 [JSOI2010]满汉全席
Description
满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中。由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过专家认证的满汉全席,也是中国厨师最大的荣誉之一。 世界满汉全席协会是由能够料理满汉全席的专家厨师们所组成,而他们之间还细分为许多不同等级的厨师。为了招收新进的厨师进入世界满汉全席协会,将于近日举办满汉全席大赛,协会派遣许多会员当作评审员,为的就是要在參赛的厨师之中,找到满汉料理界的明日之星。 大会的规则如下:每位參赛的选手可以得到n 种材料,选手可以自由选择用满式或是汉式料理将材料当成菜肴。大会的评审制度是:共有m 位评审员分别把关。每一位评审员对于满汉全席有各自独特的見解,但基本见解是,要有兩样菜色作为满汉全席的标志。如某评审认为,如果没有汉式东坡肉跟满式的涮羊肉锅,就不能算是满汉全席。但避免过于有主見的审核,大会规定一个评审员除非是在认为必备的两样菜色都没有做出來的狀况下,才能淘汰一位选手,否则不能淘汰一位參赛者。换句话說,只要參赛者能在这兩种材料的做法中,其中一个符合评审的喜好即可通过该评审的审查。如材料有猪肉,羊肉和牛肉时,有四位评审员的喜好如下表: 评审一 评审二 评审三 评审四 满式牛肉 满式猪肉 汉式牛肉 汉式牛肉 汉式猪肉 满式羊肉 汉式猪肉 满式羊肉 如參赛者甲做出满式猪肉,满式羊肉和满式牛肉料理,他将无法满足评审三的要求,无法通过评审。而參赛者乙做出汉式猪肉,满式羊肉和满式牛肉料理,就可以满足所有评审的要求。 但大会后來发现,在这样的制度下如果材料选择跟派出的评审员没有特别安排好的话,所有的參赛者最多只能通过部分评审员的审查而不是全部,所以可能会发生没有人通过考核的情形。如有四个评审员喜好如下表时,则不論參赛者采取什么样的做法,都不可能通过所有评审的考核: 评审一 评审二 评审三 评审四 满式羊肉 满式猪肉 汉式羊肉 汉式羊肉 汉式猪肉 满式羊肉 汉式猪肉 满式猪肉 所以大会希望有人能写一个程序來判断,所选出的m 位评审,会不会发生 没有人能通过考核的窘境,以便协会组织合适的评审团。
Input
第一行包含一个数字 K,代表测试文件包含了K 组资料。每一组测试资料的第一行包含兩个数字n 跟m(n≤100,m≤1000),代表有n 种材料,m 位评审员。为方便起見,材料舍弃中文名称而给予编号,编号分别从1 到n。接下來的m 行,每行都代表对应的评审员所拥有的兩个喜好,每个喜好由一个英文字母跟一个数字代表,如m1 代表这个评审喜欢第1 个材料透过满式料理做出來的菜,而h2 代表这个评审员喜欢第2 个材料透过汉式料理做出來的菜。每个测试文件不会有超过50 组测试资料
Output
每笔测试资料输出一行,如果不会发生没有人能通过考核的窘境,输出GOOD;否则输出BAD(大写字母)。
Sample Input
3 4
m3 h1
m1 m2
h1 h3
h3 m2
2 4
h1 m2
m2 m1
h1 h2
m1 h2
Sample Output
BAD
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=10000; 6 struct ee{int to,next;}e[N]; 7 int dnf[2*N],stack[2*N],belong[2*N],head[2*N],low[2*N]; 8 int T,top,ind,cnt,scc,n,m; 9 bool s[2*N]; 10 int get(){ 11 int x; 12 char c=getchar(); 13 while (c!='m'&&c!='h') c=getchar(); 14 if (c=='m') scanf("%d",&x),x+=x; 15 else scanf("%d",&x),x+=x-1; 16 return x; 17 } 18 19 void insert(int u,int v){ 20 e[++cnt].to=v;e[cnt].next=head[u]; head[u]=cnt; 21 } 22 23 void tarjan(int u){ 24 dnf[u]=low[u]=++ind; 25 s[u]=1; stack[++top]=u; 26 for (int l=head[u];l;l=e[l].next){ 27 int v=e[l].to; 28 if (!dnf[v]) { 29 tarjan(v); 30 low[u]=min(low[v],low[u]); 31 } 32 else if (s[v]){ 33 low[u]=min(low[u],dnf[v]); 34 } 35 } 36 if (dnf[u]==low[u]){ 37 scc++; 38 while(stack[top]!=u){ 39 belong[stack[top]]=scc; 40 s[stack[top]]=0; 41 top--; 42 } 43 belong[stack[top]]=scc; 44 s[stack[top]]=0; 45 top--; 46 } 47 } 48 49 int main(){ 50 scanf("%d",&T); 51 while (T--){ 52 top=ind=cnt=scc=0; 53 scanf("%d%d",&n,&m); 54 for (int i=1;i<=2*n;i++) head[i]=dnf[i]=0; 55 int x,y,xp,yp; 56 for (int i=1;i<=m;i++){ 57 x=get();y=get(); 58 if (x%2==0)xp=x--; 59 else xp=x++; 60 if (y%2==0)yp=y--; 61 else yp=y++; 62 insert(xp,y); insert(yp,x);//xp,yp表示不做 63 } 64 bool flag=0; 65 for (int i=1;i<=2*n;i++) if (!dnf[i]) tarjan(i);//开始写成i<=2*2了,1wa 66 for (int i=1;i<=n;i++)if (belong[i*2]==belong[i*2-1]) 67 {printf("BAD\n");flag=1;break;} 68 if (!flag) printf("GOOD\n"); 69 } 70 }
转载于:https://www.cnblogs.com/wuminyan/p/5140571.html
【BZOJ1823】 [JSOI2010]满汉全席相关推荐
- Bzoj1823 [JSOI2010]满汉全席
Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1640 Solved: 798 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同 ...
- BZOJ1823:[JSOI2010]满汉全席(2-SAT)
Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而 ...
- BZOJ1823[JSOI2010]满汉全席——2-SAT+tarjan缩点
题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过 ...
- BZOJ1823:[JSOI2010]满汉全席——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1823 https://www.luogu.org/problemnew/show/P4171 题面 ...
- [JSOI2010] 满汉全席
题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过 ...
- [洛谷P4171][JSOI2010]满汉全席
题目大意:有$n$个点,每个点可以选或不选,有$m$组约束,形如$a,u,b,v$,表示$u=a,v=b$中至少要满足一个条件,问是否存在一组解,多组询问 题解:$2-SAT$,感觉是板子题呀,最后判 ...
- 【BZOJ】1823: [JSOI2010]满汉全席(2-sat)
题目 传送门:QWQ 分析 2-sat模板(然而辣鸡如我还是调了好久) 代码 //bzoj 1823 2-sat #include <bits/stdc++.h> using namesp ...
- P4171 [JSOI2010]满汉全席
简要的学了一下2-sat,然而不会输出方案. 就是个sb模板题啦 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define il ...
- java皮卡丘代码_用css以写代码形式画一个皮卡丘
html5 formData上传 针对app端 function uploadFile() { if ((document.getElementById("file").files ...
- 一句话题解(20170801~20170125)
8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...
最新文章
- wps电脑版_WPS的前前前前身,是一根绳子?懂点历史没坏处
- python图例重复显示_matplotlib中的legend()——用于显示图例
- 网页设计作业_Dreamweaver简单网页成品
- 11210怎么等于24_想要消耗100大卡热量,怎么做才最简单?
- Android笔记 apk的反编译 | 更新于2017/7/25
- 【BZOJ1079】【codevs2428】着色方案,DP
- 知网又火了!续订费近千万且连年上涨 中科院:不堪重负 停用
- 排序专题之C++中的sort函数调用
- mysql强制指定索引_mysql强制索引和禁止某个索引
- 广义表头尾链表存储结构_详解Redis五种数据结构的底层原理
- 科大讯飞携手华南理工,成立脑机接口公司,注册资本4000万
- FireMonkey TListView的用法一:ItemAppearance为动态外观DynamicAppearance
- 2017-9-13 NOIP模拟赛[xxy]
- 一键免费升级Windows 10
- 品味kettle--(一)用eclipse 搭建源码
- auto.js朋友圈克隆 截图 上传数据
- 程序员外包接单网站记录
- V3S-Zero TF卡无法引导Linux启动问题
- canvas制作画板
- 技术大佬:还在用Excel,傻了吧!网友:每天朝九晚六飞起来!
热门文章
- 最近学习安卓中总结的一些知识点
- arcobjects java开发_ArcGIS Engine SDK for Java 最小示例学习
- X86-64和ARM64用户栈的结构 (1) ---背景介绍
- 漫画:“排序算法” 大总结
- (转)DPDK内存管理05 -- rte_mbuf
- SimpleFs文件系统初步五(文件的读写)
- 把块存放在页高速缓存中
- mysql ansi unicode_Ansi 与 Unicode 字符串类型的互相转换
- c++派生类构造顺序
- python爬虫:带你游览微博博主的前世今生