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}^ ...
随机推荐
- python对数据去重处理
我们在数据处理时,经常需要用到对重复数据进行过滤处理. 对数据去重有两种处理方式,如下: 1.对重复数据去重,并且会自动排序 使用函数 set # 列表去重 list_a = [6, 6, 5, ...
- 安装MySQL5.7 安装环境:CentOS7 64位 MINI版,
安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...
- Chrome谷歌浏览器实用插件
总结整理了一下个人平时常用的谷歌浏览器插件 Adblock Plus 广告拦截 uBlock Origin Chrono 下载管理器 Tampermonkey 油猴子(各种强大的脚本,强烈推荐) F ...
- golang const 内itoa 用法详解及优劣分析
首先itoa 是什么 const 内的 iota是golang语言的常量计数器,只能在常量的表达式中使用,,即const内. iota在const关键字出现时将被重置为0(const内部的第一行之前) ...
- ecshop 管理后台菜单及权限管理机制
ecshop 所有的一级菜单选项存放于languages\zh_cn\admin\common.php 文件里面,使用 $_LANG['02_cat_and_goods'] = '商品管理'; 这样 ...
- 洛谷 P4124 [CQOI2016]手机号码
题意简述 求l~r之间不含前导零,至少有三个相邻的相同数字,不同时含有4和8的11位正整数的个数 题解思路 数位DP,注意在l,r位数不够时补至11位 代码 #include <cstdio&g ...
- 996工作制?不如花点时间学知识!北栀暗影教你如何用WordPress搭建专业网站
很多70后.80后小时候都看过这样一部动画片-<半夜鸡叫>.讲的是地主"周扒皮"为了长工们能多干些活,半夜三更起来学鸡叫让长工劳动(卖身契上规定:鸡叫就得起床干活劳动) ...
- Linux 目录递归赋权,解决 Linux权限不够
如你要操作一个目录下的文件时,系统提示 “权限不够”,可用以下方法解决. 如 test 文件目录. 1.用root账号登陆系统. 2.输入如下命令: chmod 777 test -R 这样访问.修改 ...
- 解放双手——相机与IMU外参的在线标定
本文作者 沈玥伶,公众号:计算机视觉life,编辑部成员 一.相机与IMU的融合 在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图.这是因为这两个 ...
- AutoResetEvent控制线程用法
本文主要来自一道面试题,由于之前对AutoResetEvent的用户很模糊(即使已经使用过了).面试题题目很简洁:两个线程交替打印0~100的奇偶数.你可以先动手试试,我主要是尝试在一个方法里面完成这 ...