2017 NEERC
2017 NEERC
Problem A. Archery Tournament
题目描述:在二维平面上,会陆续出现一些圆,以及一些询问,询问点是否在圆内,如果是,则输出那个圆,并把那个圆删掉,否则输出\(-1\)。注意:这些圆均与\(x\)轴相切,并且这些圆不会相交。
solution
因为这些圆都与\(x\)轴相切,所以经过直线\(x=x'\)的圆不会超过\(log\)个。所以只要找出询问点的左右\(log\)个圆逐一判断即可。
时间复杂度:\(O(nlog10^9)\)
Problem B. Box
题目描述:用一张\(n \times m\)的网格纸,折出\(a \times b \times c\)的长方体。输出是否可解。注意:折痕只能是网格线。
solution
题解:答案只有两种情况:
- \(3b+a+c \leq w\)且\(a+c \leq h\)。
- \(2a+2c \leq w\)且\(a+2c \leq h\)。
\(a, b, c, w, h\)全部组合一下。
时间复杂度:\(O(1)\)
Problem C. Connections
题目描述:给出一个顶点数为\(n\)的有向图,删掉一些边,使得只剩下\(2n\)条边,且任意两点能互相到达。
solution
从\(1\)开始搜索,搜到的边为留下的边。然后将边的方向全部相反,从\(1\)开始搜索,搜到的边也是留下的边。这样就有至多\(2n-2\)条边,剩下的随便补足\(2n\)条就好了。
时间复杂度:\(O(n)\)
Problem D. Designing the Toy
题目描述:给出一个由\(1 \times 1 \times 1\)方块组成的立体图形的正视图、侧视图、俯视图的面积,问是否存在一种堆积方式,满足题目所给的数据。
solution
假设面积分别是\(a, b, c, c \geq max(a, b)\),将面积为\(a\)的面变成\(a \times q\),面积为\(b\)的面变成\(b \times 1\),然后就相当于在一个\(n \times m\)的网格中填\(c\)个格子,所以如果\(c>ab\),则无解;否则先填满对角线,剩下的随便填就好了。之所以把面变成\(a \times 1\)和\(b \times 1\),是因为这样子能填的方块最多,即\(ab\)。
时间复杂度:\(O(c)\)
Problem E. Easy Quest
题目描述:有\(n\)个关卡,每个关卡为一个数字\(a_i\)。如果\(a_i>0\),则是武器,如果\(a_i<0\),则是怪兽,只能用值为\(-a_i\)的武器杀死,如果\(a_i=0\),则可以生成一个任意值的武器。问是否能通关,若能,则每个\(a_i=0\)应该生成什么武器。
solution
贪心,尽量先用已有的武器,再用能生成任意值的武器。
时间复杂度:\(O(n)\)
Problem F. The Final Level
题目描述:用长度为\(n\)的\(L\)型方块摆在二维网格平面上,仅通过方块从\((0, 0)\)走到\((a, b)\)。输出方案。
solution
为了方便,可以先将\((a, b)\)映射到第一象限。然后贪心构造方案。可以逆着构造,zhe这样对于边界的判断会方便一些。
时间复杂度:\(O(n)\),\(n\)为方块数
Problem G. The Great Wall
题目描述:现要建一堵长度为\(n\)的墙。第\(i\)段墙有三个属性值\(a_i, b_i, c_i\)。现给定一个值\(r\)。自行选定两个值\(x, y\),形成两个区间\([x, x+r-1], [y, y+r-1]\),这两个区间必须包含于\([1, n]\)。\(x, y\)对应的墙的值为\(\sum v_i\),当\(i\)不属于任一区间时,\(v_i=a_i\);当\(i\)只属于一个区间时,\(v_i=b_i\);当\(i\)属于两个区间时,\(v_i=c_i\)。求出第\(k\)小的墙的值。
solution
先将\(b_i-=a_i, c_i-=a_i, a_i=0\)。
二分答案\(value\),判断有多少个数对\((x, y)\)小于等于\(value\)。
先处理区间不相交的情况。预处理\(h_i=\sum_{j=0}^{r-1} b_{i+j}\),枚举\(i\),假设\(y=i\),然后用\(multiset\)之类的数据结构,计算出有多少对\((x, y)\)小于等于\(value\)。
接着就是构造两个函数。
\]
\]
这样,数对\((x, y)\)的相交区间的值为\(g_x+f_y\)。这样就可以用与上面一样的方法来求出有多少对\((x, y)\)小于等于\(value\)。
时间复杂度:\(O(nlogn)\)
Problem H. Hack
题目描述:
1 modPow(a, d, n) {
2 r = 1;
3 for (i = 0; i < 60; ++i) {
4 if ((d & (1 << i)) != 0) {
5 r = r * a % n;
6 }
7 a = a * a % n;
8 }
9 }
其中只有第\(5, 7\)行耗时间,若表达式为\(x*y%n\),则时间为\((bits(x)+1)(bits(y)+1)\),\(bits(x)\)为二进制位数。已知\(n, d\)是这样生成的:首先随机找两个二进制位数为\(30\)的质数\(p, q\),其中\(n=pq\),而\(d\)由\(1\)~\(\phi(m)-1\)随机选取,且与\(m\)互质。现给出\(n\),每次可向系统输出一个\(a\),系统返回所需的时间。最后确定\(d\)。
solution
待解决。
Problem I. Interactive Sort
题目描述:随机生成一个\(n\)排列,将奇数按顺序设为\(o\)数组,将偶数按顺序设为\(e\)数组。每次向系统输出一个数对\((x, y)\),系统返回\(o[x]\)与\(e[y]\)的大小关系,最后确定\(o, e\)数组。
solution
判断\(o[1]\)与\(e\)的所有数的大小关系,从而确定\(o[1]\),也同时将\(e\)分成小于\(o[1]\)和大于\(o[1]\)两部分,以此类推,会将\(e\)分成\(i+1\)份,在以后的判断中,只要从\(i+1\)份中每份选一个数与\(o[i]\)比较,即可将\(o[i]\)的大小范围缩小到两份,再与这两份中每一个数相比较即可。
时间复杂度:\(O(nlogn)\)
Problem J. Journey from Petersburg to Moscow
题目描述:有一个有边权的无向图,一条从\(1\)到\(n\)的路径的长度为路径中最长的\(k\)条边的和,如果路径中不足\(k\)条边,则为全部边的和。问\(1\)到\(n\)的最短距离。
solution
待解决。
Problem K. Knapsack Cryptosystem
题目描述:有一个数列\(a_i\),且满足\(a_i>\sum_{j=1}^{i-1} a_j\),设\(q=2^{64}, r\)与\(q\)互质,且为一个正数。令\(b_i=(a_i \cdot r) mod q\)。现生成一个数\(num\),将\(num\)的二进制中为\(1\)的位\(i\)找出,令\(s=\sum b_i mod q\)。现给出\(s\),求\(num\)。
solution
假如\(n \leq \frac{2}{3}logq\),则可以将\(n\)分成两半,然后爆搜出两半分别能构成的和,再枚举其中一半的和,另一半能单调枚举。
假如\(n > \frac{2}{3}logq\), 因为\(a_i>\sum_{j=1}^{i-1} a_j\),所以\(a_1 < \frac{q}{2^n}=t\),所以可以枚举\(a_1\),又因\(r\)为奇数,\(q=2^{64}\),所以\(a_i\)与\(b_i\)最低位\(0\)的个数相同,设个数为\(z\),所以只需要枚举\(\frac{t}{2^z}\)。
其次可以根据\(a_1\)与\(b_1\),算出\(r\),但\(r\)的最高\(z\)位是不确定(因为被模了),所以可以枚举最高位\(2^z\)。然后逐一算出\(a_i\),看\(a_i\)是不是指数增长,若是,则找到了对的\(r\),然后从大到小贪心分解\(s\),得到答案。
时间复杂度:\(O(\sqrt[3]{q})\)
Problem L. Laminar Family
题目描述:给出一棵树,用很多数对\((x, y)\)的路径覆盖树,如果路径有相交部分(包括点相交,但不算互相包含),则输出\(No\),否则输出\(Yes\)。
solution
树链剖分。将数对按路径长度从长到短排序,然后对每个数对随机生成一个数值\(key\),将路径上的每个点都异或这个值,判断时只要判断路径上每个点的值是否都相同。
时间复杂度:\(O(nlogn)\)
2017 NEERC的更多相关文章
- ACM ICPC 2016–2017, NEERC, Northern Subregional Contest Problem J. Java2016
题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:2s 空间限制:256MB 题目大意: 给定一个数字c 用 " ...
- ural 2017 Best of a bad lot
2017. Best of a bad lot Time limit: 1.0 secondMemory limit: 64 MB A cruise liner hasn’t moved away f ...
- 2017 ACM-ICPC EC-Final 记录
北京赛区结束后就以为自己的赛季结束了……但是还是保持着做题量 那天突然接到通知,去打EC-Final 但是这是一个临时组起来的队伍,另外两位队友原来一起组的比较熟,我就需要适应一下. 于是我们临时训练 ...
- 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斤 ...
随机推荐
- uoj54-bzoj3434-时空穿梭
题意 在一个 \(n\) 维空间中,求一个点可以用一个 \(n\) 维向量 \((x_1,x_2,\dots x_n)\) 表示.现在要选出 \(c\) 个点,有三个限制: 设 \(x_i\) 表示任 ...
- luogu 2115 破坏(01分数规划)
题意:给出一个序列,删除一个连续的子串后使得剩下的平均值最小. 典型的01分数规划,令f(x)=(sum1[i]+sum2[j])/(i+j).sum1表示前缀和,sum2表示后缀和,那么我们就相当于 ...
- 【比赛】HNOI2018 总结
一将功成万骨枯,我就是给那些队爷做基数的 一.比赛过程 Day1 看完题,暴力好打,然后就打 觉得第三题模型很好建啊,先看第三题吧(结果第三题是最..的) 图建出来,先看树的情况,设dp试一下 结果一 ...
- springboot缓存开发
前言:缓存在开发中是一个必不可少的优化点,近期在公司的项目重构中,关于缓存优化了很多点,比如在加载一些数据比较多的场景中,会大量使用缓存机制提高接口响应速度,简介提升用户体验.关于缓存,很多人对它都是 ...
- mac 的全文搜索
grep -Rni "view.proptypes.style" * 需要切换到要搜索的目录在运行
- 「Django」rest_framework学习系列-API访问跨域问题
#以中间件方式解决API数据访问跨域问题1.API下新建文件夹下写PY文件a.引入内置类继承: from django.middleware.common import MiddlewareMixin ...
- 「Django」学习之路,持续更改
一.setting设置 1.设置 局域网可以部署连接 ALLOWED_HOSTS = ['*.besttome.com','192.168.1.100'] 2.static配置 STATIC_URL ...
- vue使用插件 使用库
用插件1.引用import VueResource from 'vue-resource'2.使用Vue.use(VueResource); 用库(bootstrap alertify )1.引入: ...
- [DeeplearningAI笔记]卷积神经网络1.6-1.7构造多通道卷积神经网络
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.6多通道卷积 原理 对于一个多通道的卷积操作,可以将卷积核设置为一个立方体,则其从左上角开始向右移动然后向下移动,这里设 ...
- OpenCV---轮廓发现
推文:OpenCV-Python教程(11.轮廓检测) 轮廓发现 是基于图像边缘提取的基础,寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓的发现 相关API findContours 发现轮 ...