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

2017 NWERC的更多相关文章

  1. 2017-2018 Northwestern European Regional Contest (NWERC 2017)

    A. Ascending Photo 贪心增广. #include<bits/stdc++.h> using namespace std; const int MAXN = 1000000 ...

  2. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  3. 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS

    一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...

  4. iOS的ATS配置 - 2017年前ATS规定的适配

    苹果规定 从2017年1月1日起,新提交的 app 不允许使用NSAllowsArbitraryLoads来绕过ATS(全称:App Transport Security)的限制. 以前为了能兼容ht ...

  5. 深入研究Visual studio 2017 RC新特性

    在[Xamarin+Prism开发详解三:Visual studio 2017 RC初体验]中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很 ...

  6. Xamarin+Prism开发详解三:Visual studio 2017 RC初体验

    Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio ...

  7. Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo

    目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...

  8. Create an offline installation of Visual Studio 2017 RC

    Create an offline installation of Visual Studio 2017 RC ‎2016‎年‎12‎月‎7‎日                             ...

  9. .NET Core 2.0版本预计于2017年春季发布

    英文原文: NET Core 2.0 Planned for Spring 2017 微软项目经理 Immo Landwerth 公布了即将推出的 .NET Core 2.0 版本的细节,该版本预计于 ...

随机推荐

  1. P1039 侦探推理

    题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯(在明明不知情的情况下),明 ...

  2. CF1093F Vasya and Array DP

    题面 题面 \(\Delta\)题面有点问题,应该是数列中没有长度大于等于\(len\)的连续数字才是合法的. 题解 设\(f[i][j]\)表示DP到\(i\)位,以\(j\)为结尾的方案数, \( ...

  3. 【NuGet】使用NuGet打包并发布至ProGet过程 (步骤详细,附python脚本)【上篇】

    一.基本知识 (1)NuGet : NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件, ...

  4. HDU.1846 Brave Game (博弈论 巴什博弈)

    HDU.1846 Brave Game (博弈论 巴什博弈) 题意分析 巴什博奕裸题 博弈论快速入门 代码总览 include <bits/stdc++.h> using namespac ...

  5. SQL Server参数化SQL语句中的like和in查询的语法(C#)

    sql语句进行 like和in 参数化,按照正常的方式是无法实现的 我们一般的思维是: Like参数化查询:string sqlstmt = "select * from users whe ...

  6. USB驱动之CDC类的介绍与应用20160905

    USB的协议其实是很复杂的,如果要深入学习估计要一两年才能熟悉透.本文主要是讲如何使用官方已经写好的库进行二次开发,以达到我们自己使用的目的.我们知道USB可以用来接U盘,声卡,读卡器,鼠标键盘等等, ...

  7. Java之基础20160806

    注意这里介绍的JAVA基础是指你对C语言已经比较熟练或者有一定基础了,再学习如下这知识就会比较快. 1.JAVA也是从MAIN开始执行,但是要先定义类,文件名要与类名一致并且类名首字母要大写,同时JA ...

  8. laravel5.1 使用中间表的多对多关联

    用户表user 标签表tag 中间表user_tag(user_id,tag_id) 在user模型中定义tags关联如下: public function tags() { return $this ...

  9. laravel调试神器tinker

    一直以来,想调试框架中的某些东西,如想知道 Elpquent 的 create 方法返回值是个什么东西, 以前的话,应该就是在 create 方法调用之后,使用 dd 或者 var_dump 之类的函 ...

  10. OpenCV---ROI(region of interest)和泛洪填充

    一:ROI 感兴趣区(Region of Interest,ROIs) 是图像的一部分,它通过在图像上选择或使用诸如设定阈值(thresholding) 或者从其他文件(如矢量> 转换获得等方法 ...