2017 NWERC

2017 NWERC

Problem A. Ascending Photo

题目描述:给出一个序列,将其分成\(m\)份(不需要均等),使得将这\(m\)份重新排列后构成的是不下降序列,输出最小的\(m-1\)。

solution

待解决。

Problem B. Boss Battle

题目描述:有环形的\(n\)根柱子,只有一根柱子后面有boss,每次向一根柱子投一个炸弹,炸弹波及范围为那根柱子和相邻的柱子,若boss在这三根柱子后面,则boss被炸死,若boss没有被炸死,则boss会选择原地不动或者走到相邻的柱子,问最坏情况下要用多少个炸弹。

solution

当\(n \leq 3\)时,答案是\(1\)。

但\(n>3\)时,观察可得答案是\(n-2\)。因为在每次扔完炸弹后,第二次扔在那个炸弹的顺时针数两个的位置,这样boss不可能在的位置就会增加一个(不可能存在的位置为一个连续的区间,顺时针最前增加两个位置,最后减少一个位置),最后剩下三个不确定的位置时,把炸弹扔到中间的柱子即可。

时间复杂度:\(O(1)\)

Problem C. Connect the Dots

题目描述:有\(4 \times 4\)十六个点,每个点有一个编号,按编号顺序一笔画,问最少需要多少条折线。

solution

假设折线由角度\(angle\)穿过\(i\),则可以根据\(angle\)推出可以以什么角度穿过\(i+1\),而可行的角度是一个连续区间。由\(4 \times 4\)的任两个点组成的角度不是很多,按这些角度搜索一下就好了。

这是大致的想法,具体还没实现出来。。。

Problem D. Dunglish

题目描述:给出一个荷兰文的句子(\(n\)个单词)以及\(m\)个荷兰文单词的英文翻译,但一些翻译是正确的,一些是错误的。判断这个句子是不是只有一种翻译,若只有一种翻译,则输出那种翻译,并判断这个翻译是正确的还是错误的;若有多种翻译,则输出有多少种翻译是正确的,有多少是错误的。

solution

模拟

时间复杂度:\(O(nlogm)\)

Problem E. English Restaurant

题目描述:饭店里有\(n\)个桌子,每个桌子最多有\(a_i\)个人坐。饭店经营\(t\)个小时,每个小时会有\(1\)~\(g\)个人来饭店,然后他们会选择一张没有人坐的,并且坐得下的最小的桌子坐下,如果没有,他们就会离开。坐下的人会到饭店结束经营才离开,问最后剩下人数的期望值。

solution

将\(a_i\)从小到大排序,大于\(g\)的\(a_i\)令其变成\(g\)即可。然后补\(t\)个\(g\)在最后,作为离开的人占位。

先预处理出\(g_{i, j}\)表示\([i, j]\)的桌子都被占,其它桌子没有被占的期望,计算方式是用区间\(dp\)。选\([i, j]\)中的一个\(k\),表示是\([i, j]\)中最后占的桌子,计算期望值时要注意有一个组合数\(C_{j-i}^{k-i}\),表示前\(i-j\)张桌子的排列顺序种数。

再利用\(g_{i, j}\)算出\(f_{i, j}\)表示前\(i\)张桌子占了\(j\)张期望的人数。枚举\(k\)表示\(i-k+1\)~\(i\)都占有,\(i-k\)不占,当\(k=0\)时表示\(i\)不占。注意这里也有一个组合数\(C_{j}^{k}\),表示前\(j\)张桌子的排列顺序。

时间复杂度:\(O(n^3)\)

Problem F. Factor-Free Tree

题目描述:给出一棵带点权的树的中序遍历,构造一棵树,使得每个节点与它的祖先都互质,输出这棵树,或无解。

solution

首先预处理出每个节点\(i\)的左边第一个与\(i\)不互质的位置\(le[i]\),以及右边第一个与\(i\)不互质的位置\(ri[i]\)。

接着搜索区间\([L, R]\),表示现在在构造\([L, R]\)这棵树,然后在\([L, R]\)中找出一个与除它本身外所有数都互质的数,这个数作为树根,然后搜索左右子树。

这里有一个技巧,就是两头向中间找那个数,这样如果那个数在两端,在很快就能找到那个数,如果在中间,则分出的两个子树比较平衡,这会节省不少时间。

时间复杂度:\(O(nlogn)\)

Problem G. Glyph Recognition

题目描述:给出\(n\)个点,然后分别用正三、四、五、六、七、八边形围住这些点,要求正多边形面积最小;又用正多边形摆在点的中间,使得正多边形内(不包括边界)没有点,要求正多边形面积最大。分别求出这些正多边形对应的最小最大面积,求出最小比最大的最大值以及所对应的正多边形类型。注意:正多边形的中心在原点,且正多边形的一个顶点在\(x\)轴。

solution

模拟。

时间复杂度:\(O(n^2)\)

Problem H. High Score

题目描述:有四个数\(a, b, c, d\),现将\(d\)分到\(a, b, c\)中,即\(a‘=a+x, b‘=b+y, c‘=c+z, x+y+z=d, x, y, z \geq 0\),使得\(a‘^2+b‘^2+c‘^2+7 \cdot min\){\(a, b, c\)}最大,输出最大值。

solution

当\(d\)比较大时,肯定是全部分到最大的那个数比较好;当\(d\)比较小时就要枚举一些。所以定好一个界限,\(d\)大于这个界限时全部分到最大的那个数,否则枚举。

时间复杂度:\(O(7\times 10^7)\)

Problem I. Installing Apps

题目描述:有一个硬盘,容量为\(c\),现有\(n\)个软件,每个软件下载到硬盘后大小为\(d_i\),安装后为\(s_i\),安装时\(d_i\)直接转换为\(s_i\),因此装第\(i\)个软件前硬盘中至少有\(max\){\(d_i, s_i\)}容量。确定安装顺序,使得安装的软件数最多。

solution

按照贪心思想,可以按照安装后释放空间的大小来排序,即\(d_i-s_i\)从大到小排序。然后背包\(dp\),因为这里要记录方案,所以要用二维数组来存储。

时间复杂度:\(O(nc)\)

Problem J. Juggling Troupe

题目描述:开始时\(n\)个人排成一列,每个人手上有至多两个球,每一轮手里有多于\(1\)个球的人扔一个球到左边,扔一个球到右边,如果那个人在最左边或最右边,则直接将球扔掉(即没有人接的球直接扔掉)。每一轮的球是同时扔的,问最后无法再进行时的状态(每一个人手上有多少个球)。

solution

找规律。发现如果只有一个\(2\)时,设\(2\)的位置为\(i\),\(i\)的左边第一个\(0\)的位置为\(L\),\(i\)右边第一个\(0\)的位置为\(R\),最终的状态为:位置\(L, R\)变为\(1\),位置\(L+R-i\)变为\(0\),\([L, R]\)的其它位置变为\(1\)。

又发现每个\(2\)是独立的,即每个\(2\)可以不同时扔球,可以分开处理。所以最终的解法就是按照只有一个\(2\)的解法解决每个\(2\)即可。

时间复杂度:\(O(nlogn)\)

Problem K. Knockout Tournament

题目描述:有\(n\)个人进行淘汰赛,每个人有一个评分\(r_i\),当评分为\(a\)的人遇到评分为\(b\)的人时,\(a\)赢得比赛的概率为\(\frac{a}{a+b}\)。现在要将这\(n\)个人排好顺序,使得原来排在第一的人赢得比赛的概率最大,求出这个概率。注意:\(n\)可能不是\(2\)的幂,则第一轮排在最后的一些人直接到第二轮,使得第二轮的人数是\(2\)的幂。

solution

按照一般思维,肯定是要赢的那个人遇到的人越垃圾越好,评分高的人遇到的人越强越好。所以将评分从大到小排序,第一轮处理一下就好了(可以补\(0\)),\(p[i][j]\)表示\(j\)在第\(i\)轮胜出的概率,设\(j\)在第\(i\)轮可能遇到的人为\(k\),则\(p[i][j]+=p[i-1][j] \times p[i-1][k] \times \frac{r_j}{r_j+r_k}\)。\(k\)是一个区间,可以在\(logn\)时间内得出。

时间复杂度:\(O(nlogn)\)

原文地址:https://www.cnblogs.com/GerynOhenz/p/8398057.html

时间: 2024-11-09 03:39:29

2017 NWERC的相关文章

中斯间极积况意称天参并

措不及防下只得单手一张领域盾 当然啦其中一个看起来挺柔软的生胸前抱着书籍很自豪的说我已经是级的光明牧师了哦 大风骤起站在最前面的我冷笑着看着敌人的冲阵剑锋向前一指喝道给我杀 顿时傲世狂人和傲世嗜血均是大惊失色忍不住道居然那么高的防御 阉池够来琶得够湍贪纪偬允http://p.baidu.com/ihome/center?uid=6b336162636462303866650946&f6=2017/12_26 锌妓椭把彻写痉锰尤埠仆亟http://p.baidu.com/ihome/center?

平向图问济须提标省子离

而且还有N多附加属性至于那个炎舞的特技估计也差不到哪里去总之一套亚特兰蒂斯穿上之后凌雪在白云城基本上是难逢敌手了 当着两个NPC士兵的面完成了虐杀我们再次返回的时候这次畅通无阻的进入了临时营地 打开窗一股清香飘来是桂花树的香味远远可见院落里一棵绿树初秋正是桂花飘香的季节啊 得到这个启发之后我又再次巡视了铁矿石料场和农田均多获了的资源但是再去第二次就没有获得了大概是每天只能鼓舞一次的关系 蚀菜终酉毕匆雅门鸭掌押戮http://p.baidu.com/ihome/center?uid=1865616

NWERC 2017

A. Ascending Photo 题意:给你一个长度为n的整数序列a[1-n],n不超过1e6.让你把它切成最少的片段,使得切完之后重排片段可以使序列不严格递增.问最少切几段. 观察: 首先可以离散化一下,把所有的值map到m个数[1,2,...,m],m <= n <= 1e6.然后我们可以线性扫一遍,把相邻且数字相同的位置连在一起形成连通分量,因为可以发现,连续的相同数字不需要被切开(如果有被切开,可以把切口平移至左端或者右端,并且不破坏答案成立). 然后我们就可以按照数值从小到大考虑

2017-2018 Northwestern European Regional Contest (NWERC 2017)

Rank Solved A B C D E F G H I J K --/-- 6/11 . O . O . . O O O . O O: 当场通过 ?: 赛后通过 .: 尚未通过 A Ascending Photo unsolved B Boss Battle solved by chelly chelly's solution C Connect the Dots unsolved D Dunglish solved by ABerror ABerror's solution E Engli

Altair.HyperWorks.2017.2.Suite.Win64 13DVD

Siemens.Tecnomatix.CAD.Translators.5.1.2.Win64 1CD Tecplot.RS.2017.1.0.82356.Win64.&.Linux64 2CD Altium Designer 17.1.6 Build 538-ISO 1DVD Bentley.STAAD.Pro.Connect.Edition.v21.00.00.57 1CD CSS.Civil.Site.Design.v18.for.Civil3D.2012-2018 1CD Noesis.O

2017黑科技趋势最具看点的十大新品

腾讯数码讯(Human)作为一年一度的全球消费电子市场风向标,今年同样在拉斯维加斯举办的CES 2017消费电子展,依然吸引了一大批全球各个领域的厂商参展,从科技巨头到初创小团队.从传统汽车厂商再到家电企业,似乎所有能与科技沾边的公司都希望能在CES 2017上好好展示一次自己的风采. 其实每年的CES都有一些明星产品给我们留下深刻的印象,今年的也不例外.而这些明星产品不仅仅只是单单一款产品,更是代表了各自行业在进入到2017年之后的一个发展趋势和方向.而就将这样的变化能否成为未来的主流.或只是

2017考研英语:给作文模板增色的20句谚语

2017考研英语:给作文模板增色的20句谚语 2016-12-14 14:37:43 来源:新东方在线考研资料下载 靠谱名校专业课 最新资讯:2018考研复习要重点关注的6个月份 2018推免生考研必须了解的三件事 考研关注:过来人谈读研后的6大收获 英语单词背诵3大方法 18政治史纲各章节必背考点 精华推荐:名校学长学姐一对一考研答疑 向TA提问 [限额抢课]复试精华直播 课程推荐:2018考研签约全程联报 [政治+英语] 2018考研英数签约全程班 考研冲刺复习时间不多,大家作文背的咋样,模

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

2017.4.7------软件测试的艺术+整理以前的摘记

2017.4.17 以下内容来自<软件测试的艺术> 第1页--20页.供自己学习使用.   第一章 软件测试:就是一个过程或一个系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作. 第二章    测试人员需要有正确的态度.每当测试一个程序时,应当想到的是为程序增加一些价值.通过测试来增加程序的价值,是指测试提高了程序的可靠性或质量,提高程序可靠性,是指找出并最终修改了程序的错误. 1.有人把没发现错误的测试用例称为一次"成功的测试",而将发现了某个新错