codeforces 868C
2 seconds
256 megabytes
standard input
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!
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.
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").
5 3
1 0 1
1 1 0
1 0 0
1 0 0
1 0 0
NO
3 2
1 0
1 1
0 1
YES
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的更多相关文章
- F - Qualification Rounds CodeForces - 868C 二进制
F - Qualification Rounds CodeForces - 868C 这个题目不会,上网查了一下,发现一个结论就是如果是可以的,那么两个肯定可以满足. 然后就用二进制来压一下这个状态就 ...
- Codeforces 868C Qualification Rounds - 位运算
Snark and Philip are preparing the problemset for the upcoming pre-qualification round for semi-quar ...
- [Codeforces Round #438][Codeforces 868C. Qualification Rounds]
题目链接:868C - Qualification Rounds 题目大意:有\(n\)个题目,\(k\)个人,每个人可能做过这\(n\)个题里的若干道,出题方要在这\(n\)个题目里选若干个出来作为 ...
- codeforces 868C - Qualification Rounds(构造)
原题链接:http://codeforces.com/problemset/problem/868/C 题意:有k个队伍参加比赛,比赛有n个预选的题目,有些队伍对已经事先知道了一些题目.问能不能选出若 ...
- codeforces 868C Qualification Rounds
Snark and Philip are preparing the problemset for the upcoming pre-qualification round for semi-quar ...
- 【Codeforces】868C. Qualification Rounds
[题目]C. Qualification Rounds [题意]给定n个问题和K个人,给定每个人知道的问题列表,求能否找到一个非空问题集合,满足每个人知道的集合中问题数量都不超过集合总题数的一半.n& ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
随机推荐
- Eclipse中给jar包导入JavaDoc的方法
原文转载自:http://blog.csdn.net/mr_von/article/details/7740138 在使用Java语言开发的过程中,开发人员经常需要用到一些开源的工具包.在使用别人的j ...
- 命令模式与go-redis command设计
目录 一.什么是命令(Command)模式 二.go-redis command相关代码 三.总结 一.什么是命令(Command)模式 命令模式是行为型设计模式的一种,其目的是将一个请求封装为一个对 ...
- 7行代码解决P1441砝码称重(附优化过程)
先贴上最终代码感受一下: #include <bits/stdc++.h> using namespace std; int i, N, M, wi[21], res = 0; int m ...
- Spark底层原理详细解析(深度好文,建议收藏)
Spark简介 Apache Spark是用于大规模数据处理的统一分析引擎,基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量硬件之上, ...
- (Oracle)关于blob转到目标库报ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值错误解决方案
在数据抽取时,开发需要clob类型的数据,但是目标库类型是blob类型的,于是抽取的时候报错: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值错误 可能有以下几种原因: 可能有以下 ...
- 大白话入门 Spring Cloud
首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟. 什么是Spring cloud 构建分布式系统不需要复杂和容易出错.Spring Cloud 为最常见 ...
- loj10008家庭作业
题目描述 老师在开学第一天就把所有作业都布置了,每个作业如果在规定的时间内交上来的话才有学分.每个作业的截止日期和学分可能是不同的.例如如果一个作业学分为10 ,要求在6 天内交,那么要想拿到这 10 ...
- 洛谷 p3391
题目背景 这是一道经典的Splay模板题--文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...
- 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛(同步赛)
传送门 B-小宝的幸运数组 题目描述 对于小宝来说,如果一个数组的总和能够整除他的幸运数字k,就是他的幸运数组,而其他数组小宝都很讨厌.现在有一个长度为n的数组,小宝想知道这个数组的子数组中,最长的幸 ...
- java 文件转成pdf文件 预览
一.前端代码 //预览功能 preview: function () { //判断选中状态 var ids =""; var num = 0; $(".checkbox& ...