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相关推荐

  1. hdu 5101(二分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5101 题意:给定一些集合,选择两个来自不同集合的数,加和大于k,问有多少种选择方案 答案=从所有数中选 ...

  2. (小甲鱼python)集合笔记合集一 集合(上)总结 集合的简单用法 集合的各种方法合集:子、交、并、补、差、对称差集、超集

    一.基础复习 集合与字典区别 集合中所有元素都是独一无二的,并且也是无序的. 集合具有唯一性.无序性.有限性 >>> type({}) #字典 <class 'dict'> ...

  3. [HNOI2012]集合选数(思维构造 + 状压dp)

    problem 题目链接 solution 从最小一个数 xxx 开始,将其 2x,3x2x,3x2x,3x 放入,再将 2(2x),3(2x),2(3x),3(3x)2(2x),3(2x),2(3x ...

  4. [转载] DeepinC . Mr_zkt 集合选数

    我不生产代码,我只是题解的搬运工...(%DeepinC  %Mr_zkt) 题干: 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交 ...

  5. hdu 3006 枚举集合可以产生的所有并集的集合

    http://acm.hdu.edu.cn/showproblem.php?pid=3006 刚买的CHERRY键盘 手感真好 可惜不习惯 写代码老是打错,一个题写了一上午,都是各种按错键DEBUG. ...

  6. BZOJ 2734 [HNOI2012]集合选数 (状压DP、时间复杂度分析)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2734 题解 嗯早就想写的题,昨天因为某些不可告人的原因(大雾)把这题写了,今天再来写题解 ...

  7. P3226-[HNOI2012]集合选数【状压dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P3226 题目大意 1∼n1\sim n1∼n选出一些组成集合,一个集合里如果有xxx则不能有2x,3x2x,3x2 ...

  8. [HNOI2012]集合选数 BZOJ2734

    分析: 构造法...每次找到一个没有被选过的数,用这个数推出一个表格,之后在表格上跑状压DP,时间复杂度O(n) 附上代码: #include <cstdio> #include < ...

  9. 【BZOJ】2734: [HNOI2012]集合选数

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2734 考虑$N=4$的情况: \begin{bmatrix} 1&3 &X ...

  10. [BZOJ 2734] 集合选数

    Link: BZOJ 2734 传送门 Solution: 真是奥妙重重的建模啊..... 我们发现$x,2*x,3*x$这些数太分散了,难以处理 于是我们构建这样的表格: x  3x  9x  27 ...

最新文章

  1. Python可变参数
  2. Spark任务提交源码
  3. Tarjan求lca
  4. java开发模型_java开发模型MVC
  5. shell 文件路径有空格_Python学习第57课-shell入门之基本简单命令(一)
  6. android one s5,消费者报告:Galaxy S5比S6更值得购买
  7. html自适应布局_三分钟学会响应式布局和自适应布局
  8. 机器学习实战 k-近邻算法 约会网站
  9. Codeforces Round 1 - 10总结 【@Abandon】
  10. 数组与字符串的相互转换
  11. mysql连接报错3167_MySQL之使用过程中报错及处理记录(持续更新)
  12. 寻找最小的k个数(四种方法)
  13. java struts2 例子_java struts2入门学习实例--用户注册和用户登录整合
  14. k3 梅林固件设置_OpenWrt中,旁路由的设置与使用
  15. STM8L_库函数-模板搭建
  16. ubuntu双系统修改启动菜单
  17. Windows系统用户目录Users迁移教程
  18. 关于时间的SQL条件查询
  19. 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
  20. 卑微打工人!java打地鼠窗口小游戏代码

热门文章

  1. 数据结构1——堆栈和队列
  2. KDD China技术峰会回顾:大牛云集,教你如何基于大数据 手握人工智能未来
  3. EvilAP_Defender:可以警示和攻击 WIFI 热点陷阱的工具
  4. yum info 查不到nginx下载info的问题
  5. Entity Framework Configuring Relationships with the Fluent API
  6. 《你不可不知的50个艺术知识》之抽象画
  7. Swing组件集合的事件处理(三)
  8. 中文分词:采用二元词图以及viterbi算法(一)
  9. Silverlight入门
  10. delphi7在windows server 2003企业版上不能打开项目的选项(Options)窗口的解决方法...