有生之年我居然也能不看题解做出来题QAQ……

发现c、d是0、1序列而不是随机数列说明有蹊跷,于是发现负数直接配0,正数配1即可。不知道哪个最小,那就全求一下吧……我的做法的坑点是数正好为1时不可以选。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long ll;
const int maxn = 1e5 + 5;
const ll inf = 1e18; int n, a[maxn], b[maxn], ansc[maxn], ansd[maxn];
ll ans = -inf; void solve(int *a, int *b, int *ansc, int *ansd) {
int c[maxn], d[maxn], t[maxn]; ll sum = 0, C = 0;
for (int i = 1; i <= n; i++) {
if (a[i] > 1) {
c[i] = 1;
C++;
sum += a[i];
} else {
c[i] = 0;
}
}
ll k = 0, D = 0;
for (int i = 1; i <= n; i++) {
t[i] = i;
d[i] = 0;
}
sort(t + 1, t + 1 + n, [&](int x, int y) { return b[x] > b[y]; });
for (int i = 1; i <= n; i++) {
int tmp = t[i];
if (b[tmp] <= 1) break;
d[tmp] = 1;
D++;
k += b[tmp];
if (k >= sum) break;
}
if (k >= sum) {
ll calc = sum - C - D;
if (calc > ans) {
ans = calc;
memcpy(ansc, c, sizeof c);
memcpy(ansd, d, sizeof d);
}
}
} int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int i = 1; i <= n; i++)
scanf("%d", &b[i]); solve(a, b, ansc, ansd);
solve(b, a, ansd, ansc); printf("%lld\n", ans);
for (int i = 1; i <= n; i++)
printf("%d%c", ansc[i], " \n"[i == n]);
for (int i = 1; i <= n; i++)
printf("%d%c", ansd[i], " \n"[i == n]);
}

最新文章

  1. SQLite使用(三)&amp;&amp;核心API使用
  2. [Membership架构分析1] ASP.NET membership的表结构
  3. Utility1:Overview
  4. 最新IP地址数据库Dat格式-高性能高并发版(2017年1月)
  5. 狗汪汪玩转无线电 -- GPS Hacking
  6. 说说Statement、PreparedStatement和CallableStatement的异同(转)
  7. 详解使用icomoon生成字体图标的方法并应用
  8. 【processing】小代码5
  9. Windows Phone 支持中国移动官方支付
  10. jquery实现网页选项卡
  11. ember.js:使用笔记10 常用方法
  12. 【Android测试】【第五节】LogCat——命令行
  13. JQuery简单实现图片轮播效果
  14. POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统 DP 贪心
  15. 设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用
  16. java 内存数据存储
  17. 小学生四则运算(java编程)201571030135
  18. linux ——shell 脚本
  19. linux基础之awk
  20. Unity调试模式设置辅助线是否可见

热门文章

  1. 浏览器全屏的JS代码实现
  2. BZOJ1150:[CTSC2007]数据备份
  3. 利用SharedRegion实现核间共享
  4. HDOJ1073(gets 应用)
  5. 江苏省大学生程序设计竞赛(JSCPC)赛后感
  6. VisualGDB系列9:配置VS直接通过SSH方式访问Linux项目
  7. ES6学习之Promise
  8. Python-Redis的Hash操作
  9. 【jQuery】praseFloat()方法的用法及注意事项
  10. js数组中的reverse()方法