C. Jury Marks 思维题
2024-09-06 06:24:39
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 ;
}
最新文章
- asp.net web api返回图片至前端
- 如何删除或重置spfile中的参数
- 流媒体(音频 AudioStreamer)
- Cimg代码初探
- KMP学习笔记
- Java数据类型BooleanDemo
- Android音频焦点详解(上)
- 201621123060《JAVA程序设计》第十四周学习总结
- JS 中的对象
- zabbix通过agent添加监控项的步骤
- CSS实现三列布局
- Flex_布局和容器
- SQL 2012新分页方式
- 题解【bzoj2653 middle】
- 使用用户自定义类型作为map的key
- FAQ系列 | 如何保证主从复制数据一致性(转)
- C语言 &#183; 第二大整数
- 【MYSQL经验】MYSQL经验总结
- bzoj 4097: [Usaco2013 dec]Vacation Planning
- [51nod1325]两棵树的问题
热门文章
- 洛谷 P4547 &; bzoj 5006 随机二分图 —— 状压DP+期望
- HDOJ1495(倒水BFS)
- virtual judge(专题一 简单搜索 A)
- VS Code:快捷方式
- 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单
- loadrunner手动生成脚本函数
- asp中实现lable自动换行
- 异常:Project configuration is not up-to-date with pom.xml解决方案
- 【总结整理】JQuery基础学习---动画
- Spring pom配置详解(转)