Codeforces Round #219 (Div. 1)(完全)
A:给你n个数,要求尽可能多的找出匹配,如果两个数匹配,则ai*2 <= aj
排序,从中间切断,分成相等的两半后,对于较大的那一半,从大到小遍历,对于每个数在左边那组找到最大的满足条件的数配对
用一个变量移动一下就好了。这样的配对数量肯定就是最多的。
因为
1:如果左边那一半数量取少一点,比如取a1 a2 a3...ak (k < n/2)
那实际上ak+1 ak+2 .. a n/2 这些数就没啥用了,因为后面那一半数已经足够匹配当前的这些数了,不可能后面还有某些数不匹配而拿这部分数来匹配
2:如果左边那一半数量取大一点,那后边那一部分的数量就小于一半了,这时候最多就只能匹配后面的数的数量了,那还不如把左边多余的那部分去掉呢
所以最优的答案肯定是分在中间的。
B:40*40的01矩阵,很多个询问,问某个子矩形内有多少个全0矩阵
预处理O(n^5),O(1)回答
f[a][b][c][d] = f[a][b][c-1][d] + f[a][b][c][d-1] - f[a][b][c-1][d-1]+sum;
sum是包含右下角那个0的矩形的个数,这个只需要再O(n)扫一遍即可得出
C:给你m<=300个烟花的燃放时间与地点,还有一个价值,燃放的位置是1~n(n <= 150000);,如果烟花燃放的时候人在某个位置,就能
获得 bi - |ai - x|的价值,也就是价值减去位置的绝对值之差,最后问观赏完所有的烟花后最大获得的价值是多大。
dp[i][j]表示前i个时刻停留的j位置的最大价值。然后能够从dp[i-1][k]转移过来,稍微观察
一下就发现k跟j的距离是<=len(len为定长)
然后就用单调队列维护一下定长区间的最大值扫描两遍就好了
D:在一棵树中找一个大小<=k的联通块,使得这个联通块中出现的最长连续的区间最大
不知道那个dfs序的性质这个题还真是难做啊。。
维护two pointers,题目就转换成判断包含LR区间的数的联通块的点的最小个数,可以将
这些数按照dfs序排序后,相邻两个点到lca的距离加起来,然后,第一个点与最后一个点
到lca的距离加起来,这时候发现最小的联通块的每条边都被加了两次,然后就可以求点
数了。
具体实现的时候用一个set维护一下就好了,细节处理的不好会很当疼,不过对于神牛来
说总是有很好的方法可以搞定,看CLJ代码就知道了。。。
E:平面上有n个点,问你有多少个这样的点的集合, P2), (P3, P4), ..., (P2k - 1, P2k)
- For any two pairs (P2i - 1, P2i) and (P2j - 1, P2j), the circumcircles of triangles OP2i - 1P2j - 1 and OP2iP2j have a single common point, and the circumcircle of triangles OP2i - 1P2j and OP2iP2j - 1 have a single common point.
就是在这个集合里任取两对点,(a , b) (c , d), 三角形Oac的外接圆与三角形Obd的外接圆有一个公共点,三角形Oab 与三角形Ocd的外接圆有一个公共点
-
反演:
http://zh.wikipedia.org/zh-cn/%E5%8F%8D%E6%BC%94 -
反演是种几何变换。给定点O、常数k,点P的变换对应点就是在以O开始的射线OP上的一点 P'使得|OP||OP' | = k2。
反演的结果:
对于点
,以原点为中心,在直角坐标系的反演变换可写成 -
- 反演中心为O,过O的圆对O的反演就是一条不过O的直线,现在两个圆只相交于O点
-
- ,反演之后的两条直线也应该相交于O点的反演点O*,而O*位于无穷远处,所以两直
-
- 线平行,所以两个圆只有一个交点这件事情就可以转换成a b c d构成一个平行四边形
-
- 。。下面的事情就简单了。反演后对中点哈希即可。
-
Codeforces Round #219 (Div. 1)(完全)的更多相关文章
- 数学 Codeforces Round #219 (Div. 2) B. Making Sequences is Fun
题目传送门 /* 数学:这题一直WA在13组上,看了数据才知道是计算cost时超long long了 另外不足一个区间的直接计算个数就可以了 */ #include <cstdio> #i ...
- Codeforces Round #219 (Div. 2) E. Watching Fireworks is Fun
http://codeforces.com/contest/373/problem/E E. Watching Fireworks is Fun time limit per test 4 secon ...
- Codeforces Round #219 (Div. 1) C. Watching Fireworks is Fun
C. Watching Fireworks is Fun time limit per test 4 seconds memory limit per test 256 megabytes input ...
- Codeforces Round #219 (Div. 2) B. Making Sequences is Fun
B. Making Sequences is Fun time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- Codeforces Round #219 (Div. 2) D. Counting Rectangles is Fun 四维前缀和
D. Counting Rectangles is Fun time limit per test 4 seconds memory limit per test 256 megabytes inpu ...
- Codeforces Round #219 (Div. 2) D题
D. Counting Rectangles is Fun time limit per test 4 seconds memory limit per test 256 megabytes inpu ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
随机推荐
- LA 4119 (差分数列 多项式) Always an integer
题意: 给出一个形如(P)/D的多项式,其中P是n的整系数多项式,D为整数. 问是否对于所有的正整数n,该多项式的值都是整数. 分析: 可以用数学归纳法证明,若P(n)是k次多项式,则P(n+1) - ...
- LA 4728 (旋转卡壳) Squares
题意: 求平面上的最远点对距离的平方. 分析: 对于这个数据量枚举肯定是要超时的. 首先这两个点一定是在凸包上的,所以可以枚举凸包上的点,因为凸包上的点要比原来的点会少很多,可最坏情况下的时间复杂度也 ...
- HttpContext.Current.RewritePath方法重写URL
if (!IsPostBack) { //如果请求ID为空,则重写URL为:~/index.aspx?ID=shouji.115sou.com if (Request.QueryString[&quo ...
- PS流格式
概念: 将具有共同时间基准的一个或多个PES组合(复合)而成的单一的数据流称为节目流(Program Stream). ES是直接从编码器出来的数据流,可以是编码过的视频数据流,音频数据流,或其他编码 ...
- Free Pascal的IDE界面乱码解决方法
右击[Free Pascal]快捷图标,选[属性] [属性]窗口中,选择[选项]页,下拉[当前代码页(C)],选择[437 (美国)] 按[确定] 注意:[开始]菜单和桌面中的快捷图标都得设置.
- hdu 2845(dp基础题)
题意:容易理解. 分析:以后碰到这种类型的题,就要考虑把矩阵先按行来处理,再按列处理.先算出每行能够能够得到的最大值,然后按列处理即可. 代码实现: #include<stdio.h> # ...
- POJ 3621 Sightseeing Cows 01分数规划,最优比例环的问题
http://www.cnblogs.com/wally/p/3228171.html 题解请戳上面 然后对于01规划的总结 1:对于一个表,求最优比例 这种就是每个点位有benefit和cost,这 ...
- Ye.云狐J2刷机笔记 | 完美切换内部存储卡和SD卡的改法.vold.fstab
================================================================================Ye.完美切换内部存储卡和SD卡成功.v ...
- C++指针的引用
[1]指针的引用,必须加上头文件<iomanip>因为调用类setw() 对一个数据可以使用“引用”(reference)这是C++ 对C的一个重要扩充,引用是一种新的 ...
- bzoj 2595 [Wc2008]游览计划(斯坦纳树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2595 [题意] 给定N*M的长方形,选最少权值和的格子使得要求的K个点连通. [科普] ...