HDU 5506(GT and set)
题意:
表示看了很久,然而发现还是没看懂题.
正解:给你a个集合,让你把他们合并成k个,当两个集合有公共数字时可以合并。
(一直以为是合并后,每个集合至少有两个数字相同- -,这英语也是醉了)
思路:
所以我们应该选择k个覆盖集合尽可能大的数,所以进行k次查找,每次找出没合并集合中最大的一个。
然后再判断是否所有集合都被覆盖了。
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <queue>
- #include <cstring>
- #include <functional>
- #include <algorithm>
- #include <memory>
- using namespace std;
- int tmax;
- int a;
- int vis[305];
- int n,k,m;
- int main()
- {
- int T;
- scanf("%d",&T);
- while(T--)
- {
- scanf("%d%d",&n,&k);
- tmax = 0;
- vector<int>q[305];
- for(int i = 0; i <= n; i++)
- q[i].clear();
- for(int i = 0; i < n; i++)
- {
- scanf("%d",&m);
- memset(vis,0,sizeof(vis));
- for(int j = 0; j < m; j++)
- {
- scanf("%d",&a);
- tmax= max(tmax,a);
- q[a].push_back(i); //每个数所占的集合
- }
- }
- int c = 0;
- while(c < k)
- {
- int num = -1;
- int position = -1;
- for(int j = 0; j <= tmax; j++)
- {
- int tt = 0;
- for(int i = 0; i < q[j].size(); i++)
- {
- if(!vis[q[j][i]])
- {
- tt++;
- }
- }
- if(tt > num) //找出覆盖最大的J
- {
- num = tt;
- position = j;
- }
- }
- for(int i = 0; i < q[position].size(); i++) //把J覆盖的除去
- vis[q[position][i]] = 1;
- c++;
- }
- int flag = 0;
- for(int i = 0; i < n; i++)
- {
- if(!vis[i])
- {
- flag = 1;
- break;
- }
- }
- if(flag )
- printf("No\n");
- else
- printf("Yes\n");
- }
- }
HDU 5506(GT and set)的更多相关文章
- HDU 5506 - BestCoder Round #60 - GT and set
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1003 题意 : 给N集 ...
- hdu 5506 GT and set dfs+bitset优化
GT and set Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Probl ...
- hdu 5506 GT and set(dfs爆搜)
Problem Description You are given N sets.The i−th set has Ai numbers.You should divide the sets into ...
- HDU 5506:GT and set bitset+暴力
GT and set Accepts: 35 Submissions: 194 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 655 ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
随机推荐
- python 操作MongoDB
安装MongoDB 启动数据库:安装完成指定数据库存放路径 mongod.exe --dbpath c:\data\db进入目录后运行mongo.exe 成功 创建数据库 > use mydb ...
- DOM相关知识
一.查找元素 间接查找 parentNode // 父节点 childNodes // 所有子节点 firstChild // 第一个子节点 lastChild // 最后一个子节点 nextSibl ...
- C++ 实现一个信号量
C++ 实现一个信号量 信号量有很多应用场景,事实上只要是生产者-消费者模型,一般都需要一个信号量来控制. POSIX接口是有PV信号量API的.但C++标准没有.下面是一个PV信号量的简单实现.有些 ...
- 新概念英语(1-1)Excuse me!
Excuse me!Whose handbag is it? A:Excuse me! B:Yes? A:Is this your handbag? B:Pardon? A:Is this your ...
- 粒子系统(二):Canvas绘制精美图案
准备 IDE:Visual Studio Code Language:JavaScript / ECMAScript 6+ GitHub:Natural2D.JS 本文主要讲述 Particles - ...
- 关于HTML
我的PHP学习之旅 学习PHP已经有一段时间了,今天才想好好的总结一下这一路走来的点点滴滴,也想把我的学习方法及经验分享给大家,希望能对你有所帮助. 首先学习的是PHP前端部分,这里需要学习的知识有H ...
- POJ2398【判断点在直线哪一侧+二分查找区间】
题意:同POJ2318 #include<algorithm> #include<cstdio> #include<cstdlib> #include<cst ...
- Java程序员的情书
java程序员的情书 我能抽象出整个世界但是我不能抽象出你因为你在我心中是那么的具体所以我的世界并不完整我可以重载甚至覆盖这个世界里的任何一种方法但是我却不能重载对你的思念也许命中注定了 你在我的世界 ...
- CAdvisor container monitor
Now cadvisor is useful as a container montor tool. Not only it can monitor many container level metr ...
- YARN中FIFO、Capacity以及Fari调度器的详细介绍
(1)FIFO Scheduler 将所有的Applications放到队列中,先按照作业的优先级高低.再按照到达时间的先后,为每个app分配资源.如果第一个app需要的资源被满足了,如果还剩下了资源 ...