戳我看题目

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的圆对O的反演就是一条不过O的直线,现在两个圆只相交于O点

,反演之后的两条直线也应该相交于O点的反演点O*,而O*位于无穷远处,所以两直

线平行,所以两个圆只有一个交点这件事情就可以转换成a b c d构成一个平行四边形

。。下面的事情就简单了。反演后对中点哈希即可。

https://github.com/becauseofyou/Contests/tree/master/Codeforces/CF_219div1

Codeforces Round #219 (Div. 1)(完全)的更多相关文章

  1. 数学 Codeforces Round #219 (Div. 2) B. Making Sequences is Fun

    题目传送门 /* 数学:这题一直WA在13组上,看了数据才知道是计算cost时超long long了 另外不足一个区间的直接计算个数就可以了 */ #include <cstdio> #i ...

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

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

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

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

  6. Codeforces Round #219 (Div. 2) D题

    D. Counting Rectangles is Fun time limit per test 4 seconds memory limit per test 256 megabytes inpu ...

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

  8. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  9. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

随机推荐

  1. CodeForces Round #290 Fox And Dinner

    而是Div2的最后一题,当时打比赛的时候还不会最大流.自己能够把它写出来然后1A还是很开心的. 题意: 有n个不小于2的整数,现在要把他们分成若干个圈.在每个圈中,数字的个数不少于3个,而且相邻的两个 ...

  2. hdu 4604 Deque(最长不下降子序列)

    从后向前对已搜点做两遍LIS(最长不下降子序列),分别求出已搜点的最长递增.递减子序列长度.这样一直搜到第一个点,就得到了整个序列的最长递增.递减子序列的长度,即最长递减子序列在前,最长递增子序列在后 ...

  3. 如何用css3实现风车效果

    前面讲过css3可以替代很多js实现的效果,其实很多时候纯css3甚至可以替代图片,直接用css3就可以画出一些简单的图片.虽然css3画出来的图片效果可能不如直接用图片的好,实现起来也比较复杂,最麻 ...

  4. .gitignore的使用:首次创建及事后添加无法生效.

    问题:使用sourceTree做版本管理后, Xcode工程每次打开, 都会有几个xcodeworkspace之类的文件提示改动了. 如果想ignore掉, 有两种情况: 1:整个工程没有纳入版本管理 ...

  5. MySQL auto_increment的坑

    背景: Innodb引擎使用B_tree结构保存表数据,这样就需要一个唯一键表示每一行记录(比如二级索引记录引用). Innodb表定义中处理主键的逻辑是: 1.如果表定义了主键,就使用主键唯一定位一 ...

  6. ubuntu12.10设置thunderbird开机自启动

    sudo gedit eclipse.desktop #创建一个thnuderbird.desktop文件 [Desktop Entry] Type=Application Exec=/usr/bin ...

  7. Strom-7 Storm Trident 详细介绍

    一.概要 1.1 Storm(简介)      Storm是一个实时的可靠地分布式流计算框架.      具体就不多说了,举个例子,它的一个典型的大数据实时计算应用场景:从Kafka消息队列读取消息( ...

  8. 基于Fragment实现Tab的切换,滑出侧边栏

    最近在学习Fragment(碎片)这是android3.0以后提出的概念,很多pad上面的设置部分都是通过Fragment来实现的,先看看具体的效果吧(图一)  (图二) (图三)第一章图片是初始时的 ...

  9. DevExpress licenses.licx 的解决方法 z

    在 使用DevExpress控件的时候.每次对窗体进行更改的时候,都会出现一个对话框.发布的时候 也会出现一个对话框.之前的解决方法是在发布的时候把licenses.licx给删除掉,但是这个方法治标 ...

  10. Chromuim开发机配置

    一个出色的程序员需要一台给力的电脑. 之前使用ThinkPad R400笔记本编译Chromium,确实太痛苦了,第一次编译未使用SSD,超过了24小时都没有编译完.后来断断续续折腾了将近一个月才编译 ...