CodeForcs 1169B Good Triple

题目链接:http://codeforces.com/problemset/problem/1169/B

题目描述:给你m对不超过n的数字,找出一对x,y,满足在这m对数中至少有一个数字等于x或者y。

思路:假设第一对为(a,b),若x,y存在,则其中之一一定是a,b中的一个数,那么如果存在(c,d),使得与a,b都不相同,那么x,y中的另一个数必在c,d中,所以x,y可能是(a,c),(a,d),(b,c),(b,d),如果不存在(c,d),则x,y就是(a,b),要对m对数进行扫描,则只要满足以下五中情况任意之一即可:(a,b),(a,c),(a,d),(b,c),(b,d)。时间复杂度O(5m)。

#include <iostream>
#include <cstdio> using namespace std; const int maxn = 300005; pair<int, int> pa[maxn];
int n, m; bool check(int a, int b) {
for (int i = 0; i < m; i++) {
if (a != pa[i].first && a != pa[i].second && b != pa[i].first && b != pa[i].second) return false;
}
return true;
} int main() {
while (cin >> n >> m) {
if (m == 1) {
cin >> pa[0].first >> pa[0].second;
cout << "YES" << endl;
continue;
}
cin >> pa[0].first >> pa[0].second;
int a = pa[0].first, b = pa[0].second, c, d;
for (int i = 1; i < m; i++) {
scanf("%d%d", &pa[i].first, &pa[i].second);
if (a != pa[i].first && a != pa[i].second && b != pa[i].first && b != pa[i].second) {
c = pa[i].first;
d = pa[i].second;
}
}
bool flag = check(a, b) || check(a, c) || check(a, d) || check(b, c) || check(b, d);
if (flag)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}

CodeForcs 1169B Good Triple的更多相关文章

  1. 山东省第七届ACM省赛------Triple Nim

    Triple Nim Time Limit: 2000MS Memory limit: 65536K 题目描述 Alice and Bob are always playing all kinds o ...

  2. hdu 3908 Triple(组合计数、容斥原理)

    Triple Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Su ...

  3. hdu 5517 Triple(二维树状数组)

    Triple Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  4. Codeforces 1071 C - Triple Flips

    C - Triple Flips 思路: 小范围暴力 大范围递归构造 构造方法: solve(l, r) 表示使l 到 r 区间全变为0的方法 为了使反转次数小于等于n/3 + 12 我们只需要保证每 ...

  5. 【BZOJ3771】Triple(生成函数,多项式运算)

    [BZOJ3771]Triple(生成函数,多项式运算) 题面 有\(n\)个价值\(w\)不同的物品 可以任意选择\(1,2,3\)个组合在一起 输出能够组成的所有价值以及方案数. \(n,w< ...

  6. PAT 1009. Triple Inversions (35) 数状数组

    Given a list of N integers A1, A2, A3,...AN, there's a famous problem to count the number of inversi ...

  7. 【BZOJ 3771】 3771: Triple (FFT+容斥)

    3771: Triple Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 547  Solved: 307 Description 我们讲一个悲伤的故事. ...

  8. hihoCoder #1872 : Pythagorean triple

    此题是 2018 年 ICPC Asia Beijing Regional Contest 的 C 题. 题目大意 求斜边长度不超过 $n$($ n \le 10^9$) 的勾股数的数量.不计两直角边 ...

  9. bzoj 3771 Triple FFT 生成函数+容斥

    Triple Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 847  Solved: 482[Submit][Status][Discuss] Desc ...

随机推荐

  1. HelloCube:IJobForEach

    此示例演示了基于作业的ECS系统,该系统可旋转一对立方体. 它显示了什么? 此示例基于ForEach示例构建,并说明如何在多线程作业中执行相同的工作,而不是在主线程上执行相同的工作. 与前面的示例一样 ...

  2. ECS适合你吗?

    实体组件系统处于预览状态.不建议用于生产. 目前有两个很好的理由使用它. 你想试验 这是令人兴奋的新技术,并且大规模性能提升的承诺正在引诱.试试看.给我们您的反馈.我们很乐意在论坛上与您交谈. 您正在 ...

  3. Linux 之 awk文本分析工具

    AWK是一种处理文本文件的语言,是一个强大的文本分析工具.Linux环境中自带. awk调用方法 命令行 awk [-F field-separator] 'commands' input-file( ...

  4. 攻防世界CRYPTO新手练习

    0x01 base64 直接base64 Decode 得到flag cyberpeace{Welcome_to_new_World!} 0x02 Caesar key为12 的恺撒密码,解密德fla ...

  5. 什么是MVC模型

    经典的MVC模式 MVC是模型-视图-控制器的简称. M代表示模型,英文是Model.也就是指POJO(JavaBean) V表示视图,英文是View.也就是.jsp,同类的视图html,pdf,ex ...

  6. CSS3伪类与伪元素的区别及注意事项

    CSS中伪类与伪元素的概念是很容易混淆的 今天就来谈谈伪类与伪元素之间的区别 定义 首先先来看看伪类与伪元素的定义 w3c中对于它们是这么解释的 伪类:用于向某些选择器添加特殊的效果 伪元素:用于将特 ...

  7. 【转贴】linux 终端报Message from syslogd

    linux 终端报Message from syslogd xiao9873341760人评论8537人阅读2017-03-27 14:19:31 https://blog.51cto.com/xia ...

  8. *#【Python】【基础知识】【运算符】【Python的几类运算符】

    Python的运算符分为以下几类: 算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符 以及需要考虑的:运算符优先级 一.算术运算符: 需要注意的,上图是Python 2.0 ...

  9. 【LOJ】#3098. 「SNOI2019」纸牌

    LOJ#3098. 「SNOI2019」纸牌 显然选三个以上的连续牌可以把他们拆分成三个三张相等的 于是可以压\((j,k)\)为有\(j\)个连续两个的,有\(k\)个连续一个的 如果当前有\(i\ ...

  10. shell习题第14题:

    [题目要求] 需求,根据web服务器的访问日志,把一些请求高的ip给拒绝掉,并且每隔半小时把不再发起请求或者请求量很小的ip给解封 假设: 1. 一分钟内请求量高于100次的ip视为不正常的请求 2. ...