GYM 101669F - Binary Transformations
GYM 101669F - Binary Transformations
做法:如果不存在一个位置p \((a[p]=1,b[p]=1)\),那么答案就是贪心的先把所有的1,按价值从大到小变为0,所有的0,按价值从小到大变为1。如果存在一些位置p,我们就枚举一开始把多少p转成0,显然价值越大的p越优。现在考虑如何模拟,我们可以用2个set,一个维护一开始要从0变1的数,另一个维护最后要由1变0的数,插入\(O(log n)\),遍历\(O(n)\),总的复杂度\(O(n^2)\)
#include <bits/stdc++.h>
#define pb push_back
typedef long long ll;
const int N = 5010;
using namespace std;
int n;
ll c[N], ans, sum;
char a[N], b[N];
bool cmp(ll a,ll b) {return a > b;}
vector<ll> v3;
multiset<ll> tmp1,tmp2;
ll cal(int x) {ll ans = 0, ss = sum;if(x) tmp1.insert(v3[x-1]),tmp2.insert(v3[x-1]);multiset<ll>::iterator it1;multiset<ll>::reverse_iterator it2;for(it2 = tmp1.rbegin(); it2 != tmp1.rend(); ++it2) {ss -= (*it2); ans += ss;}for(it1 = tmp2.begin(); it1 != tmp2.end(); ++it1) {ss += (*it1); ans += ss;}return ans;
}
int main() {scanf("%d",&n);for(int i = 1; i <= n; ++i) scanf("%lld",&c[i]);scanf(" %s",a+1);scanf(" %s",b+1);for(int i = 1; i <= n; ++i) {if(a[i] != b[i]) {if(a[i] == '1' && b[i] == '0') tmp1.insert(c[i]);else tmp2.insert(c[i]);}else if(a[i] == '1' && b[i] == '1') v3.pb(c[i]);if(a[i] == '1') sum+=c[i];}sort(v3.begin(),v3.end(),cmp);ans = (ll)(1e18);int v3n = v3.size();for(int i = 0; i <= v3n; ++i) ans = min(ans,cal(i));printf("%lld\n",ans);return 0;
}
转载于:https://www.cnblogs.com/RRRR-wys/p/9720412.html
GYM 101669F - Binary Transformations相关推荐
- Gym 101158G Placing Medals on a Binary Tree
题意:有一颗无穷大的满二叉树,每一次我们向树上的某一层的某个节点放置奖牌,奖牌排斥的条件为:从该节点到根的路径上无其他奖牌,如果能放置则放置,否则不放跳过,并且要按照输入的顺序放置,每次输出Yes或者 ...
- Gensim官方教程翻译(二)——主题与转换(Topics and Transformations)
2019独角兽企业重金招聘Python工程师标准>>> 原谅链接:http://blog.geekidentity.com/nlp/gensim/gensim_2_topics-an ...
- (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest
layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luow ...
- Chance Gym - 101086L——二进制,素数
原题链接:https://codeforces.com/gym/1010 After Noura's brother, Tamim, finished his junior training, coa ...
- Codeforces gym 2013-2014 Samara SAU ACM ICPC Quarterfinal Qualification Contest
题目地址:http://codeforces.com/gym/100247 2014.10.27版 26号训练的题,今天发现A题有更高效的解法,用到了前缀最大值和后缀最大值 A. The Power ...
- 【2SAT+Trie】Gym101190B [NEERC2016] Binary Code
[题目] Gym 给定一些二进制编码,每个编码至多有一个位置不知道是什么.问是否存在一种补全编码方式,使得没有任何一个编码是另一个编码的前缀. n , ∑ ∣ s ∣ ≤ 5 × 1 0 5 n,\s ...
- 107. Binary Tree Level Order Traversal II
题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...
- 102. Binary Tree Level Order Traversal
题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...
- Binary XML file line #8: Error inflating class android.support.v7.widget.RecyclerView
今天创建了一个 demo ,然后就是复制RecyclerView 过去, 到最后完成运行的时候发现 系统奔溃了, 然后 提示 Binary XML file line #8: Error inflat ...
最新文章
- JDBC与数据库连接工具对比分析
- ThreeJS 测距功能
- Docker学习笔记 — Docker私有仓库搭建
- 新版中青——青龙羊毛
- 文字收缩下面半透明效果
- 解决oracle ORA-01078,LRM-00109故障一例!
- Linux中Cache内存占用过高解决办法
- 平板电脑桌面添加计算机快捷键,驰为Vi10教你Windows 10中的这些实用快捷键
- Windows Azure Service Bus (3) 队列(Queue) 使用VS2013开发Service Bus Queue
- jsonobject修改key的值_修改JSONArray里所有key的值
- 前端学习(2934):上午回顾
- 广州的11个辖区_重庆前三季度GDP反超广州,这对两城到底意味着什么?
- java8学习之Function与BiFunction函数式接口详解
- Audio驱动开发之音频链路学习笔记
- 思想交锋:证券业数字化转型实践
- Android Studio Gradle下载慢解决方法
- SSD硬盘的寿命测试
- Java多线程入门一
- 超火的微信小说小程序源码+比较轻量级/UI不错
- 怎么开发联机小游戏_微信小游戏创意大赛火热进行中,小游戏联机对战引擎免费用...
热门文章
- rsa 模数 指数转换 c语言_模数转换,你必须知道的8个经典ADC转换电路方案
- php curl 使用方法,php curl使用方法与步骤
- bms中soh计算方式_BMS算法设计之电池SOH介绍(下)
- github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量
- 全年营业额怎么计算_门店盈亏平衡计算及案例分析 | 商品管理
- poj2182 Lost Cows-暴力
- C++string容器应用举例
- 最短路(遍历边)计蒜客—DD坐地铁
- Pipe HDU - 2150(判断线段相交+向量叉乘线代详解)
- html鼠标悬停盒子凸起,css3 transform动画鼠标悬停div容器凸起放大显示