(暴力+优化)学渣的逆袭 -- zzuli -- 1785
http://acm.zzuli.edu.cn/problem.php?id=1785
学渣的逆袭
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 82 Solved: 21
Description
老师在黑板上写了四个数列a,b,c,d,数列a,b,c,d分别有i,j,k,l个数,突然间老师很生气的把正在睡觉的豆子喊了起来,问:“这是你第x次上课睡觉了!现在给你个赎罪的机会,你从每个数列中选择一个数,有多少种选法使他们的和为x?”,豆子实在太慌乱了,小伙伴们能告诉豆子正确答案吗?
Input
第一行有四个整数i,j,k,l(1<=i,j,k,l<=500),第二行有i个数a1,a2...ai,第三行有j个数b1,b2...bj,第四行有k个数c1,c2...ck,第五行有l个数d1,d2...dl。第六行有一个数m,接下来m行询问,每行有一个数字x。(m<=10),(|x|<10^10),(|a|,|b|,|c|,|d|<=10^8)
Output
输出有m行,每行输出一个x对应的答案。
Sample Input
Sample Output
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std; const int N = ; int a[N], b[N], c[N], d[N];
int v1[N*N], v2[N*N]; int main()
{
int A, B, C, D; while(scanf("%d%d%d%d", &A, &B, &C, &D)!=EOF)
{
int i, j, ans1=, ans2=, m, x; for(i=; i<A; i++) scanf("%d", &a[i]);
for(i=; i<B; i++) scanf("%d", &b[i]);
for(i=; i<C; i++) scanf("%d", &c[i]);
for(i=; i<D; i++) scanf("%d", &d[i]); for(i=; i<A; i++)
for(j=; j<B; j++)
v1[ans1++] = a[i] + b[j];
for(i=; i<C; i++)
for(j=; j<D; j++)
v2[ans2++] = c[i] + d[j]; sort(v1, v1+ans1);
sort(v2, v2+ans2); scanf("%d", &m); while(m--)
{
long long sum=;
scanf("%d", &x); for(i=; i<ans1; i++)
{
int w = x - v1[i];
int l, r;
if(binary_search(v2, v2+ans2, w))
{
l = lower_bound(v2, v2+ans2, w) - v2;
r = upper_bound(v2, v2+ans2, w) - v2;
sum += r-l;
}
}
printf("%lld\n", sum);
}
}
return ;
}
#include<cstdio>
#include<cstring>
#include<stack>
#include<vector>
#include<queue>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int oo = 0x3f3f3f3f;
const int maxn = 1e4+;
const int mod = ;
typedef long long LL;
int a[maxn], b[maxn], c[maxn], d[maxn];
LL ans;
void init(int &m, int o[], int n, int val)
{
m = lower_bound(o, o+n, val)-o;
if(o[m] > val || m == n) m--;
}
int main()
{
int i, j, q, w, e, r, m, x, k;
int z, s, v;
while(~scanf("%d %d %d %d", &q, &w, &e, &r))
{
for(i = ; i < q; i ++) scanf("%d", &a[i]);
for(i = ; i < w; i++)scanf("%d", &b[i]);
for(i = ; i < e; i++) scanf("%d", &c[i]);
for(i = ; i < r; i++)scanf("%d", &d[i]);
sort(a, a+q); sort(b, b+w);
sort(c, c+e); sort(d, d+r);
scanf("%d", &m);
while(m--)
{
scanf("%d", &x);
ans = ;
init(z, a, q, x); init(s, b, w, x); init(v, c, e, x);
for(i = ; i <= z; i ++)
{
if(a[i] > x) break;
for(j = ; j <= s; j ++)
{
if(a[i]+b[j] > x) break;
for(k = ; k <= v; k++)
{
if(a[i]+b[j]+c[k] > x) break;
int v = x-a[i]-b[j]-c[k];
if(binary_search(d, d+r, v))ans++;
}
}
}
printf("%lld\n", ans);
}
}
return ;
} /**************************************************************
Problem: 1785
User: 2759894160
Language: C++
Result: Accepted
Time:1667 ms
Memory:1032 kb
****************************************************************/
(暴力+优化)学渣的逆袭 -- zzuli -- 1785的更多相关文章
- 中小公司的Java工程师应该如何逆袭冲进BAT?
(1)80% Java工程师都有的迷茫 这篇文章,跟大家聊一聊很多很多很多人问我的一个问题:中小公司的Java工程师应该如何规划准备,才能跳槽进入BAT这类一线互联网公司? 之所以我用了三个 “很多” ...
- 小X的逆袭
[问题描述]毕业于普通本科的小x 一直自称是资深屌丝.谁又能想到,如此不起眼的小x 在历经重重面试环节后,竟然如愿以偿加入了心仪已久的腾讯公司!正所谓野百合也有春天,屌丝也有逆袭的那一天!一段时间以后 ...
- 《逆袭团队》第九次团队作业【Beta】Scrum meeting 3
项目 内容 软件工程 任课教师博客主页链接 作业链接地址 团队作业9:Beta冲刺与团队项目验收 团队名称 逆袭团队 具体目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报 ...
- 《逆袭团队》第九次团队作业【Beta】Scrum meeting 2
项目 内容 软件工程 任课教师博客主页链接 作业链接地址 团队作业9:Beta冲刺与团队项目验收 团队名称 逆袭团队 具体目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报 ...
- 面渣逆袭:Java集合连环三十问
大家好,我是老三.上期发布了一篇:面渣逆袭:HashMap追魂二十三问,反响很好! 围观群众纷纷表示 不写,是不可能不写的,只有卷才能维持了生活这样子. 当然,我写的这一系列,不是背诵版,是理解版,很 ...
- 面渣逆袭:JVM经典五十问,这下面试稳了!
大家好,我是老三,"面渣逆袭"系列继续,这节我们来搞定JVM.说真的,JVM调优什么的一个程序员可能整个职业生涯都碰不到两次,但是,一旦用到的时候,那就是救命了,而且最重要的是-- ...
- 面渣逆袭:Java并发六十问,快来看看你会多少道!
大家好,我是老三,面渣逆袭 继续,这节我们来盘一盘另一个面试必问知识点--Java并发. 这篇文章有点长,四万字,图文详解六十道Java并发面试题.人已经肝麻了,大家可以点赞.收藏慢慢看!扶我起来,我 ...
- 面渣逆袭:Java基础五十三问,快来看看有没有你不会的!
大家好,我是老三, 面渣逆袭 系列继续.这节我们回到梦开始的地方--Java基础,其实过了萌新阶段,面试问基础就问的不多,但是保不齐突然问一下.想一下,总不能张口高并发.闭口分布式,结果什么是面向对象 ...
- 面渣逆袭:二十二图、八千字、二十问,彻底搞定MyBatis!
大家好,我是老三,面渣逆袭系列继续,这节我们的主角是MyBatis,作为当前国内最流行的ORM框架,是我们这些crud选手最趁手的工具,赶紧来看看面试都会问哪些问题吧. 基础 1.说说什么是MyBat ...
随机推荐
- python学习笔记-Day4(1)
迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优点是 ...
- 史上最全的MSSQL复习笔记
1.什么是SQL语句 SQL语言,结构化的查询语言(Structured Query Language),是关系数据库管理系统的标准语言.它是一种解释语言,写一句执行一句,不需要整体编译执行. 语法特 ...
- Java中重写与重载的区别
方法重载:关键字overload,方法名和方法的返回类型都相同,方法参数个数和类型不一样方法重写:也叫方法覆盖,关键字override,相对于类继承而言,重写的方法名,返回类型,参数个数,参数类型都要 ...
- Liunx read
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 1)read后面的变量var可以只有一个,也可以有多个,这时如果输入多个数据,则第一个数据给第一个变量,第二个数据 ...
- The valid characters are defined in RFC 7230 and RFC 3986问题
这个问题困扰了我接近两天了!尼玛!网上搜了很多资料,有的给出了解决方案,然后下面的评论说按照楼主做的,没有成功,我一做也确实没有成功.设置了断点,一步一步跟进去看,还是没有头绪.不过有一点可以确认的是 ...
- pdo不抛出异常
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
- python 的文件操作
二进制用法 f=open('test.txt','wb') f.write("汉字\r\n".encode('UTF-8')) f.write("hello". ...
- 外部javascript形式
***.js: /** * 收起或者展开筛选框 */ function filterType(){ $("#filter_box_id").toggle(500); var sha ...
- spring学习 五 依赖注入的方式
依赖注入有两种方式: 1 构造注入,如果<bean>标签下使用<contructor-arg>,则是构造注入 2 setter注入,就是调用setter方法注入,如果<b ...
- 粒子跟随本体unity
Simulation Space(模拟空间):在世界坐标和本地坐标中切换,这个就是制作技能痕迹的重要位置,新建的粒子系统一般都默认为local,所以在粒子本体移动的时候也跟着进行移动,改为world的 ...