航天基地规划建设局网站,奥明科技网页制作教程,战事新闻最新,模仿大型门户网站做ppt【题目链接】Circus 【题目分析】理解题意以后发现并没有什么思路#xff0c;没有什么算法能用#xff0c;这个时候就应该想到计算机解题的本质——暴力求解。相应的就要想到剪枝的条件#xff0c;肯定不能盲目的暴力求解。 总共有四种人#xff1a;00,01,10,11#xff0c…【题目链接】Circus 【题目分析】理解题意以后发现并没有什么思路没有什么算法能用这个时候就应该想到计算机解题的本质——暴力求解。相应的就要想到剪枝的条件肯定不能盲目的暴力求解。 总共有四种人00,01,10,11分别统计出数目c1,c2,c3,c4设第一个团体a1,a2,a3,a4,按照a3和a4进行暴力相应的可以求出b4,b2,a2,a1,分别判断是否合理一旦合理直接输出 代码
//借鉴大佬的代码
#includecstdio
#includecstring
#includealgorithm
#includeiostream
using namespace std;const int MAXN6000;
char a[MAXN],c[MAXN];
int n;
int cnt[10][10];int main()
{ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);scanf(%d,n);scanf(%s%s,c,a);memset(cnt,0,sizeof(cnt));for(int i0;in;i){cnt[c[i]-0][a[i]-0];}int a1,a2,a3,a4;int b1,b2,b3,b4;int flag0;for(a40;a4cnt[1][1];a4){for(a30;a3cnt[1][0];a3){b4cnt[1][1]-a4;//b3cnt[1][0]-a3;b2a3a4-b4;if(b20 || b2cnt[0][1]) continue;a2cnt[0][1]-b2;a1n/2-a4-a3-a2;if(a10 || a1cnt[0][0]) continue;flag1;break;}if(flag1) //忘记在这里退出循环一直wa。。。。break;}if(!flag){printf(-1);return 0;}for(int i0;in;i){if(a1 c[i]0 a[i]0) printf(%d ,i1),a1--;if(a2 c[i]0 a[i]1) printf(%d ,i1),a2--;if(a3 c[i]1 a[i]0) printf(%d ,i1),a3--;if(a4 c[i]1 a[i]1) printf(%d ,i1),a4--;}return 0;
}