Codeforces Round #545 (Div. 2)B. Circus(思维)

2024-02-11 02:32

本文主要是介绍Codeforces Round #545 (Div. 2)B. Circus(思维),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:http://codeforces.com/contest/1138/problem/B

题意:给你两列01串,从第一列中挑出一些0和1,并且下标只能用一次,也就是在第一列挑下标为1的数第二列就不能用了,最终挑选n/2个数,并且使第一列1的个数和第二列相等,输出第一列挑选数的下标,如果不能输出-1。

思路:挑选第一列为1第二列为0的数相当于第一列+1,挑选第一列为0第二列为1的数相当于第二列-1,挑选第一列第二列都为1的相当于第二列-2,然后暴力枚举即可。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100000;
int n;
char s[maxn + 10], t[maxn + 10];
vector<int> a, b, c, d;
int main()
{scanf("%d", &n);scanf("%s%s", s + 1, t + 1);for(int i = 1; i <= n; ++i)if(s[i] == '0' && t[i] == '0') a.push_back(i);else if(s[i] == '1' && t[i] == '0') b.push_back(i);else if(s[i] == '0' && t[i] == '1') c.push_back(i);else if(s[i] == '1' && t[i] == '1') d.push_back(i);for(int i = 0; i <= (int)b.size(); ++i)for(int j = 0; j <= (int)d.size(); ++j){int s = (int)c.size() + (int)d.size() - i - 2 * j;//第二列多出的1的个数if(s >= 0 && s <= (int)c.size()){int all = i + s + j;int k = n / 2 - all; //不够n/2用0,0补齐if (k >= 0 && k <= (int)a.size()){for (int p = 0; p < k; ++p) printf("%d ", a[p]);for (int p = 0; p < i; ++p) printf("%d ", b[p]);for (int p = 0; p < s; ++p) printf("%d ", c[p]);for (int p = 0; p < j; ++p) printf("%d ", d[p]);return 0;}}}printf("-1");
}

 

这篇关于Codeforces Round #545 (Div. 2)B. Circus(思维)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698606

相关文章

如何突破底层思维方式的牢笼

我始终认为,牛人和普通人的根本区别在于思维方式的不同,而非知识多少、阅历多少。 在这个世界上总有一帮神一样的人物存在。就像读到的那句话:“人类就像是一条历史长河中的鱼,只有某几条鱼跳出河面,看到世界的法则,但是却无法改变,当那几条鱼中有跳上岸,进化了,改变河道流向,那样才能改变法则。”  最近一段时间一直在不断寻在内心的东西,同时也在不断的去反省和否定自己的一些思维模式,尝试重

Codeforces 158B

很久没有刷题了,刚刚有小学弟问了这道题,AC之后贴上来吧。水~~~ #include <cstdio>#include <cmath>int main() {int n;while(scanf("%d", &n) != EOF) {int a = 0, b = 0, c = 0, d = 0;int arr[100001];for (int i = 0; i < n; ++

Codeforces April Fools Day Contest 2014(附官方题解)

Codeforces2014年愚人节的坑题。。。但还是感觉挺好玩的。。。 A. The Great Game time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Two teams mee

Codeforces April Fools Day Contest 2013

2013年愚人节的坑题。。。 A. Mysterious strings time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Input The input contains a sin

算法学习014 0-1背包问题 c++动态规划算法实现 中小学算法思维学习 信奥算法解析

目录 C++0-1背包 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、推荐资料 C++0-1背包 一、题目要求 1、编程实现 有 N 件物品和一个容量为 M的背包,每件物品有各自的价值且只能被选择一次,要求在有限的背包容量下,装入的物品总价值最大。 2、输入输出 输入描述:第一行输入两个整数,分别表示

常见数字化转型方案撰写的思维模式

通过这一段时间的学习和倾听,结合DAMA数据管理知识体系学习与项目实践,对大部分数据治理类项目、信息化建设和数字化转型项目的思维模式做了一些总结梳理,具体有如下四种,供参考。 一、方法1:结合环境六边形法 1.要点题,弄清楚问题是什么 2.目标原则有哪些,补充哪些 3.人员、组织、角色和责任是什么,需要调动哪些资源,他们的角色和责任分别是什么。 4.方法工具有哪些,发现问题,分析问题和解决

《世界上最伟大的50种思维方法》总结

思维方式要是不对,再多的努力也是徒劳。比努力更重要的是思维 好思路,千万条,本书以有趣的形式,分享了50种思维方式。这些好材料,不一定能包你当场见效,但有一点可以肯定,这些经典的思维方式,总有一朝,会让你饱尝甜头。 本文作者将50种思维方法分成了三大类:最经典的思维、最有效的思维以及最实用的思维等,具体内容如下: 最经典的思维 最有效的思维 最实用的思维

独孤思维:副业赚钱高深莫测,因为一大把人一贫如洗

其实做副业的秘诀。 很多博主已经讲过,而且都是免费的。 但是为什么,依旧很多人看了之后,没赚到钱。 除了执行力以外,还有一个非常致命的原因。 就是看懂了,却没法深切体会。 因为自己没有经历过,所以,无法通过表面的意思,去深刻理解底层逻辑。 什么意思呢? 比如,很多博主都已经讲过,获取流量,靠量取胜。 如何靠量? 每天不停发发发,写写写,坚持下去,就能获取流量。 很多人,之所以坚

大脑临界状态:探索思维背后的物理机制

在深度思考或创造性灵感的涌现时刻,个体常体验到一种介于混乱与有序之间的特殊心理状态。这种感受实则反映了大脑在认知过程中的临界状态,这是一种涉及复杂物理现象的心理活动表现。近期研究表明,大脑结构中存在着与临界性密切相关的物理特性,这为理解大脑功能提供了新的科学依据。 自然界的相变现象,如冰融化为水,为我们提供了一个理解大脑临界状态的直观比喻。在思考过程中,大脑神经元的活动模式经历类似的