5777. 【NOIP2008模拟】小x玩游戏 
(File IO): input:game.in output:game.out

Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits  

Goto ProblemSet

Description

        今天,小x因为太无聊,就在玩游戏。这个游戏有两个队伍,然后他们在游戏里面打来打去。
       但小x遇到了难题。他不知道自己的队友是谁。他只知道总共有两个队伍,每队有n个人和很多组击杀情况。他想问你,现在他能否知道两个队伍分别有谁。你可以帮助小x吗?由于小x是个游戏狂魔,所以他玩了很多局游戏。

 

Input

       第一行有一个t,表示小y共玩了t局游戏。
        接下来有t组数据,每组数据第一行有一个n,m,表示每队有n个人,有m组击杀情况,接下来m行每行两个字符串s1,s2,表示s1杀了s2,其中s1,s2的长度均不超过10(数据保证两个字符串都由小写字母组成)。注意一个人可以被击杀多次、一个人可以被曾经杀死过的人给杀死。
 

Output

​总共有t行,每行一个“YES”或“NO”,YES表示符合题目条件,NO表示不符合。
 

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。
数据保证不会有矛盾的关系。
 
做法:数据保证不矛盾就很好写啦╭(╯^╰)╮,并查集啊dfs啊随便搞搞,然后字符串hash一下就好啦
 #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玩游戏的更多相关文章

  1. 2783: 【基础】小 X 玩游戏(game)

    2783: [基础]小 X 玩游戏(game) 时间限制: 1 Sec 内存限制: 64 MB 提交: 752 解决: 294 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 听 ...

  2. P5676 [GZOI2017]小z玩游戏【Tarjan】

    小z玩游戏 Tarjan算是板子题吧,但是要稍微做一些修改,建边需要多考虑,建立"虚点". 题目描述 小 z 很无聊. 小 z 要玩游戏. 小 z 有\(N\)个新游戏,第\(i\ ...

  3. P5676 [GZOI2017]小z玩游戏 Tarjan+优化建图

    题目描述 分析 一开始看到这道题,首先想到的就是建好边后跑一个Tarjan缩点,将siz大于1的节点统计一下,输出结果 Tarjan非常显然易得,关键就是怎么建边 比较好想的一种思路就是枚举每一个兴奋 ...

  4. 【题解】 [GZOI2017]小z玩游戏

    题目戳我 \(\text{Solution:}\) 考虑建图.操作可以看作对\(1\)进行的操作,于是有以下运行过程: \(1\to w[i]\to e[i]\to...\) 考虑倍数,一个数可以走到 ...

  5. SCUT - 131 - 小P玩游戏II - 贪心 - 平衡树

    https://scut.online/p/131 首先假如钦定了一群人去打怪兽,那么可以把主要的任务都丢给b最大的人去打,这样不会更差.然后考虑枚举这个b最大的人,其他人陪练.一开始就是ai+k*b ...

  6. 神奇的建图方式(Tarjan)——小z玩游戏

    原题来自与:洛谷 P5676(GZOI2017)  链接: https://www.luogu.com.cn/problem/P5676 题面: 题意比较明显,如果已经建好了边,那么跑个Tarjan ...

  7. J - 玩游戏

    小A和小B玩游戏,初始的时候小A给小B一组包含n个数的数组.他们按如下的规则进行: 每次小B得到一组数,他把这组数的和加到自己的分数里面(他的初始分数是0),然后他把这组数还给小A. 如果小A得到的这 ...

  8. JZOJ 5793. 【NOIP2008模拟】小S练跑步

    5793. [NOIP2008模拟]小S练跑步 (File IO): input:run.in output:run.out Time Limits: 2000 ms  Memory Limits:  ...

  9. JZOJ 5776. 【NOIP2008模拟】小x游世界树

    5776. [NOIP2008模拟]小x游世界树 (File IO): input:yggdrasil.in output:yggdrasil.out Time Limits: 1500 ms  Me ...

随机推荐

  1. (转)Xargs用法详解

    Xargs用法详解 原文:http://czmmiao.iteye.com/blog/1949225 简介之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以 ...

  2. MySQL复制机制原理

    背景介绍 复制,就是对数据的完整拷贝,说到为什么要复制,首先能想到的是怕数据意外丢失,使得用户蒙受损失. 当完成了数据复制之后,会发现它的优势不止这一点,假如一台机器宕机了,可以启用备份在另一台机器的 ...

  3. android 开发-ListView列表显示控件的实现

    列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据    具体的将被映射的字符串,图片,或者基本组件. 根据列表 ...

  4. C#中常用的字符串验证

    using System; using System.Text.RegularExpressions; namespace Util { public static class @string { # ...

  5. Android图表库XCL-Charts

    首先,这个是国人开发的,支持下必须顶!github项目地址:点击打开,由于项目的基本功能已经实现,所以项目作者也说以后基本不会在有更新了. 项目简介: Android图表库(XCL-Charts is ...

  6. mysql 批量修改 表字段/表/数据库 字符集和排序规则

    今天接到一个任务是需要把数据库的字符编码全部修改一下,写了以下修正用的SQL,修正顺序是   表字段 > 表 > 数据库. 表字段修复: #改变字段数据 SELECT TABLE_SCHE ...

  7. HttpURLConnection(http 1.1) 用法、状态码、状态描述

    最近研究了java的HttpURLConnection的用法, 这里简单的做一下记录: Java中可以使用HttpURLConnection来请求WEB资源. 1. URL请求的类别 分为二类,GET ...

  8. zabbix-2.2.2(Ubuntu 14.04 LTS/OpenLogic 7.2)

    平台: arm 类型: ARM 模板 软件包: apache-2.4.7 mariadb-5.5.50 mysql-5.5.52-0ubuntu0.14.04.1 php-5.4.16 php-5.5 ...

  9. @Valid的坑

    @Valid 只能用来验证 @RequestBody 标注的参数,并且要写在 @RequestBody 之前

  10. mysql服务器系统优化

    1.选择合适的IO调度 对于mysql的系统,如果是SSD,那么应该使用NOOP调度算法,如果是磁盘,就应该使用Deadline调度算法.默认是CFQ echo dealine > /sys/b ...