C. Qualification Rounds
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Snark and Philip are preparing the problemset for the upcoming pre-qualification round for semi-quarter-finals. They have a bank of n problems, and they want to select any non-empty subset of it as a problemset.

k experienced teams are participating in the contest. Some of these teams already know some of the problems. To make the contest interesting for them, each of the teams should know at most half of the selected problems.

Determine if Snark and Philip can make an interesting problemset!

Input

The first line contains two integers n, k (1 ≤ n ≤ 105, 1 ≤ k ≤ 4) — the number of problems and the number of experienced teams.

Each of the next n lines contains k integers, each equal to 0 or 1. The j-th number in the i-th line is 1 if j-th team knows i-th problem and 0 otherwise.

Output

Print "YES" (quotes for clarity), if it is possible to make an interesting problemset, and "NO" otherwise.

You can print each character either upper- or lowercase ("YeS" and "yes" are valid when the answer is "YES").

Examples
Input
5 3
1 0 1
1 1 0
1 0 0
1 0 0
1 0 0
Output
NO
Input
3 2
1 0
1 1
0 1
Output
YES
Note

In the first example you can't make any interesting problemset, because the first team knows all problems.

In the second example you can choose the first and the third problems.

这题比赛时1a了, 当时还挺开心,觉得自己暴力写了个O(N)的代码。结果结束后看人家的ac代码,顿时感觉自己是个zz。

我在想思路的时候,已经用四位数(题目指出最多四个队伍,我们可以假设一直都有四个队伍,也是不影响的)来表示了,但是还是没想到用二进制。

最后只能一点一点的用if来判断。

附我的ac代码:

  1 #include <cstdio>
2 #include <cstring>
3 #include <iostream>
4 #include <string>
5 #include <algorithm>
6 #include <cmath>
7 using namespace std;
8 const int maxn = 100005;
9 int nu[maxn][6];
10 int cnt[22];
11 int main() {
12 ios::sync_with_stdio(false);
13 int n,k;
14 cin>>n>>k;
15 for(int i = 0; i < n; i++) {
16 for(int j = 0; j < k; j++) {
17 cin>>nu[i][j];
18 }
19 }
20 for(int i = 0; i < n; i++) {
21 if(nu[i][0] == 0 ) {
22 if(nu[i][1] == 0) {
23 if(nu[i][2] == 0) {
24 if(nu[i][3] == 0) {
25 cnt[16]++;
26 }
27 else {
28 cnt[1]++;
29 }
30 }
31 else {
32 if(nu[i][3] == 0) {
33 cnt[2]++;
34 }
35 else{
36 cnt[10]++;
37 }
38 }
39 }
40 else {
41 if(nu[i][2] == 0) {
42 if(nu[i][3] == 0) {
43 cnt[3]++;
44 }
45 else {
46 cnt[9]++;
47 }
48 }
49 else {
50 if(nu[i][3] == 0) {
51 cnt[8]++;
52 }
53 else{
54 cnt[14]++;
55 }
56 }
57 }
58 }
59 else {
60 if(nu[i][1] == 0) {
61 if(nu[i][2] == 0) {
62 if(nu[i][3] == 0) {
63 cnt[4]++;
64 }
65 else {
66 cnt[7]++;
67 }
68 }
69 else {
70 if(nu[i][3] == 0) {
71 cnt[6]++;
72 }
73 else{
74 cnt[13]++;
75 }
76 }
77 }
78 else {
79 if(nu[i][2] == 0) {
80 if(nu[i][3] == 0) {
81 cnt[5]++;
82 }
83 else {
84 cnt[12]++;
85 }
86 }
87 else {
88 if(nu[i][3] == 0) {
89 cnt[11]++;
90 }
91 else{
92 cnt[15]++;
93 }
94 }
95 }
96 }
97 }
98 if(cnt[16]) cout<<"YES"<<endl;
99 else if(cnt[1]) {
100 if(cnt[2]||cnt[3]||cnt[4]||cnt[5]||cnt[6]||cnt[8]||cnt[11])
101 cout<<"YES"<<endl;
102 else cout<<"NO"<<endl;
103 }
104 else if(cnt[2]) {
105 if(cnt[3]||cnt[4]||cnt[5]||cnt[7]||cnt[9]||cnt[12])
106 cout<<"YES"<<endl;
107 else cout<<"NO"<<endl;
108 }
109 else if(cnt[3]) {
110 if(cnt[4]||cnt[6]||cnt[7]||cnt[10]||cnt[13])
111 cout<<"YES"<<endl;
112 else cout<<"NO"<<endl;
113 }
114 else if(cnt[4]) {
115 if(cnt[8]||cnt[9]||cnt[10]||cnt[14])
116 cout<<"YES"<<endl;
117 else cout<<"NO"<<endl;
118 }
119 else if(cnt[5]) {
120 if(cnt[10])
121 cout<<"YES"<<endl;
122 else cout<<"NO"<<endl;
123 }
124 else if(cnt[6]) {
125 if(cnt[9])
126 cout<<"YES"<<endl;
127 else cout<<"NO"<<endl;
128 }
129 else if(cnt[7]) {
130 if(cnt[8])
131 cout<<"YES"<<endl;
132 else cout<<"NO"<<endl;
133 }
134 else cout<<"NO"<<endl;
135
136 return 0;
137 }

附别人的ac代码:

 1 #include<cstdio>
2 int n,k,a[17],b[5];
3 int main(){
4 scanf("%d%d",&n,&k);
5 while(n--){
6 for(int i=1;i<=k;i++)scanf("%d",&b[i]);
7 a[b[1]+b[2]*2+b[3]*4+b[4]*8]=1; //化为二进制
8 }
9 for(int i=0;i<=(1<<k);i++)
10 for(int j=i;j<=(1<<k);j++)
11 if(!(i&j)&&a[i]&&a[j]) //如果存在i和j四位都不同时为1 例:1010 0100
12 {puts("YES");return 0;}
13 puts("NO");
14 return 0;
15 }

codeforces 868C的更多相关文章

  1. F - Qualification Rounds CodeForces - 868C 二进制

    F - Qualification Rounds CodeForces - 868C 这个题目不会,上网查了一下,发现一个结论就是如果是可以的,那么两个肯定可以满足. 然后就用二进制来压一下这个状态就 ...

  2. Codeforces 868C Qualification Rounds - 位运算

    Snark and Philip are preparing the problemset for the upcoming pre-qualification round for semi-quar ...

  3. [Codeforces Round #438][Codeforces 868C. Qualification Rounds]

    题目链接:868C - Qualification Rounds 题目大意:有\(n\)个题目,\(k\)个人,每个人可能做过这\(n\)个题里的若干道,出题方要在这\(n\)个题目里选若干个出来作为 ...

  4. codeforces 868C - Qualification Rounds(构造)

    原题链接:http://codeforces.com/problemset/problem/868/C 题意:有k个队伍参加比赛,比赛有n个预选的题目,有些队伍对已经事先知道了一些题目.问能不能选出若 ...

  5. codeforces 868C Qualification Rounds

    Snark and Philip are preparing the problemset for the upcoming pre-qualification round for semi-quar ...

  6. 【Codeforces】868C. Qualification Rounds

    [题目]C. Qualification Rounds [题意]给定n个问题和K个人,给定每个人知道的问题列表,求能否找到一个非空问题集合,满足每个人知道的集合中问题数量都不超过集合总题数的一半.n& ...

  7. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  8. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  9. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

随机推荐

  1. eCATT使用前的配置

    如果想在SAP中使用eCATT,必须做一下相关的配置才行,下面简单介绍这几步:1.SM30,输入表T000,然后点击维护,或者是进入事物SCC4,进入对应的clint属性编辑视图下,将CATT and ...

  2. Nginx的简介和使用nginx实现请求转发

    一.什么是Nginx Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为H ...

  3. 前端知识(二)01-NPM包管理器-谷粒学院

    目录 一.简介 二.使用npm管理项目 1.项目初始化 2.修改npm镜像 3.npm install命令的使用 4.其它命令 一.简介 什么是NPM NPM全称Node Package Manage ...

  4. 相对论中的光速c不变,这么讲!你总能理解了吧!

    今天谈谈相对论的假设基础--光速不变,很多人都知道爱因斯坦的相对论,也知道相对论的理论基础是光速不变,即无论参考哪个参照系,光的速度都是不变的,这个很难得理解的问题.我之前看过别人的理解,也自己思考怎 ...

  5. Transformation-Based Error-Driven Learning and Natural Language Processing: A Case Study in Part-of-Speech Tagging

    http://delivery.acm.org/10.1145/220000/218367/p543-brill.pdf?ip=116.30.5.154&id=218367&acc=O ...

  6. Python程序中#-*-coding: UTF-8 -*-的作用

    1.通常我们在pycharm中写程序的时候会加上#-*coding: UTF-8 -*- 如: #!/usr/bin/env python3#-*-coding: UTF-8 -*-#Author x ...

  7. 最简单直接地理解Java软件设计原则之依赖倒置原则

    理论性知识 定义 依赖倒置原则,Dependence Inversion Principle (DIP) 高层模块不应该依赖低层模块.二者都应该依赖其抽象. 抽象不应该依赖细节,细节应该依赖抽象. 针 ...

  8. Language Guide (proto3) | proto3 语言指南(十二)定义服务

    Defining Services - 定义服务 如果要在RPC(Remote Procedure Call,远程过程调用)系统中使用消息类型,可以在.proto文件中定义RPC服务接口,协议缓冲区编 ...

  9. tp5项目部署Linux环境后无法访问解决

    一.编辑fastcgi.conf文件 vim /www/server/nginx/conf/fastcgi.conf 二.添加代码 fastcgi_param PHP_ADMIN_VALUE &quo ...

  10. scala中List、Array、ListBuffer、ArrayList、Set

    scala中List.Array.ListBuffer.ArrayList.Set 一.List 二.Array 三.LIstBuffer 四.ArrayBuffer 五.Set 一.List Lis ...