HDU 5506 - BestCoder Round #60 - GT and set
题目链接 : 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的更多相关文章
- HDU 5505 - BestCoder Round #60 - GT and numbers
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1002 思路 : N有若 ...
- hdu 5667 BestCoder Round #80 矩阵快速幂
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- BestCoder Round #60/HDU 5505 暴力数学
GT and numbers 问题描述 给出两个数NN和MM. NN每次可以乘上一个自己的因数变成新的NN. 求最初的NN到MM至少需要几步. 如果永远也到不了输出-1−1. 输入描述 第一行读入一个 ...
- 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 ...
- HDU 5496 - BestCoder Round #58 - Beauty of Sequence
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=637&pid=1002 思路 : 考 ...
- HDU 5568 - BestCoder Round #63 - sequence2
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5568 题意 : 给一个长度已知的序列, 给一个值k, 问该序列中有多少种长度为k的上升子序列 思路 ...
- hdu 5637 BestCoder Round #74 (div.2)
Transform Accepts: 7 Submissions: 49 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072 ...
随机推荐
- 安装LVS安装LVS和配置LVS的工作比较繁杂
安装LVS安装LVS和配置LVS的工作比较繁杂,读者在配置的过程中需要非常细心和耐心.在本节我们将对其进行详细地介绍.主要包括如下几个核心步骤:1.获取支持LVS的内核源代码如果读者需要使用LVS,需 ...
- SVN经常使用命令说明
SVN版本号:1.5 及更新版本号 名词说明: WC:Working Copy 你的工作区 Versioned:受控的:受版本号控制的 SVN是什么? SVN是开源的版本号控制系统. 比CVS很多其它 ...
- [转] Gradle中的buildScript代码块
PS: 在build script中的task apply plugin: 'spring-boot' 需要 classpath("org.springframework.boot:spri ...
- [转] 看懂UML类图和时序图
PS: 组合关系:实心,一个类A属于另一个类,或多个类,但是类A不能单独存在去使用,A一般是一种抽象的东西 聚合关系:空心,一个类A可以单独存在使用 不论组合聚合,A的方法都会被直接调用. 看懂UML ...
- Java基础知识强化75:正则表达式之分割功能(字符串中的数字排序案例)
1. 案例分析: 我有如下一个字符串:"91 27 46 38 50" 写代码实现最终输出结果是:"27 38 46 50 91" 分析: (1)定义一个 ...
- Gamit的安装
--2017-1-6修正 我这里用的是Gamit10.5,系统是Ubunt 14. 1:获取root权限(仅针对装好Ubunt后没有修改过root密码的用户,如果修改过密码,但是忘掉了,则请进入单用户 ...
- hdu 2106
#include <iostream> #include <cmath> #include <string.h> using namespace std; int ...
- asp.net读取Access数据库。
注:数据库(表名 job id 工作id ,job工作字段) 数据库放在app_data文件中.名称为database.mdb 如果用codesmith生成,选择的数据库连接类型如下图: 项目结构图 ...
- MS SQL Sever数据库还原
一.右键 数据库 二.点击 [还原文件和文件组(E)...],弹出下图的窗口界面 1.在 目标数据库 的输入框填写你的数据库名(注意这是新建一个数据库供还原使用,不能还原到已有的数据库) 三.点击[源 ...
- php Socket基础
◆ Socket 基础PHP使用Berkley的socket库来创建它的连接.socket只不过是一个数据结构.你使用这个socket数据结构去开始一个客户端和服务器之间的会话.这个服务器是一直在监听 ...