2018 Petrozavodsk Winter Camp, Yandex Cup
A. Ability Draft
solved by RDC 60min start, 148 min AC, 1Y
题意:两只 Dota 队伍,每队 \(n\) 个英雄,英雄一开始无技能,他们需要按照给定的顺序在技能池中选技能,每个英雄需要恰选择 \(s\) 个普通技能 和 1 个终极技能,每个技能有强度值,双方都想最大化己方和对方强度值之差,双方都是明智的。
做法:注意到,每个英雄,要么选择最强的终极技能要么选择最强普通技能。考虑 DP,用 \(f[x][mask_1][mask_2]\) 表示,还有 \(x\) 个人没选技能,队伍 A 中 \(mask_1\) 中的人获得了终极技能,队伍 B 中 \(mask_2\) 中的人获得了终极技能,在此情况下队伍 A 和队伍 B 的极大分差。考虑到 \(f[x][mask_1][mask_2]\) 的转移,我们对拿终极技能还是普通技能进行决策,即可转移到 \(f[x+1][?][?]\)
C. Block, Stock and Two Smoking Galaxy Notes
solved by F0_0H 20min start, 57 min AC, 1Y
题意:(签到题)给定一个简单图,要求选定一个点为King,并且其他\(n-1\)个点有一个划分,使得每个点所属块的大小为1或2,并且满足每个块内联通,且至少存在一个点与King有边
做法:枚举King(\(度数 \geq \frac{n}{2}\)),然后对于其他\(n-1\)个点根据是否与King有边相连构建二分图,跑一遍匈牙利判断每个点是否有着落,如果可以,输出
F. Shuffle
solved by sdcgvhgj 267min AC, +4
题意 定义操作\(shuffle(s) = s_1s_3...s_{n-1}s_2s_4...s_n\),问最少进行多少次操作把s变换到t
做法 把此置换分成若干个独立的循环,设第i个循环把s变换到t的最小步数为\(a_i\),把t变换到t的最小步数为\(m_i\),于是有 \(ans\%m_i=a_i\),于是用KMP求出\(a_i\)和\(m_i\)再用扩展中国剩余定理求出ans即可。
证明:考虑第i个循环,
1.若用n步能从t变换到t,则一定有\(m_i|n\),若不满足,设\(x=n\%m_i\),则x步也可以从t变换到t,且\(x<m_i\),矛盾。(离散里群的最小生成元?)
2.若用n步能从s变换到t,那么可以看成先用\(a_i\)步从s变换到t,再用\(n-a_i\)步从t变换到t,于是 \(n\%m_i=a_i\)
G. Piecewise Linearity
solved by sdcgvhgj 117min AC, +1
题意 给一条折线,问能不能用\(f(x)=\sum_{i=1}^m\lambda_i|x-a_i|\)形状的函数来表示
做法 对于折线第i个点,有\(\lambda_i=(右侧斜率-左侧斜率)/2\),所以\(f(x)\)就确定了,判断是否满足即可。注意除斜率条件还有截距条件。
H. Sketch
solved by RDC 213min start, 256 min AC, +4
题意 构造长度为 \(n\) 的序列 \(b[]\), \(1\leq b_i \leq m\),LIS 为 \(k\),对于 \(1\leq i \leq k\)若 \(a_i \neq -1\),长度为 \(i\) 的不降子序列结尾元素极小值为 \(a_i\)。
做法 考虑没有 -1 的 case,有解的一个必要条件是 \(a_i\) 不降,先不考虑长度为 \(n\) 的限制,那么有
- 我们可以构造长度为 \(k\) 的序列,且 \(k\) 是下界。
- 在序列中,\([a_k,m+1)\) 中的每个元素至多出现 \(k\) 次,\([a_{k-1},a_k)\) 中的每个元素至多出现 \(k-1\) 次 ..... \([a_1,a_2)\) 中的每个元素至多出现 1 次,根据这个性质,序列长度存在一个上界 \((a_2-a_1)+2*(a_3-a_2)+....+k*(m+1-a_k)\) = \(k*(m+1) - \sum_{i=1}^{k}a_i\)
构造方法:
- 写下序列 \([a_1,a_2,a_3,....,a_k]\)
- 在序列前添上,\([1个a_2,1个a_2-1,.....,1个a_1+1]\)
- 在序列前添上,\([2个a_3,2个a_3-1,.....,2个a_2+1]\)
- 在序列前添上,\([3个a_4,3个a_4-1,.....,3个a_3+1]\)
以此类推,因此我们证明了,下界到上界中的每个长度都是可以构造出来的。【介值定理既视感】
考虑有 -1 的 Cas,我们贪心地给 \(a_i=-1\) 的位置赋值使得上界极大即可。
I. Piecewise Linearity
upsolved by sdcgvhgj
题意 n个大小为k的栈,每次给你栈顶元素,你输出x,它将栈顶>=x或<=x的元素pop出来,在50次以内把栈清空
做法 按栈的剩余个数越多优先级越高的想法,每次按栈顶元素排序,选一个位置使左边和右边的\(\sum size(i)\)尽可能接近,WA,改成使\(\sum 2^{size(i)}\)尽可能接近,AC。
K. Hiding a Tree
solved by sdcgvhgj 40min start, 64min AC, +2
题意 给定一棵树,并且其中某些节点可以将其编号改为\([1,1e9]\)的任意值,两节点编号不能相同,你需要使序列 \(n,u_1,v_1,u_2,v_2...u_n,v_n\)异或和为0
做法 只有度数为奇数的点的标号会影响异或和,对这样的点的个数进行讨论即可。注意一个点时如果需要改成的标号冲突但那个点可以进行修改也是可以的,有两个点但需要这两个点标号相等是不可以的,大于两个点一定可以
2018 Petrozavodsk Winter Camp, Yandex Cup的更多相关文章
- 2019 Petrozavodsk Winter Camp, Yandex Cup C. Diverse Singing 上下界网络流
建图一共建四层 第一层为N个歌手 第二层为{pi,li} 第三层为{si,li} 第四层为M首歌 除了S和第一层与第三层与T之间的边为[1,INF] 其他边均为[0,1] #include<bi ...
- Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet
一个地图上有若干障碍,问允许出现一个障碍的最大子矩形为多大? 最大子矩形改编 #include<bits/stdc++.h> using namespace std; #define re ...
- Petrozavodsk Winter Camp, Day 8, 2014, Ship
$dp(i,j)$表示i-j这段还没运走时的状态,包括 运输了多少次,还剩多少空间 每次枚举运输左边还是右边转移 #include <bits/stdc++.h> #define rep( ...
- Petrozavodsk Winter Camp, Day 8, 2014, Fine Brochures
1的个数-块的个数+多减的个数+flag 多减的只会在一个循环末尾出现 #include <bits/stdc++.h> using namespace std; #define rep( ...
- Petrozavodsk Winter Camp, Day 8, 2014, Second Trip
给你一棵树,每次询问一个(a,b),问有多少有路径与a-b没有交集 找lca #include <bits/stdc++.h> using namespace std; #define r ...
- Petrozavodsk Winter Camp, Day 8, 2014, Mosaic
给你三个数字a,b,c,让你用1-m的数字凑出来 结论:有2个1和2个2肯定凑不出来,然后就搜索 #include <bits/stdc++.h> using namespace std; ...
- Petrozavodsk Winter Camp, Day 8, 2014, Rectangle Count
给一个n*m的格点图,问其中有多少个矩形? $ \sum_{x=1}^{nm} \sum_{ab=x} [a + b \leq n](n - a - b + 1)\sum_{cd=x} [c + d ...
- Petrozavodsk Winter Camp, Andrew, 2014, Dichromatic Trees
条件: 1:每个红色节点的儿子都是黑色节点 2.每个叶子到根路径上的黑点数相等,等于某个常数,称作树的black height 求给定black height和节点数的符合条件的方案数 $black_ ...
- Petrozavodsk Winter Camp, Andrew, 2014, Bipartite Bicolored Graphs
由i个点和j个点组成的二分图个数为 $3^{ij}$,减去不联通的部分得到得到由i,j个点组成的联通二分图个数 $g_{i,j} = 3_{ij} - \sum_{k=1}^i \sum_{l=0}^ ...
随机推荐
- Android Studio 'AIDL is missing' 且 不识别R文件
最近刚开始用Android Studio,出的问题还真不少.昨天不知为何不能新建项目了,这两天重装了几次才搞定. 可又出了这个问题: 原因:Compile Sdk Version和Build Tool ...
- java的jar打包工具的使用
java的jar打包工具的使用 java的jar是一个打包工具,用于将我们编译后的class文件打包起来,这里面主要是举一个例子用来说明这个工具的使用. 在C盘下的temp文件夹下面: ...
- S2:.net
1.net框架结构 主要包含公共语言运行时(CLR)和框架类库(.NET Framework 类库 ,FCL) 2.CLR 1.对于一个将要面向.NET平台进行开发的人来说,了解一下.NET平台的整 ...
- unimrcp-voice-activity语音检测
研究 unimrcp有一段时间了,其中unimrcp voice acitve的算法,是遭到大家频繁吐槽.今天我们简单的介绍一下unimrcp voice activity 的这个简单粗暴的算法: u ...
- 解决:Navicat连接不上MySQL 8.0
转载自 https://www.cnblogs.com/shiysin/p/shiysin.html Navicat连接不上,总是报错1251: 原因是MySQL8.0版本的加密方式和MySQL5.0 ...
- Danjgo学习笔记(一)
## 创建项目: 1. 通过命令行的方式:首先要进入到安装了django的虚拟环境中.然后执行命令: ``` django-admin startproject [项目的名称] ``` 这样就可以在当 ...
- Elasticsearch索引增量统计及定时邮件实现
0.需求 随着ELKStack在应用系统中的数据规模的急剧增长,每天千万级别数据量(存储大小:10000000*10k/1024/1024=95.37GB,假设单条数据10kB,实际远大于10KB)的 ...
- RE最全面的正则表达式----字符验证
二.校验字符的表达式汉字:^[一-彪]{0,}$英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$长度为3-20的所有字符:^.{3,20}$由26个英文字母组成的字 ...
- 对于微信UnionID在公众平台以及小程序里面的获取
首先介绍下UnionID的作用,在注册了微信开放平台(注意,这里是开放平台,不是微信公众平台)之后,同一个微信号在这个开放平台下的项目上面的UnionID都是统一的,通俗的说就是,小程序跟公众号项目在 ...
- 100天搞定机器学习|Day35 深度学习之神经网络的结构
100天搞定机器学习|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习 ...