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斤 ...
随机推荐
- CF337D-Book of Evil
题目 一棵树上有一个古籍,这个古籍可以影响到与它距离为 \(d\) 以内的点.现在给出被影响到的点,问古籍可能在多少个点上. \(0\le m,d\le n\le 10^5\). 分析 原问题不好做, ...
- BZOJ4950 Wf2017Mission Improbable(二分图匹配)
先给每个非零格子-1以满足俯视图不变.于是就相当于要求每行每列最大值不变.能减少剩余箱子的唯一方法是在要求相同的行列的交叉处放箱子以同时满足两个需求.给这些行列连边跑二分图匹配即可.注意必须格子初始时 ...
- ubuntu16.04上安装配置DHCP服务的详细过程
DHCP服务器是为客户端机器分配IP地址的,所有分配的IP地址都保存在DHCP服务器的数据库中.为了在子网中实现DHCP分配IP地址,需要在目标主机上安装配置DHCP服务 1. 安装DHCP服务 安装 ...
- 关于qt中的tr()函数
关于qt中的tr()函数 在论坛中漂,经常遇到有人遇到tr相关的问题.用tr的有两类人: (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr (2)另一类人,确实是出于国际化的 ...
- 【刷题】洛谷 P4143 采集矿石
题目背景 ZRQ成功从坍塌的洞穴中逃了出来.终于,他看到了要研究的矿石.他想挑一些带回去完成任务. 题目来源:Zhang_RQ哦对了ZRQ就他,嗯 题目描述 ZRQ发现这里有 \(N\) 块排成一排的 ...
- mysql权限管理,用户管理
1 创建用户 mysql> truncate table user; //先删除所有用户 mysql> CREATE USER 'paris'@'localhost' IDENTIFIE ...
- SQL Server参数化SQL语句中的like和in查询的语法(C#)
sql语句进行 like和in 参数化,按照正常的方式是无法实现的 我们一般的思维是: Like参数化查询:string sqlstmt = "select * from users whe ...
- Android NDK 编译选项设置[zhuan]
http://crash.163.com/#news/!newsId=24 在Android NDK开发中,有两个重要的文件:Android.mk和Application.mk,各尽其责,指导编译器如 ...
- HBuilder mui登录和访问控制教程--转载
HBuilder mui登录和访问控制教程 mui中提供了登录的模板页,但是对于登录后各个页面的访问控制,刷新等并没有官方的推荐方案.我在这里简单说一种初级的解决方案吧,肯定有不足指出,欢迎批评指正. ...
- ubuntu系统安装mysql二进制压缩包(tar.gz)以及navicat远程连接服务器(linux系统)
一.ubuntu安装mysql5.6二进制压缩包(tar.gz) 准备 0. 获取 mysql-5.5.15-linux2.6-i686.tar.gz 二进制安装文件 mysql 官网下载页面选择 L ...