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相关推荐

  1. Gym 101158G Placing Medals on a Binary Tree

    题意:有一颗无穷大的满二叉树,每一次我们向树上的某一层的某个节点放置奖牌,奖牌排斥的条件为:从该节点到根的路径上无其他奖牌,如果能放置则放置,否则不放跳过,并且要按照输入的顺序放置,每次输出Yes或者 ...

  2. Gensim官方教程翻译(二)——主题与转换(Topics and Transformations)

    2019独角兽企业重金招聘Python工程师标准>>> 原谅链接:http://blog.geekidentity.com/nlp/gensim/gensim_2_topics-an ...

  3. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest

    layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luow ...

  4. Chance Gym - 101086L——二进制,素数

    原题链接:https://codeforces.com/gym/1010 After Noura's brother, Tamim, finished his junior training, coa ...

  5. Codeforces gym 2013-2014 Samara SAU ACM ICPC Quarterfinal Qualification Contest

    题目地址:http://codeforces.com/gym/100247 2014.10.27版 26号训练的题,今天发现A题有更高效的解法,用到了前缀最大值和后缀最大值 A. The Power ...

  6. 【2SAT+Trie】Gym101190B [NEERC2016] Binary Code

    [题目] Gym 给定一些二进制编码,每个编码至多有一个位置不知道是什么.问是否存在一种补全编码方式,使得没有任何一个编码是另一个编码的前缀. n , ∑ ∣ s ∣ ≤ 5 × 1 0 5 n,\s ...

  7. 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 ...

  8. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  9. Binary XML file line #8: Error inflating class android.support.v7.widget.RecyclerView

    今天创建了一个 demo ,然后就是复制RecyclerView 过去, 到最后完成运行的时候发现 系统奔溃了, 然后 提示 Binary XML file line #8: Error inflat ...

最新文章

  1. JDBC与数据库连接工具对比分析
  2. ThreeJS 测距功能
  3. Docker学习笔记 — Docker私有仓库搭建
  4. 新版中青——青龙羊毛
  5. 文字收缩下面半透明效果
  6. 解决oracle ORA-01078,LRM-00109故障一例!
  7. Linux中Cache内存占用过高解决办法
  8. 平板电脑桌面添加计算机快捷键,驰为Vi10教你Windows 10中的这些实用快捷键
  9. Windows Azure Service Bus (3) 队列(Queue) 使用VS2013开发Service Bus Queue
  10. jsonobject修改key的值_修改JSONArray里所有key的值
  11. 前端学习(2934):上午回顾
  12. 广州的11个辖区_重庆前三季度GDP反超广州,这对两城到底意味着什么?
  13. java8学习之Function与BiFunction函数式接口详解
  14. Audio驱动开发之音频链路学习笔记
  15. 思想交锋:证券业数字化转型实践
  16. Android Studio Gradle下载慢解决方法
  17. SSD硬盘的寿命测试
  18. Java多线程入门一
  19. 超火的微信小说小程序源码+比较轻量级/UI不错
  20. 怎么开发联机小游戏_微信小游戏创意大赛火热进行中,小游戏联机对战引擎免费用...

热门文章

  1. rsa 模数 指数转换 c语言_模数转换,你必须知道的8个经典ADC转换电路方案
  2. php curl 使用方法,php curl使用方法与步骤
  3. bms中soh计算方式_BMS算法设计之电池SOH介绍(下)
  4. github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量
  5. 全年营业额怎么计算_门店盈亏平衡计算及案例分析 | 商品管理
  6. poj2182 Lost Cows-暴力
  7. C++string容器应用举例
  8. 最短路(遍历边)计蒜客—DD坐地铁
  9. Pipe HDU - 2150(判断线段相交+向量叉乘线代详解)
  10. html鼠标悬停盒子凸起,css3 transform动画鼠标悬停div容器凸起放大显示