B.Binary Tree

题意:给你一棵二叉树。有两个游戏者,回合制,他们每次可以删去这棵二叉树中的一棵满二叉树。求最后谁赢。

解法:每一棵满二叉树有奇数个节点,那么每次游戏者只能删去奇数个节点,所以直接通过给定的二叉树节点的奇偶就可以判断是谁赢了。

#include<cstdio>
#include<cstring>
using namespace std; int main() {
int T; scanf("%d",&T);
while(T--) {
int n; scanf("%d",&n);
for(int i=0;i<n-1;i++) {
int u,v; scanf("%d%d",&u,&v);
}
if(n&1) printf("Alice\n");
else printf("Bob\n");
}
return 0;
}
D.Defining Labels

题意:大模拟

做法:大模拟

附队友代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<stack>
#include<vector>
#include<queue>
#include<set>
#include<algorithm>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
#define swap(a,b) (a=a+b,b=a-b,a=a-b)
#define memset(x,y) memset(x,y,sizeof(x))
#define ll long long
using namespace std;
int t;
int k,x,a[15],ans[100];
int main() {
cin>>t;
while(t--) {
cin>>k>>x;
int tot=0;
a[1]=10-k;
for(int i=2; i<=k; i++)a[i]=a[i-1]+1;
while(x) {
ans[++tot]=a[(x-1)%k+1];
if(x%k==0) x/=k,x--;
else x/=k;
}
while(tot--) cout<<ans[tot+1];
cout<<endl;
}
}
E.Erasing Numbers

题意:给你一个长度为奇数排列,你每次可以选这个排列中连续的三个数,删去这三个数中最大值和最小值。这样操作直到排列只剩下一个数。你需要求出排列中每个数是否有可能可以被保留到最后。

做法:枚举每一个数是否能被留下。我们需要把大于他的数和小于他的数删到个数相等,这样这个数一定可以留下来。假如这个数小于 \(\frac{n+1}{2}\) ,那我们就删连续三个大于它的数,反过来就删连续三个小于它的数。

假设现在这个数小于 \(\frac{n+1}{2}\) ,当前是大大小这样排,相当于一个大,而大小这样排,相当于抵消了。最后判断一下最大可以删的次数和到平衡时应该删的次数大小关系即可。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define IL inline
#define ri register int const int N = 5000 + 5; int n;
int a[N]; int del(int l,int r,int pos,bool flag) {
int ret = 0,now = 0;
for(int i=l;i<=r;i++) {
if(!flag) {
if(a[i] > a[pos]) {
if(++now == 3) now = 1, ret++;
}
else if(--now == -1) now = 0;
}
else {
if(a[i] < a[pos]) {
if(++now == 3) now = 1, ret++;
}
else if(--now == -1) now = 0;
}
}
return ret;
} int main() {
int T; scanf("%d",&T);
while(T--) {
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
for(int i=0;i<n;i++) {
bool flag = false;
if( a[i] >= (n+1)/2 ) flag = true;
printf("%d",del(0,i-1,i,flag)+del(i+1,n-1,i,flag) >= abs((n+1)/2 - a[i]));
}
printf("\n");
}
return 0;
}
G.Game Design

题意:你需要构造一棵带点权的树,使得阻断这棵树从叶子节点到根的最小花费方案数为 K。

做法:第一反应构造二叉树,因为多叉树不好维护。然后想到二进制分解。假设有一棵树,我们让左子树为一直维护的东西,右子树用来乘 2(这里直接用两个点权都为 1 的点连成链即可)。然后就是如何控制每一位是 1 还是 0 了。假设 \(ans_i\) 数组为以 i 为根的子树切断它的最小花费,\(c_i\) 数组为每个点的点权,显然有

\[ans_i = \begin{cases}c_i,c_i < ans_{lch} + 1\\c_i+1,c_i = ans_{lch} + 1\\ans_{lch}+1,c_i > ans_{lch} + 1\end{cases}
\]

假设方案数数组为 \(d_i\) ,那么

\[d_i = \begin{cases}1,c_i < ans_{lch} + 1\\2 \cdot d_{lch} + 1,c_i = ans_{lch} + 1\\2 \cdot d_{lch},c_i > ans_{lch} + 1\end{cases}
\]

这样利用后两行,就可以二进制分解了。

我的代码很混乱(模拟的时候瞎写)

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define IL inline const int N = 1e5 + 3; int KK;
int cnt;
int a[N],pa[N],ans[N]; void build() {
int highbit;
for(int i=31;i>=0;i--) {
if(KK&(1<<i)) {
highbit = i;
break;
}
} cnt++;
a[cnt] = ans[cnt] = 1; for(int i=highbit-1;i>=0;i--) {
if(KK&(1<<i)) {
a[cnt+3] = ans[cnt] + 1;
}
else {
a[cnt+3] = ans[cnt] + 2;
}
ans[cnt+3] = ans[cnt] + 1;
a[cnt+1] = a[cnt+2] = 1;
pa[cnt] = cnt + 3;
pa[cnt+1] = cnt + 3;
pa[cnt+2] = cnt + 1;
cnt += 3;
}
pa[cnt] = 1;
a[1] = 1e9;
} int main() {
scanf("%d",&KK);
cnt = 1; fill(a,a+N,0); fill(pa,pa+N,0); fill(ans,ans+N,0);
build();
printf("%d\n",cnt);
for(int i=2;i<cnt;i++) printf("%d ",pa[i]);
printf("%d\n",pa[cnt]);
for(int i=1;i<cnt;i++) printf("%d ",a[i]);
printf("%d\n",a[cnt]);
return 0;
}

参考blog

https://blog.csdn.net/weixin_40524635/article/details/103580724

2019 香港区域赛 BDEG 题解的更多相关文章

  1. 2018-2019 ACM-ICPC 徐州区域赛 部分题解

    题目链接:2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest A. Rikka with Minimum Spanning Trees 题意: 给出一个随 ...

  2. ICPC2019上海区域赛 部分题解(正在更新)

    K. Color Graph 题意: 给定一个简单图,点个数<=16,删去部分边后,使得该图中无边数为奇数得环,问剩下的边数最大为多少? 思路: 如果一个图中无奇数边的环,那么这个图一定是个二分 ...

  3. 2019 ICPC 上海区域赛总结

    2019上海区域赛现场赛总结 补题情况(以下通过率为牛客提交): 题号 标题 已通过代码 通过率 我的状态 A Mr. Panda and Dominoes 点击查看 5/29 未通过 B Prefi ...

  4. 【2013南京区域赛】部分题解 hdu4802—4812

    上周末打了一场训练赛,题目是13年南京区域赛的 这场题目有好几个本来应该是我擅长的,但是可能是太久没做比赛了各种小错误代码写的也丑各种warusn trush搞得人很不爽 全场题之一的1002也没有想 ...

  5. 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...

  6. Comet OJ 2019 夏季欢乐赛题解

    Comet OJ 2019 夏季欢乐赛题解 我是来骗访问量的 A 完全k叉树 \(n\)个点的完全k叉树的直径. 直接做 B 距离产生美 直接做 C 烤面包片 \(n!!!\mod p\) 显然\(n ...

  7. 2019~2020icpc亚洲区域赛徐州站H. Yuuki and a problem

    2019~2020icpc亚洲区域赛徐州站H. Yuuki and a problem 题意: 给定一个长度为\(n\)的序列,有两种操作: 1:单点修改. 2:查询区间\([L,R]\)范围内所有子 ...

  8. ACM-ICPC 2019 山东省省赛总结

    五题手快拿银,不然拿铜,甚至不拿,从结果上来看拿了铜牌对第一年的我们来说算好的,也不算太好. 从拿奖后的第一天,我想写这篇博客,但是我忍了下来,那时候被喜悦冲昏了头脑,当 冷静下来,我开始打算写这篇博 ...

  9. UVALive 7146 (贪心+少许数据结构基础)2014acm/icpc区域赛上海站

    这是2014年上海区域赛的一道水题.请原谅我现在才发出来,因为我是在太懒了.当然,主要原因是我刚刚做出来. 其实去年我就已经看到这道题了,因为我参加的就是那一场.但是当时我们爆零,伤心的我就再也没有看 ...

  10. ICPC 2018 焦作区域赛

    // 2019.10.7 练习赛 // 赛题来源:2018 ICPC 焦作区域赛 // CF链接:http://codeforces.com/gym/102028 A Xu Xiake in Hena ...

随机推荐

  1. C#的基于.net framework的Dll模块编程(三) - 编程手把手系列文章

    继续这个系列的博文: 一.设置DLL类库信息: 在接解决方案资源管理器中选择该Dll程序集项目,鼠标右键,选择属性,打开窗口. 点击"程序集信息",打开并编辑该Dll程序集的相关信 ...

  2. Cron Job 表达式解析

    Cron Job 表达式解析 Redisant Toolbox 是一款面向开发者的多合一工具箱,超过30种常用的开发工具:精心设计,快速.高效:离线使用,尊重您的隐私. 目录 Cron Job 表达式 ...

  3. ASP.NET CORE 发布时不编译Views文件夹

    .net core 3.0正式版已经发布,目前整体相对来说已经稳定了,可以进行生产开发. 发布时默认情况下Views是直接编译成DLL文件(XXXXXX.Views.dll),日常开发维护过程中,经常 ...

  4. 设置Mysql数据库允许远程连接

    Mysql数据库用户权限设置 1.进入容器 docker exec -it mysql_test /bin/bash 注意:由于我是通过docker安装的数据库,所以在操作之前需要进入容器,直接安装在 ...

  5. 老外为了在MacBook上玩原神,让M1支持了所有iOS应用 | Github每周精彩分享第一期

    大家好,这里是每周更新的Github有趣项目分享,我是每周都在吃瓜的蛮三刀酱. 我会从Github热门榜里选出 高质量.有趣,牛B 的开源项目进行分享. 废话不多说,看看最近有什么有意思的Github ...

  6. SpringBoot3.1.5对应新版本SpringCloud开发(2)-Eureka的负载均衡

    Eureka的负载均衡 负载均衡原理 负载均衡流程 老版本流程介绍 当order-servic发起的请求进入Ribbon后会被LoadBalancerInterceptor负载均衡拦截器拦截,拦截器获 ...

  7. IPv6 — 子网划分

    目录 文章目录 目录 前文列表 IPv6 的子网划分 前文列表 <IPv6 - 网际协议第 6 版> <IPv6 - 地址格式与寻址模式> <IPv6 - 协议头> ...

  8. CodePen 的国内替代「笔.COOL」,一个功能完备、使用便捷的在线HTML/CSS/JS编辑器和作品分享平台

    笔.COOL,是一个最近在国内崭露头角的在线HTML/CSS/JS编辑器和作品分享平台. 笔.COOL 提供了一个在线的 HTML.CSS 和 JavaScript 代码编辑器.无需任何安装,你只需打 ...

  9. 推荐几款卓越的 .NET 开源搜索组件

    前言 在当今日益数据化的世界中,信息的检索和搜索功能对于各种应用来说变得至关重要. 无论是电子商务网站.企业资源规划系统.还是内容管理系统,高效的搜索功能都是提升用户体验.促进业务发展的关键. 因此, ...

  10. Instsrv.exe 与 Srvany.exe 安装Windows服务

    原理:Instsrv.exe可以给系统安装和删除服务 Srvany.exe可以让exe程序以服务的方式运行(Srvany只是exe注册程序的服务外壳,可以通过它让我们的程序以SYSTEM账户活动,随电 ...