题面如下:

思路 or 题解

一共有两组操作
选择 a 串 两个不同的位置,交换一下,代价是abs(i - j)

选择 a 串 一个位置进行反转(异或1)
1 - > 0
0 -> 1

可以发现什么?
如果使用第一个操作,那么代价只能是 1

用反证法:
如果代价 大于 1
我们可以完全只用 操作2 进行, 代价是2, 不会比 操作1 要差
所以可以证明 只有代价为 1 的时候才会使用 操作1

所以我们记录两串不同的位置
进行贪心

AC代码如下

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <unordered_map>
#include <bitset>
#include <set>
#include <random>
#include <ctime>
#include <queue>
#include <stack>
#include <climits>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);
//#define int long long
//#define ll long long
#define PII pair<int, int>
#define px first
#define py second
typedef std::mt19937 Random_mt19937;
Random_mt19937 rnd(time(0));
using namespace std;
const int N = 100009;
int n;
string a, b;
vector<int> v1, v0;
void solve()
{cin >> n >> a >> b;a = '#' + a, b = '#' + b;for (int i = 1; i <= n; i++){if (a[i] == b[i])continue;if (a[i] == '1')v1.push_back(i);elsev0.push_back(i);}int ans = 0;while (v0.size() && v1.size()){int x = v0.back(), y = v1.back();v0.pop_back(), v1.pop_back();if (abs(x - y) == 1)ans++;else{ans++;if (x > y)v1.push_back(y);elsev0.push_back(x);}}ans += v1.size() + v0.size();cout << ans << '\n';
}
int main()
{buff;solve();
}

C. Equalize(贪心)相关推荐

  1. 【CodeForces - 999D】Equalize the Remainders(思维,贪心)

    题干: You are given an array consisting of nn integers a1,a2,-,ana1,a2,-,an, and a positive integer mm ...

  2. CodeForces-999D Equalize the Remainders (贪心+神奇的STL)

    题意:给你一个n,m;其中n一定能被m整除,然后给你n个数 有一种操作   选择n个数中的任意一个,使其+1: 条件: Ci 属于[0,m-1]  Ci代表ai模m的余数为i的个数 且都等于n/m; ...

  3. 【CodeForces Round #550】A-F | 模拟 | 贪心 | 高精 | BFS | 二分图 | E

    今年怎么没有愚人节比赛了   CF你看看人家洛谷   唉鸭原来那边还没到愚人节呢- 愚人节比赛还是有的,在今晚 qwq [CodeForces 1144   A-F] Tags:模拟 贪心 BFS 高 ...

  4. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  5. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  6. Too Many Segments CF595D 贪心乱搞

    传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...

  7. Roundgod and Milk Tea 贪心

    这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...

  8. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  9. 贪心:expedition 最优加油方法

    已知一条公路上,有一个起点与一个终点,这之间有n个加油站;已知从这n个加 油站到终点的距离d与各个加油站可以加油的量l,起点位置至终点的距离L与起 始时刻油箱中汽油量P;假设使用1个单位的汽油即走1个 ...

最新文章

  1. 浏览器安全检查己通过_百度主动推送三项合一功能
  2. linux修复uefi启动文件,uefi-gpt-linux修复grub rescue
  3. 重构老系统遗留代码的一些方法学习笔记
  4. ubuntu安装codeblock的方法
  5. 现代操作系统-进程与线程
  6. 通过历史控制文件恢复Oracle数据库,只需这10步
  7. bigsur正式版clover引导_【微信首发】macOS Catalina 10.15.6 19G2021 正式版 Clover/OC/PE三分区原版镜像...
  8. 如何解决手机电话本CSV格式和VCF格式的转换
  9. 互联网+智慧用电:智能微型断路器应用发展浅析-李亚俊
  10. python3 gzip解压_使用 Python 解压缩 gzip 数据流
  11. java开发 微信商家转账到零钱,发起商家转账API,微信支付
  12. java使用免费日期API获取当年节假日
  13. Mr. Kitayuta vs. Bamboos
  14. 2019-11-12
  15. win10关机后cpu风扇还在转_win10关机后风扇一直转,长按电源键才关闭怎么办
  16. Word文档怎么删除html标签,word怎么清除所有格式
  17. linux加新的硬盘,linux添加新硬盘
  18. hydra九头蛇详细教程(5分钟内快速学会)
  19. 免疫佐剂CpG ODN说明——艾美捷CpG ODN 方案
  20. 6-4 输出月份英文名 (15分)

热门文章

  1. 算法 64式 7、搜索算法整理_第2部分_16到30题
  2. 淘宝精准库存接口获取商品ID下所有的sku精准库存
  3. 欢迎来到北工大换书网
  4. 湛江各县市区5G建设计划已明确,共计7460座5G基站
  5. 签名证书keystore,jks,pk8,x509.pem
  6. Augment Reality(AR)现实增强的原理
  7. 大数据运作原理是什么?
  8. 广汽丰田-“饮水思源”活动专题网站
  9. 【MIGO收货A01,R05外向交货】BAPI_GOODSMVT_CREATE 【MB01】
  10. php opcahe的弊端