2015-2016 ACM-ICPC Northeastern European Regional Contest

再开一个新坑吧

目前姿势有限,C、H、I仍然处于弃坑状态

代码戳这里

Problem A. Adjustment Office

显然假设每一行都没有进行过删除的话,那么答案就-nx的和+nx(\(x\)为行号或者列号)

考虑进行过清零以后的问题,由于是整行整列的删除的

那么我们只需要分别记录删除的行号和列号的总和,以及删掉的数量,然后就可以\(O(1)\)得到了结果了

当然,别忘了开两个数组分别记录行和列有没有删除过


Problem B. Binary vs Decimal

一个性质:\(10k\)的二进制表示的末尾一定恰有\(k\)个\(0\)

这样就可以枚举答案的位数,从低到高一位一位添加\(0 / 1\),维护当前二进制末尾k位都合法的数字集合,因为有上面那个性质,所以从低到高枚举的时候,当把一个数十进制第\(k\)位赋为\(1\)的时候,只会影响到这个数二进制中第\(k\)位之前的值

因此,这个数的二进制后k位就逐一确定了,就可以把所有答案从小到大枚举出来。要用高精度。
复杂度\(O(d^2* n)\),\(d\)为答案的位数


Problem C. Cactus Jubilee

仙人掌,日常弃坑系列


Problem D. Distance on Triangulation

由于给出的图是一个多边形的三角剖分,因此每条对角线都能将这个多边形分成两个部分,就可以采用分治的方法。

类似树分治,先构出一个分治结构:每次在当前多边形中选出一条对角线,使得两部分点数尽可能均匀(可以证明最坏情况下存在任意一侧不少于n/3的分法)。

这条对角线两侧就形成了两个子多边形,递归下去,直到当前多边形为三角形为止,并且通过bfs计算出每个子多边形上每个点到选定的对角线两点的距离。

询问的时候只要判断一下两个点是否在选定的对角线同侧,如果是则递归求解,否则可以通过之前预处理出的距离简单计算。

复杂度\(O(nlogn)\)

口胡起来真是简单.....写的时候,常数卡到心灰意冷啊.......................

不过最后还是卡进去了......................


Problem E. Easy Problemset

感觉这道题目才是货真价实的签到题啊?

怎么cf上A比E过的人多呢......一定是E的题目太长...不太有人愿意读啊

直接按照题目意思模拟即可,不多说


Problem F. Froggy Ford

显然,最有的情况下,添加的一个点一定是某两个点的终点那么两两之间连两条边,一条为原来的边,另一条为中间有点的边,第一条的权值为两点距离,第二条的权值为两点距离的一半然后限定,从起点到终点的最短路只能跑一次第二条边这类边

然后就是最短路了

写了个SPFA,喜闻乐见的卡掉了两个点,由于我比较懒,不想改dij了,那就直接.............


Problem G. Generators

发现c比较小,最坏情况下,循环节为c个

那么我们求出所有的循环节,那么最多一共有1e7个数,排个序

如果最大的和%m不为0,直接输出

否则,我们对于每一个数列,寻找最大的一个,满足\(%m\)不为0的解,取最优的一个

如果仍然不存在,那么就无解了


Problem H. Hypercube

四维计算几何?!日常弃坑系列


Problem I. Iceberg Orders

很繁琐啊......日常弃坑系列


Problem J. Jump

好像可以先随便猜一个n / 2位相同的串出来..期望次数大约是40..

现在我们想知道每一位具体的值。 似乎将每一位单独取反之后.. 答案要么+1要么-1.. 返回值都是0

这样就没有办法判断了

把每位与第一位同时取反,然后做一次询问,这样就能得到每一位和第一位之间的关系了,这一步要进行n - 1次询问

然后枚举第一位是0还是1.. 根据之前得到的每位与第一位之间的关系,就能得出每一位的值。

对这两种情况分别做一次询问就好了。


Problem K. King’s Inspection

众所周知,哈密顿回路是一个NPC问题

那这道题目的突破口就在于边数小于等于点数+10

那么,也就是说,图中有大量的点是呈链状分布的,也就是说,我们可以把链所在一起

首先把入度和出度均为1的点,相连通的全部所谓一个点,那么剩下的点,在图中直接跑dfs即可


Problem L. Landscape Improved

二分答案

暴力枚举答案所在的列,剩下的问题就是验证答案了

首先我们发现,最后的形状一定是金字塔形的

那么,我们可以直接用优先队列大力预处理一发

然后根据预处理出的左边界和右边界,直接O(1)计算得到所需要的砖块,和n比较,得到可不可行即可


NEERC15的更多相关文章

  1. 【二分】NEERC15 L Landscape Improved(2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: 一个宽度为N的网格图,i上有h[i]高的方块.现在你有W个方块,问怎么放使得最终的最高点最高. 只要一个格子的 ...

  2. 【模拟】NEERC15 G Generators(2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: n个序列.每个序列有4个值x,a,b,c,之后按照x=(a*x+b)%c扩展无穷项. 求每个序列各取一个数之后 ...

  3. 【模拟】NEERC15 J Jump(2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: 系统里生成一个字符串C,一开始告诉你字符串的长度N(偶数).接着你需要在n+500次内猜出这个字符串是什么. ...

  4. 【最短路】NEERC15 F Froggy Ford(2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: 一只青蛙跳过宽为W的河,河中游N个石头,坐标xi,yi,现在往河中间添加一个石头,使得每次跳跃的最大的距离最小 ...

  5. 【模拟】NEERC15 E Easy Problemset (2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: N个人,每个人有pi个物品,每个物品价值为0~49.每次从1~n顺序选当前这个人的物品,如果这个物品的价值&g ...

  6. 【模拟】NEERC15 A Adjustment Office (2015-2016 ACM-ICPC)(Codeforces GYM 100851)

    题目链接: http://codeforces.com/gym/100851 题目大意: 一个N*N的矩阵A,Ai,j=i+j,Q次操作,每次分两种,R r取出第r行还未被取的所有数,并输出和.C c ...

随机推荐

  1. Primer C++第五版 读书笔记(一)

    Primer C++第五版 读书笔记(一) (如有侵权请通知本人,将第一时间删文) 1.1-2.2 章节 关于C++变量初始化: 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义 ...

  2. nrf528xx bootloader 模块介绍(转载)

    转载https://www.cnblogs.com/rfnets/p/8205521.html 1. bootloader 的基本功能: 启动应用 几个应用之间切换 初始化外设 nordic nrf5 ...

  3. HDU - 4763 Theme Section (KMP的next数组的应用)

    给定一个字符串,求出一个前缀A,使得字符串的构成可以表示成ABABA的形式(B可以为空串). 输出这个前缀的最大长度. KMP算法Next数组的使用. 枚举中间的每个位置,可以根据Next数组求出这个 ...

  4. luogu3370 【模板】字符串哈希

    #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> ...

  5. [python测试框架] http接口测试框架

    https://testerhome.com/topics/5631 Http 接口测试框架 (思路 + 实现中 + 开源 + 可能难产) Http 接口测试框架疑问解答 Fiddler 保存会话 ( ...

  6. oracle中的dual表

    dual表是和Oracle数据字典一起创建的.它实际上只包含dummy这一个column,并且只有一条记录,这条记录的值是X. X dual表的owner是SYS,但所有用户都可以访问它.Althou ...

  7. 九度oj 题目1465:最简真分数

    题目描述: 给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合. 输入: 输入有多组,每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000. ...

  8. 【bzoj1163/bzoj1339】[Baltic2008]Mafia 网络流最小割

    题目描述 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后,匪徒无法从原定的初始点到达目标点 ...

  9. 深入理解Java中的volatile关键字

    在再有人问你Java内存模型是什么,就把这篇文章发给他中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized ...

  10. 刷题总结——ball(ssoj)

    题目: 题目背景 SOURCE:NOIP2015-SHY-9 题目描述 Alice 与 Bob 在玩游戏.他们一共玩了 t 轮游戏.游戏中,他们分别获得了 n 个和 m 个小球.每个球上有一个分数.每 ...