HDU 4334 Contest 4
本来以为是一道水题,好吧,做了才知道,出题的人有多牛。二分搜索是不可能的了,因为会超内存。。。
看到别人的搜索两个集合的提示,我就自己一边去想了。终于想出来了:
可以这样做,先把每两个集合的和值枚举出来并成一个大集合,排序,去重。剩下一个集合,于是,共三个集合。
枚举小的那个集合的元素,搜索两个大的集合。可以这样做,定义一个初始为指向最小元素的指针,一个指向最大元素的指针(两个指针是指向不同的集合的),两者之和相等则返回,小于则移动小指针+1,否则移动大指针-1.直至二者相等退出。然后再用两个指针交换指向另一个集合,重复上述过程。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL __int64
using namespace std; LL A[41000],B[41000];
LL C[41000];
int pa,pb;
LL S[5][250]; bool find_t(LL a){
int tma,tmi;
LL tmp;
tma=pa,tmi=1;
while(tma>=1&&tmi<=tma&&tmi<=pb){
tmp=A[tma]+B[tmi];
if(tmp==a) return true;
else if(tmp<a) tmi++;
else tma--;
}
tma=pb,tmi=1;
while(tma>=1&&tmi<=tma&&tmi<=pa){
tmp=A[tmi]+B[tma];
if(tmp==a) return true;
else if(tmp<a) tmi++;
else tma--;
}
return false;
} bool cmp(LL a,LL b){
if(a<b) return true;
return false;
} int main(){
int T,n;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=0;i<5;i++){
for(int j=1;j<=n;j++)
scanf("%I64d",&S[i][j]);
}
pa=pb=0;
C[0]=A[0]=B[0]=0; int tb=0;
for(int i=0;i<=1;i++){
pb=0;
for(int j=1;j<=n;j++){
if(tb==0)
C[++pb]=C[0]+S[i][j];
else{
for(int k=1;k<=tb;k++)
B[++pb]=C[k]+S[i][j];
}
}
if(tb==0)
tb=n;
else tb=tb*n;
} tb=0;
for(int i=2;i<4;i++){
pa=0;
for(int j=1;j<=n;j++){
if(tb==0)
C[++pa]=C[0]+S[i][j];
else{
for(int k=1;k<=tb;k++)
A[++pa]=C[k]+S[i][j];
}
}
if(tb==0)
tb=n;
else tb=tb*n;
} int t=1;
sort(A+1,A+pa+1,cmp);
for(int i=2;i<=pa;i++)
if(A[i]!=A[t]){
A[++t]=A[i];
}
pa=t; t=1;
sort(B+1,B+pb+1,cmp);
for(int i=2;i<=pb;i++)
if(B[i]!=B[t]){
B[++t]=B[i];
}
pb=t; bool flag=false; for(int j=1;j<n;j++){
if(find_t(-S[4][j])){
flag=true;
break;
}
} if(flag)
printf("Yes\n");
else printf("No\n");
}
return 0;
}
HDU 4334 Contest 4的更多相关文章
- HDU 4334 Trouble (暴力)
Trouble Time Limit: 5000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- HDU 5045 Contest(状压DP)
Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...
- hdu - 5045 - Contest(国家压缩dp)
意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...
- [ACM] hdu 5045 Contest (减少国家Dp)
Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...
- HDU–5988-Coding Contest(最小费用最大流变形)
Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- HDU 4334 Trouble
Trouble Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- hdu 5045 Contest(状态压缩DP)
题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...
- HDU 5045 Contest
pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...
- Trouble HDU - 4334
Hassan is in trouble. His mathematics teacher has given him a very difficult problem called 5-sum. P ...
随机推荐
- codevs——T2102 石子归并 2
http://codevs.cn/problem/2102/ 时间限制: 10 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Des ...
- 洛谷 P1272 重建道路(树形DP)
P1272 重建道路 题目描述 一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了农夫John的牧场.由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟 ...
- Codeforces Round #136 (Div. 1) B. Little Elephant and Array
B. Little Elephant and Array time limit per test 4 seconds memory limit per test 256 megabytes input ...
- USACO 1.2 Transformations (模拟)
模拟题目,依照题目给定的要求变换图形就可以,变换的优先级依次减小. 这个题目我写的非常乱.只是最还还是勉强能够执行 /* ID:twd30651 PROG:transform LANG:C++ */ ...
- SVG中一些较为具体的文档
绘制线头尾标记 http://tutorials.jenkov.com/svg/marker-element.html 微软关于svg的文档 http://msdn.microsoft.com/zh- ...
- hdu5592/BestCoder Round #65 树状数组寻找第K大
ZYB's Premutation Memory Limit: 131072/131072 K (Java/Others) 问题描述 ZYBZYB有一个排列PP,但他只记得PP中每个前缀区间的逆 ...
- Swift String转Character数组
通过String的characters方法,将String转Character数组 例如: let characters:Array<Character> = Array("01 ...
- Http multipart/form-data多参数Post方式上传数据
最近,工作中遇到需要使用java实现http发送get.post请求,简单的之前经常用到,但是这次遇到了上传文件的情况,之前也没深入了解过上传文件的实现,这次才知道通过post接口也可以,是否还有其他 ...
- 关于swift构造方法
switf 中如果遇到这样的错,,,大概错误就是,"必须要调用父类的构造方法",,可是呢,,调用了super.init() 不就是调用了构造方法了吗? 结果上去一查,,结果一名外 ...
- PHP邮件发送库:Swiftmailer
Swiftmailer需要PHP 7.0或更高版本,(proc_*函数可用.) 安装 composer require "swiftmailer/swiftmailer:^6.0" ...