HDU - 5101 Select
来源:互联网 发布:c语言代码混淆工具 编辑:程序博客网 时间:2024/06/05 19:21
题目大意:给定一些集合,选择两个来自不同集合的数,加和大于k,问有多少种选择方案。解题思路:答案=从所有数中选择的两个加和大于k的数的方案数-在同一个集合中选择的两个加和大于k的数的方案数而对于同一个集合中选择的两个加和大于k的方案数是可以直接排序然后利用单调性快速统计出来的。#include <iostream>#include <cstdio>#include <cstdlib>#include <vector>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;int n, k, v[1010][110], m[1100], arr[1010*110];int main(){ int T; scanf("%d", &T); while(T--) { int cnt=0; scanf("%d%d", &n, &k); for(int i=0; i<n; i++) { scanf("%d", &m[i]); for(int j=0; j<m[i]; j++) { scanf("%d", &v[i][j]); arr[cnt++]=v[i][j]; } sort(v[i], v[i]+m[i]); } sort(arr, arr+cnt); LL ans=0; for(int i=0; i<cnt; i++) ans+=arr+cnt-upper_bound(arr+i+1, arr+cnt, k-arr[i]); for(int i=0; i<n; i++) for(int j=0; j<m[i]; j++) ans-=v[i]+m[i]-upper_bound(v[i]+j+1, v[i]+m[i], k-v[i][j]); printf("%I64d\n", ans); } return 0;}
0 0
- hdu 5101 Select
- hdu 5101 select
- HDU 5101 Select
- HDU - 5101 Select
- hdu Select 5101
- hdu 5101 Select
- HDU 5101 Select 二分
- HDU 5101 Select(vector)
- hdu 5101 Select(树状数组)
- hdu 5101——Select
- HDU 5101 Select (二分)
- HDU 5101Select(暴力二分)
- HDU 5101 Select (二分)
- hdu 5101 Select【二分查找】
- HDU 5101 Select(二分)
- HDU 5101 Select(二分)
- HDU 5101 - Select(基本计数 + 二分)
- hdu 5101 Select(Bestcoder Round #17)
- GraphX PageRank
- 自己动手写mvc
- PowerShell 实用命令行
- 12周(求多组书最大公约数)
- java finalize方法的使用
- HDU - 5101 Select
- 数据结构与算法分析笔记(5)——排序入门
- 仿写DOS命令中的查看目录的dir命令和tree命令
- 算术表达式的转换 (算数表达的转换建树及遍历)
- poj2392 多重背包问题
- 如何编译安装protobuf极其python版本
- 学习笔记(4)
- 关于错误:set_up_server could not establish a listen endpoint for port 12865 with family AF_UNSPEC
- 牛腩发布系统--HTTP 错误 403.14 - Forbidden