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有边相连构建二分图,跑一遍匈牙利判断每个点是否有着落,如果可以,输出

code


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\)

构造方法:

  1. 写下序列 \([a_1,a_2,a_3,....,a_k]\)
  2. 在序列前添上,\([1个a_2,1个a_2-1,.....,1个a_1+1]\)
  3. 在序列前添上,\([2个a_3,2个a_3-1,.....,2个a_2+1]\)
  4. 在序列前添上,\([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的更多相关文章

  1. 2019 Petrozavodsk Winter Camp, Yandex Cup C. Diverse Singing 上下界网络流

    建图一共建四层 第一层为N个歌手 第二层为{pi,li} 第三层为{si,li} 第四层为M首歌 除了S和第一层与第三层与T之间的边为[1,INF] 其他边均为[0,1] #include<bi ...

  2. Petrozavodsk Winter Camp, Warsaw U, 2014, A The Carpet

    一个地图上有若干障碍,问允许出现一个障碍的最大子矩形为多大? 最大子矩形改编 #include<bits/stdc++.h> using namespace std; #define re ...

  3. Petrozavodsk Winter Camp, Day 8, 2014, Ship

    $dp(i,j)$表示i-j这段还没运走时的状态,包括 运输了多少次,还剩多少空间 每次枚举运输左边还是右边转移 #include <bits/stdc++.h> #define rep( ...

  4. Petrozavodsk Winter Camp, Day 8, 2014, Fine Brochures

    1的个数-块的个数+多减的个数+flag 多减的只会在一个循环末尾出现 #include <bits/stdc++.h> using namespace std; #define rep( ...

  5. Petrozavodsk Winter Camp, Day 8, 2014, Second Trip

    给你一棵树,每次询问一个(a,b),问有多少有路径与a-b没有交集 找lca #include <bits/stdc++.h> using namespace std; #define r ...

  6. Petrozavodsk Winter Camp, Day 8, 2014, Mosaic

    给你三个数字a,b,c,让你用1-m的数字凑出来 结论:有2个1和2个2肯定凑不出来,然后就搜索 #include <bits/stdc++.h> using namespace std; ...

  7. 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 ...

  8. Petrozavodsk Winter Camp, Andrew, 2014, Dichromatic Trees

    条件: 1:每个红色节点的儿子都是黑色节点 2.每个叶子到根路径上的黑点数相等,等于某个常数,称作树的black height 求给定black height和节点数的符合条件的方案数 $black_ ...

  9. 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}^ ...

随机推荐

  1. NPM - 检查并更新项目依赖的版本

    原文地址:https://acme.top/nodejs-npm-check-updates 前言 经常会遇到 package.json 中的库有更新,但是太多一个一个的来很费事,幸好有个工具 npm ...

  2. BME200加密网关,在电力与工业应用的加密网关设计与介绍

    加密通信网关,顾名思义就是带加密的通信网关终端,  一般业内主是需用到是工业通信关行业的为主的.,BME200加密通信网关,主要电力和工业互联网相关领域开发的一款加密通信网关. 为什么出现加密网关 1 ...

  3. Altium Designer16绘制51单片机的一些经验总结

    制作这块51单片机的还是蛮艰辛的,应该是我水平太差,现在这块51板已经稳定了,也把这块板子制作过程中的一些问题及经验总结记录下来.这块板子制作出了很大问题很大原因是因为我对Altium Designe ...

  4. 【Java笔记】【Java核心技术卷1】chapter3 D5运算符

    package chapter3; import java.math.*; //引入数学类 //枚举类型 enum Size{SMALL,MEDIUM,LARGE}; public class D5运 ...

  5. hadoop学习(七)----mapReduce原理以及操作过程

    前面我们使用HDFS进行了相关的操作,也了解了HDFS的原理和机制,有了分布式文件系统我们如何去处理文件呢,这就的提到hadoop的第二个组成部分-MapReduce. MapReduce充分借鉴了分 ...

  6. centos7之Python3.74安装

    安装版本:Python3.74 系统版本:centos7 系统默认安装Python2.7,保留. 安装/usr/bin/Python3 安装需要root权限. 安装Python3的准备工作: 1.安装 ...

  7. python骚操作---Print函数用法

    ---恢复内容开始--- python骚操作---Print函数用法 在 Python 中,print 可以打印所有变量数据,包括自定义类型. 在 3.x 中是个内置函数,并且拥有更丰富的功能. 参数 ...

  8. exlipse php 插件安装地址

    以前的exlipse PHP插件老是有问题,下面这个地址可以使用. http://www.phpsrc.org/eclipse/pti/

  9. 【原】iOS查找私有API

    喜接新项目往往预示的会出一堆问题.解决问题的同时往往也就是学到更多东西的时候,这也许就是学习到新东西最直接最快速的方法吧! 小编经过努力,新项目终于过测试了,可是被苹果大大给拒了,好苦啊,最近的审核真 ...

  10. Django-channels 实现WebSocket实例

    引入 先安装三个模块 pip install channels pip install channels_redis pip install pywin32 创建一个Django项目和一个app 项目 ...