浙江省赛 ZOJ - 4033
题意:
第一行给出T代表有几个测试样例,
第二行给出n代表有几个人,
第三行给出一个由0和1组成的字符串,0代表女生,1代表男生。
并且第i个人有i个宝石。
现在要把这些人分为四组,G1 G2 两组是女生组,G3 G4两组是男生组。
分配后要满足 (G1+G3)的宝石 ==(G2+G4)的宝石
然后输出这些人被分配到哪一组的字符串。
如果有多个结果随便哪一个都行,如果没有结果输出-1。
思路:
首先把所有宝石的总和判断一下,看看是偶数还是奇数,如果是奇数肯定分不均,直接输出-1.
然后把宝石总和分一半,先给G1和G3组分配人。
也就是从第n个人开始分配组,如果G1和G3分够了宝石的一半,那剩下的就都是G2和G4的了。
#include<iostream>
#include<algorithm>
#include<sstream>
#include<string>
using namespace std;
typedef long long ll; int T;
int main()
{
cin >> T;
while (T--)
{
ll n;
ll half;
ll sum;
string num;
string ans; cin >> n;
ans.resize(n, ' ');//这个很重要,重新分配了答案字符串的大小,方便分配组
cin >> num; sum = n * (n + 1) / 2;//宝石的总和
if (sum & 1) { cout << -1 << endl; continue; }//如果是奇数就直接输出-1 half = sum / 2;//宝石分一半
for (int i = n; i >= 1; i--){//从后面开始分
if (half <= n && ans[half - 1] == ' '){//half<=n意味着可以直接从中挑人分组了
if (num[half - 1] == '1') {
ans[half - 1] = '3';
}
else {
ans[half - 1] = '1';
}
break;
}
half -= i;//表示已经分配掉这个人了
if (num[i - 1] == '1') {
ans[i - 1] = '3';
}
else{
ans[i - 1] = '1';
}
} for (int i = n; i >=1; i--){
if (ans[i - 1] == ' '){
if (num[i - 1] == '1') {
ans[i - 1] = '4';
}
else {
ans[i - 1] = '2';
}
}
}
cout << ans << endl;
}
return 0;
}
浙江省赛 ZOJ - 4033的更多相关文章
- CONTINUE...? ZOJ - 4033
CONTINUE...? ZOJ - 4033 题解:先计算一下总数sum是否是偶数,如果不是则不能分出来,如果是则从后面开始分,先把人分到1.3组,分完sum / 2这些人,如果恰好能够分成零,那么 ...
- ZOJ 3879 Capture the Flag 15年浙江省赛K题
每年省赛必有的一道模拟题,描述都是非常的长,题目都是蛮好写的... sigh... 比赛的时候没有写出这道题目 :( 题意:首先输入4个数,n,q,p,c代表有n个队伍,q个服务器,每支队伍的初始分数 ...
- ZOJ 3872 Beauty of Array DP 15年浙江省赛D题
也是一道比赛时候没有写出来的题目,队友想到了解法不过最后匆匆忙忙没有 A 掉 What a pity... 题意:定义Beauty数是一个序列里所有不相同的数的和,求一个序列所有字序列的Beauty和 ...
- ZOJ 3781 - Paint the Grid Reloaded - [DFS连通块缩点建图+BFS求深度][第11届浙江省赛F题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3781 Time Limit: 2 Seconds Me ...
- ZOJ 3780 - Paint the Grid Again - [模拟][第11届浙江省赛E题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780 Time Limit: 2 Seconds Me ...
- ZOJ 3777 - Problem Arrangement - [状压DP][第11届浙江省赛B题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3777 Time Limit: 2 Seconds Me ...
- 2017浙江省赛 H - Binary Tree Restoring ZOJ - 3965
地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3965 题目: iven two depth-first-search ...
- 2017浙江省赛 E - Seven Segment Display ZOJ - 3962
地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3962 题目: A seven segment display, or ...
- 2017浙江省赛 D - Let's Chat ZOJ - 3961
地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3961 题目: ACM (ACMers' Chatting Messe ...
随机推荐
- UVA - 1647 Computer Transformation(计算机变换)(找规律)
题意:初始串为一个1,每一步会将每个0改成10,每个1改成01,因此1会依次变成01,1001,01101001,……输入n(n<=1000),统计n步之后得到的串中,"00" ...
- Python风格规范分享
今天给大家分享Python 风格规范,以下代码中 Yes 表示推荐,No 表示不推荐. 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 每行不超过80个字符 以下情况除外: 长的 ...
- event recorder 学习手记
#define EventStopA(slot) EventRecord2 (0xEF20U+EventLevelError+((slot) & 0xFU), ((uint32_t) __FI ...
- 判断苹果和安卓端或者wp端
window.onload = function() { var u = navigator.userAgent; if(u.indexOf('Android') > -1 || u.index ...
- 18 12 29 css background
background属性 属性解释 background属性是css中应用比较多,且比较重要的一个属性,它是负责给盒子设置背景图片和背景颜色的,background是一个复合属性,它可以分解成如下几个 ...
- mariabd mysql升级mariadb
还有错误 [root@localhost /]# mysqldump --all-databases --user=root --password --master-data > backupd ...
- MySQL实现免密登录和数据库无法启动问题
1. 进入MySQL安装的文件夹,打开my.ini配置文件,打开方式参考:https://www.cnblogs.com/leslie12956/p/11842956.html 2. 停止MysSQL ...
- python期末考试复习
期末考试复习 补修的python跟着大一一起学,考试肯定不会出难,于是就敲了一些代码,把他们放到博客上,来记录一下 代码都是一段一段的,且python代码不是很多,所以我都写到了一个文件里,作为练习 ...
- 《打造扛得住的MySQL数据库架构》第4章 MySQL数据库结构优化
4-1 数据库结构优化介绍 良好的数据库逻辑设计和物理设计是数据库获得高性能的基础. 1.减少不必要的数据冗余. 2.尽量避免数据维护中出现更新,插入和删除异常. 插入异常:如果表中的某个实体随着另一 ...
- Django2.0——Form组件简单总结
Django提供了一个Form组件来配和前端的表单进行使用,Form有两个强大的功能,分别是生成HTML代码和验证数据的合法性.通常我们不会用其第一个功能,因为前端的设计可以做出更加精美且多样的表单页 ...