http://acm.zzuli.edu.cn/problem.php?id=1785

学渣的逆袭

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 82  Solved: 21

SubmitStatusWeb Board

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

2 2 2 2
1 2
3 4
5 6
7 8
3
7
16
17

Sample Output

0
1
4
 
代码很容易看懂, 因为就是一个暴力的题, 加了些优化, 但时间快了不少, 优化的力量是强大的呀,可惜我却不怎么懂优化, 慢慢学吧!!!
 
 
 
#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的更多相关文章

  1. 中小公司的Java工程师应该如何逆袭冲进BAT?

    (1)80% Java工程师都有的迷茫 这篇文章,跟大家聊一聊很多很多很多人问我的一个问题:中小公司的Java工程师应该如何规划准备,才能跳槽进入BAT这类一线互联网公司? 之所以我用了三个 “很多” ...

  2. 小X的逆袭

    [问题描述]毕业于普通本科的小x 一直自称是资深屌丝.谁又能想到,如此不起眼的小x 在历经重重面试环节后,竟然如愿以偿加入了心仪已久的腾讯公司!正所谓野百合也有春天,屌丝也有逆袭的那一天!一段时间以后 ...

  3. 《逆袭团队》第九次团队作业【Beta】Scrum meeting 3

    项目 内容 软件工程 任课教师博客主页链接 作业链接地址 团队作业9:Beta冲刺与团队项目验收 团队名称 逆袭团队 具体目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报 ...

  4. 《逆袭团队》第九次团队作业【Beta】Scrum meeting 2

    项目 内容 软件工程 任课教师博客主页链接 作业链接地址 团队作业9:Beta冲刺与团队项目验收 团队名称 逆袭团队 具体目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报 ...

  5. 面渣逆袭:Java集合连环三十问

    大家好,我是老三.上期发布了一篇:面渣逆袭:HashMap追魂二十三问,反响很好! 围观群众纷纷表示 不写,是不可能不写的,只有卷才能维持了生活这样子. 当然,我写的这一系列,不是背诵版,是理解版,很 ...

  6. 面渣逆袭:JVM经典五十问,这下面试稳了!

    大家好,我是老三,"面渣逆袭"系列继续,这节我们来搞定JVM.说真的,JVM调优什么的一个程序员可能整个职业生涯都碰不到两次,但是,一旦用到的时候,那就是救命了,而且最重要的是-- ...

  7. 面渣逆袭:Java并发六十问,快来看看你会多少道!

    大家好,我是老三,面渣逆袭 继续,这节我们来盘一盘另一个面试必问知识点--Java并发. 这篇文章有点长,四万字,图文详解六十道Java并发面试题.人已经肝麻了,大家可以点赞.收藏慢慢看!扶我起来,我 ...

  8. 面渣逆袭:Java基础五十三问,快来看看有没有你不会的!

    大家好,我是老三, 面渣逆袭 系列继续.这节我们回到梦开始的地方--Java基础,其实过了萌新阶段,面试问基础就问的不多,但是保不齐突然问一下.想一下,总不能张口高并发.闭口分布式,结果什么是面向对象 ...

  9. 面渣逆袭:二十二图、八千字、二十问,彻底搞定MyBatis!

    大家好,我是老三,面渣逆袭系列继续,这节我们的主角是MyBatis,作为当前国内最流行的ORM框架,是我们这些crud选手最趁手的工具,赶紧来看看面试都会问哪些问题吧. 基础 1.说说什么是MyBat ...

随机推荐

  1. <history> 特别报道:Google离职富翁们都在干什么?

    特别报道:Google离职富翁们都在干什么? 时间:2008-01-23 10:16:47作者:CNET科技资讯网 本文关键词:Google CNET科技资讯网1月23日国际报道 假如你拥有1千万或1 ...

  2. JwtBearerAppBuilderExtensions.UseJwtBearerAuthentication(IApplicationBuilder

    netcore从1.1升级到2.0时,出的错,因为使用的时Jwt token参考https://github.com/aspnet/Security/issues/1310#issuecomment- ...

  3. vue之微信登录

    参考文章https://www.cnblogs.com/examine/p/4634947.html 微信开放平台和公众平台的区别1.公众平台面向的是普通的用户,比如自媒体和媒体,企业官方微信公众账号 ...

  4. mysql主备配置

    目录 mysql主备2 一.master配置:2 1. 修改配置文件 2 2. 登录添加账号并赋权限 2 3. 查看master信息 2 二.slave配置:2 1. 修改配置文件 2 2. 重启登录 ...

  5. STL set,mulityset用法

    #include<iostream> #include <set> using namespace std; template <class T> class Ru ...

  6. C# 使用printDocument1.Print打印时不显示 正在打印对话框

    C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController       PrintController printControll ...

  7. RoCE vs iWARP

    两种以太网 RDMA 协议: iWARP 和 RoCE 转载 2017年03月08日 16:10:09 1510 http://weibo.com/p/1001603936363903889917?m ...

  8. [转载]RPM中SPEC常用路径以及宏变量

    转自:http://blog.csdn.net/txgc1009/article/details/6833764 通过命令rpm --showrc查看实现代码.另外直接通过 rpm --eval &q ...

  9. java byte转string 涉及到字节流中有中文

    最近遇到一个问题,我用java写了一个客户端通过socket向服务器端发送消息,发送的内容是字节流,编码格式是GBK,服务器在收到消息后,如果格式正确,会返回固定的消息格式,同样也是字节流,编码格式也 ...

  10. C++基础教程(总结)

    内容中包含 base64string 图片造成字符过多,拒绝显示