P8301 [CoE R4 A/Stoi2041] 娘子

题意

给你两个 0,1 序列 a,b,你要把 a 变成 b

你可以翻转任意 ai,之后把 a 任意排列。

问最少翻转几个 ai

思路

可以看出,一个 0,1 序列无论怎么排列,0,1 的个数都不变。

所以,翻转任意 ai 之后, a,b1 的个数一定相等。

也就是说,如果 a1 不够,就翻转一些 0,否则翻转一些 1

无论哪种情况,翻转次数都是 a,b 初始时 1 的个数之差。

代码

注意 abs(std::size_t) 的调用有歧义,要手动转成 abs(int)

#include <iostream>
#include <bitset>
using namespace std;
int main()
{
    int n;bitset<1000> a, b;cin >> n >> a >> b;
    return cout << abs(int(a.count() - b.count())), 0;
}
posted @   Jijidawang  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示