http://codeforces.com/contest/831/problem/C

做的时候想不到,来了个暴力。

对于每个b[i],枚举每一个a[i],就有1个可能的情况。

然后用vector存起来,再判断。理论复杂度爆咋,过了综测717ms

正确的思路就是排一个序。

预处理前缀和suma_i,然后就相当于每一个数字只能选一次。从小到大排序。

从大到小排序b_i,枚举每一个suma_i,用b[1]确定一个初始值,然后跑完所有b_i,看看suma_i那里有没有就行了。

#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;
int a[], b[];
const int maxn = 8e6 + ;
map<int, bool> vis;
vector<int>vc;
int sum[];
bool cmp(int a, int b) {
return a > b;
}
void work() {
int n, k;
scanf("%d%d", &k, &n);
for (int i = ; i <= k; ++i) {
scanf("%d", a + i);
sum[i] = sum[i - ] + a[i];
vis[sum[i]] = true;
}
for (int i = ; i <= n; ++i) {
scanf("%d", b + i);
}
sort(sum + , sum + + k);
sort(b + , b + + n, cmp);
int ans = ;
for (int i = ; i <= k; ++i) {
if (i > && sum[i] == sum[i - ]) continue;
int val = b[] - sum[i];
bool flag = true;
for (int j = ; j <= n; ++j) {
if (!vis[b[j] - val]) {
flag = false;
break;
}
}
ans += flag;
}
cout << ans << endl;
} int main() {
#ifdef local
freopen("data.txt", "r", stdin);
// freopen("data.txt", "w", stdout);
#endif
work();
return ;
}

最新文章

  1. asp.net web api返回图片至前端
  2. 如何删除或重置spfile中的参数
  3. 流媒体(音频 AudioStreamer)
  4. Cimg代码初探
  5. KMP学习笔记
  6. Java数据类型BooleanDemo
  7. Android音频焦点详解(上)
  8. 201621123060《JAVA程序设计》第十四周学习总结
  9. JS 中的对象
  10. zabbix通过agent添加监控项的步骤
  11. CSS实现三列布局
  12. Flex_布局和容器
  13. SQL 2012新分页方式
  14. 题解【bzoj2653 middle】
  15. 使用用户自定义类型作为map的key
  16. FAQ系列 | 如何保证主从复制数据一致性(转)
  17. C语言 &#183; 第二大整数
  18. 【MYSQL经验】MYSQL经验总结
  19. bzoj 4097: [Usaco2013 dec]Vacation Planning
  20. [51nod1325]两棵树的问题

热门文章

  1. 洛谷 P4547 &amp; bzoj 5006 随机二分图 —— 状压DP+期望
  2. HDOJ1495(倒水BFS)
  3. virtual judge(专题一 简单搜索 A)
  4. VS Code:快捷方式
  5. 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单
  6. loadrunner手动生成脚本函数
  7. asp中实现lable自动换行
  8. 异常:Project configuration is not up-to-date with pom.xml解决方案
  9. 【总结整理】JQuery基础学习---动画
  10. Spring pom配置详解(转)