题号 标题 已通过代码 通过率 团队的状态
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相关推荐

  1. 2021牛客暑期多校训练营1, 签到题DFBG

    2021牛客暑期多校训练营1 题号 标题 已通过代码 通过率 团队的状态 A Alice and Bob 点击查看 1365/5586 通过(博弈论-打表) B Ball Dropping 点击查看 ...

  2. “蔚来杯“2022牛客暑期多校训练营10补题

    H  Wheel of Fortune 题意 有两个人在打炉石,一方转动了尤格萨隆的命运之轮触发了炎爆选项.双方英雄的血量分别为A和B,双方场面的血量分别为ai和bi,问A获胜的概率. 思路 将代码分 ...

  3. 2021牛客暑期多校训练营

    2021牛客暑期多校训练营1 A- Alice and Bob /* 博弈问题 两堆石头,每人每次从其中一堆拿k(k>0)个, 同时从另一堆拿s*k个(s>=0),不能进行操作的即失败 * ...

  4. 2021牛客暑期多校训练营2,签到题CDFKI

    2021牛客暑期多校训练营2 题号 标题 已通过代码 通过率 团队的状态 A Arithmetic Progression 点击查看 6/72 未通过 B Cannon 点击查看 34/104 未通过 ...

  5. 【训练题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 ...

  6. 2021牛客暑期多校训练营7

    2021牛客暑期多校训练营7 文章目录 2021牛客暑期多校训练营7 F:xay_loves_trees 解释 代码 H:xay_loves_count 解释 代码 I:xay_loves_or 解释 ...

  7. 2021牛客暑期多校训练营1 赛后总结

    比赛名称: 2021牛客暑期多校训练营1 比赛时间: 2021年7月17日 12:00 - 17:00 比赛结果: 3/11 自我总结: 这场比赛应该算是这个假期的第二场团队赛了, 之前打过一个比较简 ...

  8. 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)

    2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy​坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...

  9. 训练实录 | 2021牛客暑期多校训练营2

    2021牛客暑期多校训练营2 传送门 C - Draw Grids solved by oye. 00:22:07(+) 题意: 给n,m两个数,表示有n行点和m列点,已知每次只能连两个相邻的点(斜的 ...

最新文章

  1. 【学习笔记】超简单的多项式除法(含完整证明)
  2. 简明 Python 编程规范v2
  3. Java IO 流 设计模式
  4. 你还在担任“消防队员”的角色么?
  5. expr命令 linux,Shell expr命令进行整数计算的实现
  6. Java高全级别灰色_想问下用过JAVACV的大兄弟,为啥我这边抽取图片总是有灰色图片...
  7. Java面试之阻塞队列
  8. 机器学习EPD:概率密度估计
  9. Atitit. C# java 的api 目录封装结构映射总结
  10. 树莓派crt安装中文字库和中文输入法
  11. vue模板解析——源码演示
  12. nebula模拟器_Nebula街机模拟器使用方法 Nebula街机模拟器怎么用
  13. JDK-8274609 JEP 421: Deprecate Finalization for Removal
  14. 基于 yolo_v5 训练识别人物
  15. [SPRD CAMERA] 4 HAL Camera open流程一
  16. 动态规划从入门到放弃【1】
  17. 解决Fiddler不能抓包问题
  18. VBA小模板,一个不放回的抽奖用的例子
  19. 2的0次方为什么等于1?
  20. 【CSDN博客管理】CSDN写博客去水印技巧

热门文章

  1. 面向对象举例(一) —— 顶点(vertex)、边(edge)与图(graph)
  2. 算法 Tricks(五)—— 二进制逻辑运算
  3. Python Tricks(六)—— 删除一个可迭代序列中等于某值的全部元素
  4. windows dos 命令
  5. python 遍历文件夹下文件修改并保存_利用python完成自动化的任务之遍历文件夹修改文件之后并保存备份...
  6. Java char jdk_java学习系列之二---字符串(char.String.StringBuilder以及StringBuffer)
  7. python三大圣经-读书分享全网学习资源大合集,推荐Python学习手册等三本书「01」...
  8. 没有计算机基础可以学python-零基础,没有编程和计算机基础,究竟该怎么自学python?...
  9. python界面-(八)Python 图形化界面设计
  10. python有道-Python调用有道词典翻译