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)\)
2017 NWERC的更多相关文章
- 2017-2018 Northwestern European Regional Contest (NWERC 2017)
A. Ascending Photo 贪心增广. #include<bits/stdc++.h> using namespace std; const int MAXN = 1000000 ...
- CI Weekly #10 | 2017 DevOps 趋势预测
2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...
- 猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS
一.假新闻如此猖獗 刚才一位老同事 打电话问:我们公司还是用的HTTP,马上就到2017年了,提交AppStore会被拒绝,怎么办? 公司里已经有很多人问过这个问题,回答一下: HTTP还是可以正常提 ...
- iOS的ATS配置 - 2017年前ATS规定的适配
苹果规定 从2017年1月1日起,新提交的 app 不允许使用NSAllowsArbitraryLoads来绕过ATS(全称:App Transport Security)的限制. 以前为了能兼容ht ...
- 深入研究Visual studio 2017 RC新特性
在[Xamarin+Prism开发详解三:Visual studio 2017 RC初体验]中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很 ...
- Xamarin+Prism开发详解三:Visual studio 2017 RC初体验
Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio ...
- Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo
目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...
- Create an offline installation of Visual Studio 2017 RC
Create an offline installation of Visual Studio 2017 RC 2016年12月7日 ...
- .NET Core 2.0版本预计于2017年春季发布
英文原文: NET Core 2.0 Planned for Spring 2017 微软项目经理 Immo Landwerth 公布了即将推出的 .NET Core 2.0 版本的细节,该版本预计于 ...
随机推荐
- xshell代理设置
1.宿主机设置隧道 上面的端口随意,不与本机使用的端口重合即可,下面的端口是管理系统的端口 2.宿主机上面创建的虚机设置代理 3.怎么通过web浏览器直接登录虚机ip网址:https://blog.c ...
- Period UVALive - 3026(next数组)
题意: 给出一个长度不超过1000000的字符串S, 对于该字符串的所有前缀求其周期, 如果周期K >= 2输出起始位置是第几个字符和其周期K 解析: 先求next数组 对于每一个位置如果i % ...
- Django之form表单提交并验证
1.提交的时候会报错 2. 需要在setting里面注释掉一句话,关闭跨站请求检查. 3. 注释掉以后,理论上就不报错了.可我还是卡壳了. 4. 通过在网上找方法,修复错误. 原因:表单action字 ...
- Fdisk 分区详解
Fdisk 分区详解 来源 http://blog.itpub.net/20674423/viewspace-722812/ 1. 通过Fdisk查看系统分区详细信息: Fdi ...
- Elasticsearch在windows上安装好了之后怎么使用?
windows 10上安装Elasticsearch过程记录 一.安装和配置Java JDK1.下载:http://download.oracle.com/otn ... 4.exe2.设置环境变量: ...
- 洛谷 [POI2007]BIU-Offices 解题报告
[POI2007]BIU-Offices 题意 给定\(n(\le 100000)\)个点\(m(\le 2000000)\)条边的无向图\(G\),求这个图\(G\)补图的连通块个数. 一开始想了半 ...
- 解题:POI 2015 Pieczęć
题面 发现好像没有什么好做法,那就模拟么=.= 以印章左上角的'x'为基准,记录印章上'x'的相对位置模拟.记录相对位置是因为可能有这种情况↓ 直接模拟是会漏掉的=.= #include<cst ...
- [JSOI2007]建筑抢修——贪心反悔堆
题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ...
- Mybatis中jdbcType和javaType对应关系
Mybatis中javaType和jdbcType对应关系 JDBC Type Java Type CHAR String VARCHAR ...
- Codeforces Round #299 (Div. 2)A B C 水 dfs 二分
A. Tavas and Nafas time limit per test 1 second memory limit per test 256 megabytes input standard i ...