hdu 5101 n集合选2个不同集合数使和大于k
http://acm.hdu.edu.cn/showproblem.php?pid=5101
给n个集合,选择两个来自不同集合的数,加和大于k,问有多少种选择方案。
答案=从所有数中选择的两个加和大于k的数的方案数-在同一个集合中选择的两个加和大于k的数的方案数
而对于同一个集合中选择的两个加和大于k的方案数是可以直接排序然后利用单调性快速统计出来的。
注意upper_bound的应用和ans要使用long long因为10^5*10^5/2超界限了..
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <cstring>
#include <algorithm>
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define clr0(x) memset(x,0,sizeof(x))
#define clr1(x) memset(x,-1,sizeof(x))
using namespace std;
typedef long long LL;
const int maxn = 1005,maxm = 105;
int p[maxn][maxm],n,k,s[maxn*maxm];int main()
{//cout<<(int)2147483647<<endl;int _;RD(_);while(_--){int cnt = 0;LL ans = 0;RD2(n,k);for(int i = 1;i <= n;++i){RD(p[i][0]);for(int j = 1;j <= p[i][0];++j){RD(p[i][j]);s[cnt++] = p[i][j];}}sort(s,s+cnt);for(int i = 0;i < cnt;++i){ans += (s + cnt - upper_bound(s,s+cnt,k - s[i]));}for(int i = n;i >= 1;--i){sort(p[i]+1,p[i] + p[i][0] + 1);for(int j = 1;j <= p[i][0];++j){ans -= (p[i] + p[i][0] + 1 - upper_bound(p[i]+1,p[i]+p[i][0]+1,k - p[i][j]));}}printf("%I64d\n",ans/2);}return 0;
}
转载于:https://www.cnblogs.com/zibaohun/p/4106649.html
hdu 5101 n集合选2个不同集合数使和大于k相关推荐
- hdu 5101(二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5101 题意:给定一些集合,选择两个来自不同集合的数,加和大于k,问有多少种选择方案 答案=从所有数中选 ...
- (小甲鱼python)集合笔记合集一 集合(上)总结 集合的简单用法 集合的各种方法合集:子、交、并、补、差、对称差集、超集
一.基础复习 集合与字典区别 集合中所有元素都是独一无二的,并且也是无序的. 集合具有唯一性.无序性.有限性 >>> type({}) #字典 <class 'dict'> ...
- [HNOI2012]集合选数(思维构造 + 状压dp)
problem 题目链接 solution 从最小一个数 xxx 开始,将其 2x,3x2x,3x2x,3x 放入,再将 2(2x),3(2x),2(3x),3(3x)2(2x),3(2x),2(3x ...
- [转载] DeepinC . Mr_zkt 集合选数
我不生产代码,我只是题解的搬运工...(%DeepinC %Mr_zkt) 题干: 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交 ...
- hdu 3006 枚举集合可以产生的所有并集的集合
http://acm.hdu.edu.cn/showproblem.php?pid=3006 刚买的CHERRY键盘 手感真好 可惜不习惯 写代码老是打错,一个题写了一上午,都是各种按错键DEBUG. ...
- BZOJ 2734 [HNOI2012]集合选数 (状压DP、时间复杂度分析)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2734 题解 嗯早就想写的题,昨天因为某些不可告人的原因(大雾)把这题写了,今天再来写题解 ...
- P3226-[HNOI2012]集合选数【状压dp】
正题 题目链接:https://www.luogu.com.cn/problem/P3226 题目大意 1∼n1\sim n1∼n选出一些组成集合,一个集合里如果有xxx则不能有2x,3x2x,3x2 ...
- [HNOI2012]集合选数 BZOJ2734
分析: 构造法...每次找到一个没有被选过的数,用这个数推出一个表格,之后在表格上跑状压DP,时间复杂度O(n) 附上代码: #include <cstdio> #include < ...
- 【BZOJ】2734: [HNOI2012]集合选数
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2734 考虑$N=4$的情况: \begin{bmatrix} 1&3 &X ...
- [BZOJ 2734] 集合选数
Link: BZOJ 2734 传送门 Solution: 真是奥妙重重的建模啊..... 我们发现$x,2*x,3*x$这些数太分散了,难以处理 于是我们构建这样的表格: x 3x 9x 27 ...
最新文章
- Python可变参数
- Spark任务提交源码
- Tarjan求lca
- java开发模型_java开发模型MVC
- shell 文件路径有空格_Python学习第57课-shell入门之基本简单命令(一)
- android one s5,消费者报告:Galaxy S5比S6更值得购买
- html自适应布局_三分钟学会响应式布局和自适应布局
- 机器学习实战 k-近邻算法 约会网站
- Codeforces Round 1 - 10总结 【@Abandon】
- 数组与字符串的相互转换
- mysql连接报错3167_MySQL之使用过程中报错及处理记录(持续更新)
- 寻找最小的k个数(四种方法)
- java struts2 例子_java struts2入门学习实例--用户注册和用户登录整合
- k3 梅林固件设置_OpenWrt中,旁路由的设置与使用
- STM8L_库函数-模板搭建
- ubuntu双系统修改启动菜单
- Windows系统用户目录Users迁移教程
- 关于时间的SQL条件查询
- 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
- 卑微打工人!java打地鼠窗口小游戏代码
热门文章
- 数据结构1——堆栈和队列
- KDD China技术峰会回顾:大牛云集,教你如何基于大数据 手握人工智能未来
- EvilAP_Defender:可以警示和攻击 WIFI 热点陷阱的工具
- yum info 查不到nginx下载info的问题
- Entity Framework Configuring Relationships with the Fluent API
- 《你不可不知的50个艺术知识》之抽象画
- Swing组件集合的事件处理(三)
- 中文分词:采用二元词图以及viterbi算法(一)
- Silverlight入门
- delphi7在windows server 2003企业版上不能打开项目的选项(Options)窗口的解决方法...