iis做网站跳转,海东市网站建设,模拟ip访问网站,软文推广代理平台一、题目
1、题目描述 2、输入输出
2.1输入 2.2输出 3、原题链接
1138B - Circus 二、解题报告
1、思路分析
设第一组会小丑和杂技的人数分别为x1, y1
第二组会小丑和杂技的人数分别为x2, y2
显然根据要求有#xff1a;
x1 y2
x1 x2 x2 y2
上式说明第二组每…一、题目
1、题目描述 2、输入输出
2.1输入 2.2输出 3、原题链接
1138B - Circus 二、解题报告
1、思路分析
设第一组会小丑和杂技的人数分别为x1, y1
第二组会小丑和杂技的人数分别为x2, y2
显然根据要求有
x1 y2
x1 x2 x2 y2
上式说明第二组每个人会的技能个数和 为 会小丑的总人数
贡献来自第二组两种都会的人数只会一种的人数
那么我们枚举两种都会的人数就可以得到只会一种的人数从而得到两种都不会的人数
然后检查三个人数是否合法即可
2、复杂度 时间复杂度 O(N)空间复杂度O(N) 3、代码详解
#include bits/stdc.h
using i64 long long;
using i128 __int128;
using PII std::pairint, int;
const int inf 1e9 7, P 1e9 7;
/*x1/y1 x2/y2x1 y2x1 x2 y2 x2
*/
void solve() {int n;std::cin n;std::string s1, s2;std::cin s1 s2;int tot 0;std::vectorstd::vectorint cnt(3);for (int i 0; i n; i )cnt[(s1[i] ^ 48) (s2[i] ^ 48)].push_back(i 1), tot (s1[i] ^ 48);for (int i 0; i cnt[2].size(); i) {int j tot - i * 2;if (j 0 j cnt[1].size() n / 2 - i - j 0 n / 2 - i - j cnt[0].size()) {for (int k i; k cnt[2].size(); k) std::cout cnt[2][k] ;for (int k j; k cnt[1].size(); k) std::cout cnt[1][k] ;for (int k n / 2 - i - j; k cnt[0].size(); k) std::cout cnt[0][k] ;return;}}std::cout -1;
}int main(int argc, char** argv) {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);int _ 1;// std::cin _;while (_ --)solve();return 0;
}