JZOJ 5777. 【NOIP2008模拟】小x玩游戏
5777. 【NOIP2008模拟】小x玩游戏
(File IO): input:game.in output:game.out
Description
但小x遇到了难题。他不知道自己的队友是谁。他只知道总共有两个队伍,每队有n个人和很多组击杀情况。他想问你,现在他能否知道两个队伍分别有谁。你可以帮助小x吗?由于小x是个游戏狂魔,所以他玩了很多局游戏。
Input
接下来有t组数据,每组数据第一行有一个n,m,表示每队有n个人,有m组击杀情况,接下来m行每行两个字符串s1,s2,表示s1杀了s2,其中s1,s2的长度均不超过10(数据保证两个字符串都由小写字母组成)。注意一个人可以被击杀多次、一个人可以被曾经杀死过的人给杀死。
Output
Sample Input
1
2 3
a b
c d
a d
Sample Output
YES 样例解释:
a,c是一队,b,d是一队。
Data Constraint
对于30%的数据,n<=1000,m<=10000;
对于100%的数据,t<=10,n<=2000,m<=100000。
数据保证不会有矛盾的关系。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#define MO 10000000009
#define mo 233437
#define LL long long
using namespace std;
LL t, n, m, ls[mo + ], tot, cnt, A, B;
struct arr
{
int to, next;
}e[mo];
string st;
bool b[mo + ];
LL h[mo + ];
LL H[]; void Add(int x, int y)
{
e[++cnt].to = y;
e[cnt].next = ls[x];
ls[x] = cnt;
} LL Hash(LL p)
{
int g = p % mo;
for (; h[g] != && h[g] != p; g = (g + ) % mo);
return g;
} void Init()
{
scanf("%d%d", &n, &m);
for (int i = ; i <= m; i++)
{
cin >> st;
LL u = , v = , t1, t2;
memset(H, , sizeof(H));
for (int i = ; i < st.size(); i++)
H[i + ] = ((H[i] + st[i] - 'a' + ) * ) % MO;
u = H[st.size()];
v = Hash(u);
h[v] = u;
t1 = v;
memset(H, , sizeof(H));
cin >> st;
for (int i = ; i < st.size(); i++)
H[i + ] = ((H[i] + st[i] - 'a' + ) * ) % MO;
u = H[st.size()];
v = Hash(u);
h[v] = u;
t2 = v;
Add(t1, t2);
Add(t2, t1);
}
} void Dfs(int x, int D)
{
if (D) A++;
else B++;
for (int i = ls[x]; i; i = e[i].next)
{
if (b[e[i].to]) continue;
b[e[i].to] = ;
Dfs(e[i].to, D ^ );
}
} void Work()
{
A = , B = ;
int j = ;
while (!h[j]) j++;
b[j] = ;
Dfs(j, );
if ((A & B & n) == n)
{
printf("YES\n");
return;
}
printf("NO\n");
return;
} int main()
{
freopen("game.in", "r", stdin);
freopen("game.out", "w", stdout);
scanf("%d", &t);
for (; t; t--)
{
memset(ls, , sizeof(ls));
memset(e, , sizeof(e));
memset(b, , sizeof(b));
memset(h, , sizeof(h));
cnt = ;
Init();
Work();
}
}
JZOJ 5777. 【NOIP2008模拟】小x玩游戏的更多相关文章
- 2783: 【基础】小 X 玩游戏(game)
2783: [基础]小 X 玩游戏(game) 时间限制: 1 Sec 内存限制: 64 MB 提交: 752 解决: 294 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 听 ...
- P5676 [GZOI2017]小z玩游戏【Tarjan】
小z玩游戏 Tarjan算是板子题吧,但是要稍微做一些修改,建边需要多考虑,建立"虚点". 题目描述 小 z 很无聊. 小 z 要玩游戏. 小 z 有\(N\)个新游戏,第\(i\ ...
- P5676 [GZOI2017]小z玩游戏 Tarjan+优化建图
题目描述 分析 一开始看到这道题,首先想到的就是建好边后跑一个Tarjan缩点,将siz大于1的节点统计一下,输出结果 Tarjan非常显然易得,关键就是怎么建边 比较好想的一种思路就是枚举每一个兴奋 ...
- 【题解】 [GZOI2017]小z玩游戏
题目戳我 \(\text{Solution:}\) 考虑建图.操作可以看作对\(1\)进行的操作,于是有以下运行过程: \(1\to w[i]\to e[i]\to...\) 考虑倍数,一个数可以走到 ...
- SCUT - 131 - 小P玩游戏II - 贪心 - 平衡树
https://scut.online/p/131 首先假如钦定了一群人去打怪兽,那么可以把主要的任务都丢给b最大的人去打,这样不会更差.然后考虑枚举这个b最大的人,其他人陪练.一开始就是ai+k*b ...
- 神奇的建图方式(Tarjan)——小z玩游戏
原题来自与:洛谷 P5676(GZOI2017) 链接: https://www.luogu.com.cn/problem/P5676 题面: 题意比较明显,如果已经建好了边,那么跑个Tarjan ...
- J - 玩游戏
小A和小B玩游戏,初始的时候小A给小B一组包含n个数的数组.他们按如下的规则进行: 每次小B得到一组数,他把这组数的和加到自己的分数里面(他的初始分数是0),然后他把这组数还给小A. 如果小A得到的这 ...
- JZOJ 5793. 【NOIP2008模拟】小S练跑步
5793. [NOIP2008模拟]小S练跑步 (File IO): input:run.in output:run.out Time Limits: 2000 ms Memory Limits: ...
- JZOJ 5776. 【NOIP2008模拟】小x游世界树
5776. [NOIP2008模拟]小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms Me ...
随机推荐
- Spring4.x、SpringMVC和DButils整合
tomcat 8.Spring 4.X.JDK1.8 需要jar包: 1)日志组件:log4j # debug < info < warn < error log4j.rootLog ...
- 3年,阅读量100万+, Github Star 15000+
这两天突然发现,三年前在博客园写的一篇文章阅读量超过百万了,对,还是技术文章.这个让我蛮惊讶的,当时刚开始写这篇文章的时候,一周的阅读量也才两三千,随着时间慢慢的过去,在搜索引擎的加持下竟然超过了百万 ...
- 性能测试学习第五天_loadrunner概述
1.为什么要进行性能测试(性能测试贯穿于软件生命周期) The failure of a mission-critical application can be costly. Assure perf ...
- Aspose.cell生成表格
public void ExportQueryPrj(HttpContext context) { //接受前端传递参数和数据 st ...
- Ini文件格式说明
http://www.cnblogs.com/CUIT-DX037/ 百度百科介绍:ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储 ...
- Sublime常用插件安装大全
作为前端人员,要找一个很顺手的编辑器真的不容易,我向大家推荐的一款实用前端开发神器,不但占地小,且插件很多,很强大. 下面我向大家介绍一下它的安装及插件的使用方法. 一.安装及安装emmet插件 首先 ...
- input和textarea修改placeholder颜色和字号
方式1因为每个浏览器的CSS选择器都有所差异,所以需要针对每个浏览器做单独的设定(可以在冒号前面写input和textarea).::-webkit-input-placeholder { /* We ...
- css动画-小球撞壁反弹
小球碰到一面壁之后一般都会反弹,反射角=入射角: 其实用css3来实现这个效果也非常简单. 首先,分解一下小球的运动:水平运动和垂直运动. 当小球往右下方向运动时,如果碰到了下面的壁,那么由于碰撞,小 ...
- 编译出freeswitch的java调用的 jar和so
假设freeswitch 源码路径为 /usr/local/src/freeswitch 1. cd /usr/local/src/freeswitch(源代码的根目录) 执行./configure, ...
- Notification高级技巧
观察Notification这个类,你会发现里面还有很多我们没有使用过的属性.先来看看sound这个属性吧,它可以在通知发出的时候播放一段音频,这样就能够更好地告知用户有通知到来.sound 这个属性 ...