2021牛客暑期多校训练营10,签到题FH
题号 标题 已通过代码 通过率 团队的状态
A Browser Games 点击查看 93/1498 未通过
B Child’s play 点击查看 0/8 未通过
C Dance Party 点击查看 10/343 未通过
D Diameter Counting 点击查看 26/73 未通过
E More Fantastic Chess Problem 点击查看 3/30 未通过
F Train Wreck 点击查看 699/2804 通过
G Game of Death 点击查看 41/103 未通过
H War of Inazuma (Easy Version) 点击查看 1272/3827 通过
I War of Inazuma (Hard Version) 点击查看 6/501 未通过
J Illuminations 点击查看 25/335 未通过
K Walking 点击查看 3/49 未通过
H War of Inazuma
题意:
- 定义n维超立方体有2^n个点,编号[0, 2^n-1], 点i和j相邻当且仅当2进制下仅有一位不同。
- 给出n,求构造长为2^n的01序列代表2^n个点,0表示抵抗军,1表示将军军,满足相邻的一侧不能大于sqrt(n),。
思路:
- 可以发现n维超立方体是一个二分图,直接按照二进制表示中1出现次数的奇偶
性进行黑白染色即可,时间复杂度O(2^n*n)
#include<bits/stdc++.h>
using namespace std;
int main(){int n; scanf("%d", &n);for(int i = 0; i < (1<<n); i++) //[0,2^n)printf("%d",__builtin_popcount(i)&1);//返回输入数据二进制中1的个数return 0;
}
F Train Wreck
题意:
- 给出长为2n的括号序列,()分别表示放入站台和拿出,以及n辆火车的颜色。
- 求构造一个放入序列,满足不存在同一时刻站台内的颜色序列相同
思路:
- 将栈操作视为树,要求转化为给每一个节点染色,使得从根到每一个节点的链所构
成的颜色序列两两不同。注意到两个都在第i 层的节点,如果它们的父亲不同,则从根
到它们父亲的链所构成的颜色序列不同,这使得从根到它们的链所构成的颜色序列一定
不同。(因为删去序列最后一项后得到的序列不同) - 因此,条件可以转化为每个点的k个儿子颜色互不相同。对于一个节点,假设其有k 个儿子,我们选取剩余火车数最多的k 个颜色对应上去即可。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;vector<int>G[maxn];
int fa[maxn], tot=1;
int a[maxn], ans[maxn];int main(){int n; string s; cin>>n>>s;int p = 1;for(char ch : s){//建树if(ch=='('){G[p].push_back(++tot);fa[tot] = p;p = tot;}else{p = fa[p];}}for(int i = 1; i <= n; i++){int x; cin>>x; a[x]++;}priority_queue<pair<int,int> >q;for(int i = 1; i <= n; i++)q.push({a[i],i});for(int i = 1; i <= tot; i++){ //枚举每个点vector<pair<int,int> >vc; //备个份for(int j = 0; j < G[i].size(); j++){//每个点的k个儿子颜色互不相同auto p = q.top(); q.pop();vc.push_back(p);ans[G[i][j]] = p.second;//剩余火车数最多的k个颜色对应上去即可if(p.first==0){cout<<"NO\n"; return 0;}}for(auto p : vc){p.first--; q.push(p);}}cout<<"YES\n";for(int i = 2; i <= n+1; i++)cout<<ans[i]<<" ";return 0;
}
- 对于序列,每次放入会产生一个新的序列,我们用 [序列长度(链的长度), 序列最后一个元素放入时刻(即父亲)] 表示当前序列的状态,如果前面出现过这个序列,那就把新时刻加入末位,否则新建序列。
- 对于颜色,每次从当前剩余最多的开始取,每种颜色取一个,取出后按照顺序填入序列即可,可以用优先队列维护当前每种颜色的个数。
//比赛
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;map<int,int>ma;
map<pair<int,int>,int>mp;
vector<int>vc[maxn];
int ans[maxn];int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n; string s; cin>>n>>s;for(int i = 1; i <= n; i++){int x; cin>>x; ma[x]++;}stack<int>stk;stk.push(0);int t = 0, y = 0;for(char ch : s){if(ch=='('){pair<int,int>p = make_pair(stk.size(), stk.top());if(!mp[p])mp[p]=++t;vc[mp[p]].push_back(++y);stk.push(y);}else{stk.pop();}}priority_queue<pair<int,int>>q;for(auto i: ma)q.push({i.second, i.first});for(int i = 1; i <= n; i++){queue<pair<int,int> >nq;for(int x : vc[i]){if(q.empty()){cout<<"NO\n"; return 0; //颜色不够了}auto p = q.top(); q.pop();if(p.first-1>0)nq.push({p.first-1,p.second});ans[x] = p.second;}while(!nq.empty())q.push(nq.front()),nq.pop();}cout<<"YES\n";for(int i = 1; i <= n; i++)cout<<ans[i]<<" ";return 0;
}
2021牛客暑期多校训练营10,签到题FH相关推荐
- 2021牛客暑期多校训练营1, 签到题DFBG
2021牛客暑期多校训练营1 题号 标题 已通过代码 通过率 团队的状态 A Alice and Bob 点击查看 1365/5586 通过(博弈论-打表) B Ball Dropping 点击查看 ...
- “蔚来杯“2022牛客暑期多校训练营10补题
H Wheel of Fortune 题意 有两个人在打炉石,一方转动了尤格萨隆的命运之轮触发了炎爆选项.双方英雄的血量分别为A和B,双方场面的血量分别为ai和bi,问A获胜的概率. 思路 将代码分 ...
- 2021牛客暑期多校训练营
2021牛客暑期多校训练营1 A- Alice and Bob /* 博弈问题 两堆石头,每人每次从其中一堆拿k(k>0)个, 同时从另一堆拿s*k个(s>=0),不能进行操作的即失败 * ...
- 2021牛客暑期多校训练营2,签到题CDFKI
2021牛客暑期多校训练营2 题号 标题 已通过代码 通过率 团队的状态 A Arithmetic Progression 点击查看 6/72 未通过 B Cannon 点击查看 34/104 未通过 ...
- 【训练题66:状压暴力 | 子集dp】Greater Integer, Better LCM | 2021牛客暑期多校训练营5
题意 Greater Integer, Better LCM | 2021牛客暑期多校训练营5 给你 a,b,ca,b,ca,b,c ,你需要找到一对 x,yx,yx,y ,满足: lcm(a+x,b ...
- 2021牛客暑期多校训练营7
2021牛客暑期多校训练营7 文章目录 2021牛客暑期多校训练营7 F:xay_loves_trees 解释 代码 H:xay_loves_count 解释 代码 I:xay_loves_or 解释 ...
- 2021牛客暑期多校训练营1 赛后总结
比赛名称: 2021牛客暑期多校训练营1 比赛时间: 2021年7月17日 12:00 - 17:00 比赛结果: 3/11 自我总结: 这场比赛应该算是这个假期的第二场团队赛了, 之前打过一个比较简 ...
- 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)
2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...
- 训练实录 | 2021牛客暑期多校训练营2
2021牛客暑期多校训练营2 传送门 C - Draw Grids solved by oye. 00:22:07(+) 题意: 给n,m两个数,表示有n行点和m列点,已知每次只能连两个相邻的点(斜的 ...
最新文章
- 【学习笔记】超简单的多项式除法(含完整证明)
- 简明 Python 编程规范v2
- Java IO 流 设计模式
- 你还在担任“消防队员”的角色么?
- expr命令 linux,Shell expr命令进行整数计算的实现
- Java高全级别灰色_想问下用过JAVACV的大兄弟,为啥我这边抽取图片总是有灰色图片...
- Java面试之阻塞队列
- 机器学习EPD:概率密度估计
- Atitit. C# java 的api 目录封装结构映射总结
- 树莓派crt安装中文字库和中文输入法
- vue模板解析——源码演示
- nebula模拟器_Nebula街机模拟器使用方法 Nebula街机模拟器怎么用
- JDK-8274609 JEP 421: Deprecate Finalization for Removal
- 基于 yolo_v5 训练识别人物
- [SPRD CAMERA] 4 HAL Camera open流程一
- 动态规划从入门到放弃【1】
- 解决Fiddler不能抓包问题
- VBA小模板,一个不放回的抽奖用的例子
- 2的0次方为什么等于1?
- 【CSDN博客管理】CSDN写博客去水印技巧
热门文章
- 面向对象举例(一) —— 顶点(vertex)、边(edge)与图(graph)
- 算法 Tricks(五)—— 二进制逻辑运算
- Python Tricks(六)—— 删除一个可迭代序列中等于某值的全部元素
- windows dos 命令
- python 遍历文件夹下文件修改并保存_利用python完成自动化的任务之遍历文件夹修改文件之后并保存备份...
- Java char jdk_java学习系列之二---字符串(char.String.StringBuilder以及StringBuffer)
- python三大圣经-读书分享全网学习资源大合集,推荐Python学习手册等三本书「01」...
- 没有计算机基础可以学python-零基础,没有编程和计算机基础,究竟该怎么自学python?...
- python界面-(八)Python 图形化界面设计
- python有道-Python调用有道词典翻译