牛客练习赛43D(贪心)
有生之年我居然也能不看题解做出来题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]);
}
牛客练习赛43D(贪心)的更多相关文章
- 牛客练习赛43D Tachibana Kanade Loves Sequence
题目链接:https://ac.nowcoder.com/acm/contest/548/D 题目大意 略 分析 贪心,首先小于等于 1 的数肯定不会被选到,因为选择一个数的代价是 1,必须选择大于1 ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
- 牛客练习赛51 **E-数列** (二分,贪心,构造)
牛客练习赛51 E-数列 链接:https://ac.nowcoder.com/acm/contest/1083/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)
牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
随机推荐
- Maven 将jar导入本地maven仓库
目录 环境变量配置maven 执行一下命令即可 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Maven将jar倒入本地maven仓库 原创博客,转载请注明出处 @ 在Java项目开发 ...
- Python:struct模块的pack、unpack
mport struct pack.unpack.pack_into.unpack_from 1 # ref: http://blog.csdn<a href="http://lib. ...
- nginx中给目录增加密码保护实现程序
一款nginx中给目录增加密码保护实现程序,可以有效的保护一些目录不被访问,有需要的朋友可参考一下. 了防止一些可能出现存在漏洞的后台脚本暴露,使用验证的方式保护这些文件所在的目录 使用apache的 ...
- QTP使用outlook发送邮件
'发邮件 Dim objOutlook Dim objOutlookMsg Dim olMailItem ' Create the Outlook object and the new mail ...
- javascript如何判断手机是什么系统
做H5页面的时候,经常会用到判断手机是什么系统,根据系统的型号,实现不同的效果,那么如何判断显示页面的手机型号呢? (function(){ var isMobile={ Android:functi ...
- $.parseJSON失效的问题
郁闷死,之前都是用parseJSON来解析json的,这次竟然不行了,提示parseJSON is not a function,jquery是1.72的,经过前端的帮忙,var objs = JSO ...
- [poj1273]Drainage Ditches(最大流)
解题关键:最大流裸题 #include<cstdio> #include<cstring> #include<algorithm> #include<cstd ...
- 安装python Matplotlib 库
转:使用 python Matplotlib 库 绘图 及 相关问题 使用 python Matplotlib 库绘图 转:http://blog.csdn.net/daniel_ustc ...
- NIPT需要多大的数据量(reads number)?
NIPT需要多大的数据量(reads number)? 调研 2014 Noninvasive prenatal diagnosis of common aneuploidies by semicon ...
- BLAST在Windows系统中本地化
简介 NCBI除了提供在线的Web BLAST序列比对服务外,还提供FTP方式下载序列比对工具.这允许在本地平台上针对从NCBI下载或本地创建的数据库执行BLAST搜索.这些实用程序没有图形用户界面, ...