题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1003

题意 :

给N集合, 每个集合由若干个正整数组成,

要求划分为L个部分, 使得每个部分的所有集合的交集非空

能划分输出YES, 否则NO

思路 :

一共N个集合, 划分的个数为1 - N个, 所以当 L > N 时必然是不行的

考虑如何取到最小的划分个数cnt, 如果 cnt <= L 则可行

方法 :

记录所有的数出现过的次数

每次都找一个出现次数最多的数, 将存在该数的集合作为一个划分, cnt++, 将该划分中所有集合中的数出现次数都减一, 直到不存在剩余数字为止, 再将cnt与L进行比较

#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; const int MAXN = ;
const int MAX_NUM = 3e2+; int sett[MAXN][MAX_NUM];
int number_cnt[MAX_NUM];
int num[MAXN];
bool vis[MAXN]; int Max_Cnt()
{
int res = ;
for(int i = ; i < MAX_NUM; i++) {
if(number_cnt[i] > number_cnt[res]) res = i;
}
return res;
} void Init()
{
memset(number_cnt, , sizeof(number_cnt));
memset(vis, , sizeof(vis));
} int main()
{
int t;
int n, l; scanf("%d", &t);
while(t--) {
Init();
scanf("%d %d", &n, &l);
for(int i = ; i < n; i++) {
scanf("%d", &num[i]);
for(int j = ; j < num[i]; j++) {
scanf("%d", &sett[i][j]);
number_cnt[sett[i][j]]++;
}
}
int cnt = ;
for(int i = ; i < n; i++) {
int number = Max_Cnt();
if(number == ) break;
for(int j = ; j < n; j++) {
if(vis[j] == ) continue;
for(int k = ; k < num[j]; k++) {
if(sett[j][k] == number) {
vis[j] = ;
break;
}
}
if(vis[j] == ) {
for(int k = ; k < num[j]; k++) {
number_cnt[sett[j][k]]--;
}
}
}
cnt++;
}
if(cnt <= l) printf("YES\n");
else printf("NO\n");
} return ;
}

HDU 5506 - BestCoder Round #60 - GT and set的更多相关文章

  1. HDU 5505 - BestCoder Round #60 - GT and numbers

    题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1002 思路 : N有若 ...

  2. hdu 5667 BestCoder Round #80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  3. hdu 5643 BestCoder Round #75

    King's Game  Accepts: 249  Submissions: 671  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6 ...

  4. hdu 5641 BestCoder Round #75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  5. BestCoder Round #60/HDU 5505 暴力数学

    GT and numbers 问题描述 给出两个数NN和MM. NN每次可以乘上一个自己的因数变成新的NN. 求最初的NN到MM至少需要几步. 如果永远也到不了输出-1−1. 输入描述 第一行读入一个 ...

  6. HDU 5682/BestCoder Round #83 1003 zxa and leaf 二分+树

    zxa and leaf Problem Description zxa have an unrooted tree with n nodes, including (n−1) undirected ...

  7. HDU 5496 - BestCoder Round #58 - Beauty of Sequence

      题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=637&pid=1002 思路 : 考 ...

  8. HDU 5568 - BestCoder Round #63 - sequence2

    题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5568 题意 : 给一个长度已知的序列, 给一个值k, 问该序列中有多少种长度为k的上升子序列 思路 ...

  9. hdu 5637 BestCoder Round #74 (div.2)

    Transform  Accepts: 7  Submissions: 49  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: 131072 ...

随机推荐

  1. 使用jcrop进行头像剪切

    http://www.cnblogs.com/chenssy/archive/2013/05/18/3084985.html http://code.ciaoca.com/jquery/jcrop/ ...

  2. unicode下各种类型转换,CString,string,char*,int,char[]

    把最近用到的各种unicode下类型转换总结了一下,今后遇到其他的再补充: 1.string转CString string a=”abc”; CString str=CString(a.c_str() ...

  3. Winform Textbox实现滚动条始终在最下面

    在用textbox时,实现一些信息追加时,要使滚动条始终呆在最下面的实现方法. 以textbox1为例,事件TextChanged中执行以下代码即可 private void textBox1_Tex ...

  4. DELL RACADM 批量升级戴尔IDRAC固件

    需求:通过服务器远程管理IP批量升级戴尔IDRAC固件 工具:racadm.ipmitool.Remote Access Configuration Tool 下载: 第一步,将要更新BMC IP写入 ...

  5. HDU 5139 Formula 卡内存

    题目就是求这个 n达到10^7,测试数据组数为10^5 为了防止TLE,一开始把每个n对应的值先求出来,但发现竟然开不了10^7的数组(MLE),然后就意识到这是第一道卡内存的题目... 只能离线做, ...

  6. jQuery中使用 .html() function在IE8和9中显示不正常源码中多出sizset和sizcache

    错误原因:在引入jquery的时候,使用了html function,在IE8和IE9下面有可能会出现不兼容 解决办法:在html头部加一句 <meta http-equiv="X-U ...

  7. 使用JQuery获取对象的几种方式

    1.先讲讲JQuery的概念 JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队.其实 JQuery是一个JavaScript的类 ...

  8. MySQL慢查询详解

    分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”.   查看/设置“慢查询”的时 ...

  9. Terminating app due to uncaught exception 'NSUnknownKeyException', reason: xxxx

    出现错误的情景: 使用Swift自定义Cell, 然后将这个Cell在OC中使用, 由于为了能够在OC中使用和使用起来命名比较规范 我在Swift自定义的Cell前加了 @objc(DSProduct ...

  10. python的exec、eval详解

    exec exec语句用来执行储存在字符串或文件中的Python语句.例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句.下面是一个简单的例子. exec ' ...