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

题目大意:贼绕口的题目,就是给你两个字符串s1,s2,然后每一个人代表一列,第一列代表技能一每个人是否会,第二列代表技能2是否每个人会。然后1代表当前的技能这个人会,0代表不会。

然后让你安排这个n个人去两场演出,要求 第一场的技能一会的人数和第二场技能二会的人数是相同的,然后问你是否有合法的请况,如果有输出第一场派谁去。如果没有,输出-1.

具体思路:(首先四个for循环是肯定会超时的)。我们枚举1 1 和1 0 这两种情况。因为最终每个人都要上场,所以我们确定出第一场中派哪些人去。具体的判断方法:计算当前情况下,第二场中会技能二的人比当前的第一场中会技能一的人多多少人。然后再看一下第一场中会技能一的能不能补出这个空就行了,如果有就输出合法情况。

AC代码:

 #include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+;
vector<int>a;
vector<int>b;
vector<int>c;
vector<int>d;
char str1[maxn],str2[maxn];
int main()
{
int n;
scanf("%d",&n);
cin>>str1+;
cin>>str2+;
for(int i=;i<=n;i++){
if(str1[i]==''&&str2[i]=='')a.push_back(i);
else if(str1[i]==''&&str2[i]=='')b.push_back(i);
else if(str1[i]==''&&str2[i]=='')c.push_back(i);
else if(str1[i]==''&&str2[i]=='')d.push_back(i);
}
for(int i=;i<=b.size();i++){
for(int j=;j<=a.size();j++){
int tmp=a.size()+c.size()-j*-i;
if(tmp>=&&tmp<=c.size()){
int tmp1=i+j+tmp;
int tmp2=n/-tmp1;
if(tmp2>=&&tmp2<=d.size()){
for(int k=;k<tmp2;k++)printf("%d ",d[k]);
for(int k=;k<i;k++)printf("%d ",b[k]);
for(int k=;k<j;k++)printf("%d ",a[k]);
for(int k=;k<tmp;k++)printf("%d ",c[k]);
return ;
}
}
}
}
printf("-1\n");
}

Codeforces Round #545 (Div. 2)(B. Circus)的更多相关文章

  1. Codeforces Round #545 (Div. 1) 简要题解

    这里没有翻译 Codeforces Round #545 (Div. 1) T1 对于每行每列分别离散化,求出大于这个位置的数字的个数即可. # include <bits/stdc++.h&g ...

  2. CodeForces Round #545 Div.2

    A. Sushi for Two 代码: #include <bits/stdc++.h> using namespace std; ; ; int a[maxn], vis[maxn]; ...

  3. Codeforces Round #545 (Div. 2) D 贪心 + kmp

    https://codeforces.com/contest/1138/problem/D 题意 两个01串s和t,s中字符能相互交换,问最多能得到多少个(可交叉)的t 题解 即将s中的01塞进t中, ...

  4. Codeforces Round #545 (Div. 1) Solution

    人生第一场Div. 1 结果因为想D想太久不晓得Floyd判环法.C不会拆点.E想了个奇奇怪怪的set+堆+一堆乱七八糟的标记的贼难写的做法滚粗了qwq靠手速上分qwqqq A. Skyscraper ...

  5. Codeforces Round #545 (Div. 2) D

    链接:http://codeforces.com/contest/1138/problem/D 啊啊啊啊啊啊,自闭啊,比赛的时候判断条件 if(s1[i-1]=='0') aa++;写成了 if(s1 ...

  6. Codeforces Round #545 (Div. 2)(D. Camp Schedule)

    题目链接:http://codeforces.com/contest/1138/problem/D 题目大意:给你两个字符串s1和s2(只包含0和1),对于s1中,你可以调换任意两个字符的位置.问你最 ...

  7. Codeforces Round #545 (Div. 2) 题解

    题目链接 A. Sushi for Two 题意 在一个 01 序列中找出长为偶数的连续的一段使得它前一半和后一半内部分别相同,而前一半和后一半不同. \(2\le n\le 100\ 000\) 题 ...

  8. Codeforces Round #545 (Div. 2) E 强连通块 + dag上求最大路径 + 将状态看成点建图

    https://codeforces.com/contest/1138/problem/E 题意 有n个城市(1e5),有m条单向边(1e5),每一周有d天(50),对于每个城市假如在某一天为1表示这 ...

  9. Codeforces Round #545 (Div. 2) 交互 + 推公式

    https://codeforces.com/contest/1138/problem/F 题意 有一条长为t的链,一个长为c的环,定义终点为链和环相连环上的第一个点,现在有10个人在起点,你每次可以 ...

随机推荐

  1. Luogu P2519 [HAOI2011]problem a

    题目链接 \(Click\) \(Here\) \(DP\)神题.以后要多学习一个,练一练智商. 关键点在于把"有\(a_i\)个人分数比我高,\(b_i\)个人分数比我低"这句话 ...

  2. (排序的新方法)nyoj1080-年龄排序

    1080-年龄排序 内存限制:234MB 时间限制:2000ms 特判: No通过数:148 提交数:575 难度:0 题目描述: JXB经常向HJS炫耀他们家乡那里有多么多么好,但是HJS大牛从来对 ...

  3. Vue(基础七)_webpack使用工具(下)

    一.前言  1.webpack.config文件配置                                          2.webpack打包css文件                 ...

  4. Zookeeper 集群安装配置

    今天,栈长分享下 Zookeeper 的集群安装及配置. 下载 下载地址:http://zookeeper.apache.org/ 下载过程就不说了,我们下载了最新的zookeeper-3.4.11. ...

  5. Struts2中文件上传下载实例

    1.单文件上传 jsp页面: <!-- 单文件上传 --> <form action="Fileupload.action" method="post& ...

  6. Linux如何查看机器的配置信息

    Linux如何查看机器的配置信息 1.查看内存信息 cat /proc/meminfo [root@web ~]# cat /proc/meminfo MemTotal: kB MemFree: kB ...

  7. bzoj2434 fail树 + dfs序 + 树状数组

    https://www.lydsy.com/JudgeOnline/problem.php?id=2434 打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母.经阿狸研究发现, ...

  8. zTree基础

    zTree使用 zTree 是一个依靠 jQuery 实现的多功能 “树插件”, 而且拥有较好的浏览器兼容性,有着丰富的功能以及可以自定义样式,足以满足大部分业务的开发. 第一步先导入css及js文件 ...

  9. git lg 使用 转

    命令: git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yello ...

  10. 【openssl】利用openssl完成X509证书和PFX证书之间的互转

    利用openssl完成X509证书和PFX证书之间的互转 # OpenSSL的下载与安装: 1.下载地址: 官方网址—— https://www.openssl.org/source/ OpenSSL ...