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

题解:答案只有两种情况:

  1. \(3b+a+c \leq w\)且\(a+c \leq h\)。
  2. \(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\)。

接着就是构造两个函数。

\[g_i=\sum_{j=1}^{i-1} c_j-2b_j + \sum_{j=i}^{i+r-1} c_j-b_j
\]

\[f_i=\sum_{j=1}^{i-1} 2b_j-c_j + \sum_{j=i}^{i+r-1} b_j
\]

这样,数对\((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的更多相关文章

  1. ACM ICPC 2016–2017, NEERC, Northern Subregional Contest Problem J. Java2016

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229510 时间限制:2s 空间限制:256MB 题目大意: 给定一个数字c 用 " ...

  2. 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 ...

  3. 2017 ACM-ICPC EC-Final 记录

    北京赛区结束后就以为自己的赛季结束了……但是还是保持着做题量 那天突然接到通知,去打EC-Final 但是这是一个临时组起来的队伍,另外两位队友原来一起组的比较熟,我就需要适应一下. 于是我们临时训练 ...

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 【loj6307】「雅礼国庆 2017 Day1」Clique 贪心

    题目描述 数轴上有 $n$ 个点,第 $i$ 个点的坐标为 $x_i$ 权值为 $w_i$ .两个点 $i,j$ 之间存在一条边当且仅当 $|x_i−x_j|\le w_i+w_j$ . 你需要求出这 ...

  2. 【bzoj4027】[HEOI2015]兔子与樱花 树形dp+贪心

    题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...

  3. Testng 运行Cannot find class in classpath

    用Testng运行多个class,结果报: org.testng.TestNGException: Cannot find class in classpath: Salesman     at or ...

  4. (转)【Java FTP及FTP服务器搭建】

    转至 http://blog.csdn.net/studyvcmfc/article/details/8147052 目录(?)[+] -[Java FTP及FTP服务器搭建] 一:本文采用apach ...

  5. BZOJ4892 Tjoi2017dna(后缀数组)

    对每个子串暴力匹配至失配三次即可.可以用SA查lcp.然而在bzoj上被卡常了.当然也可以二分+哈希或者SAM甚至FFT. #include<iostream> #include<c ...

  6. 洛谷 P1171 售货员的难题 【状压dp】

    题目描述 某乡有n个村庄(1<n<20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村的路大多不同.为了提高效率 ...

  7. @RequestBody 和@ResponseBody 注解详解

    简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...

  8. Codeforces Round #416 (Div. 2)A B C 水 暴力 dp

    A. Vladik and Courtesy time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  9. linux sort中文失效问题的解决

    http://note.youdao.com/noteshare?id=745488efb61a69fb56475e291863c94e

  10. sleep php函数

    <?php echo date('h:i:s') . "<br />"; //暂停 10 秒 sleep(10); //重新开始 echo date('h:i:s ...