[置顶] Codeforces Round #198 (Div. 1)(A,B,C,D)
http://codeforces.com/contest/341
赛后做的虚拟比赛,40分钟出了3题,RP爆发。
A计数问题
我们可以对每对分析,分别对每对<a, b>(a走到b)进行统计,那么这对<a, b>产生的期望为distance(a, b)/n
(把这一对选出来以后相当于一个点,那么分子distance(a, b)*(n-1)!,分母n!, (n-1)被约掉了。)
这样的算法是O(n^2)的,问题转化为统计所有对<a, b> 的距离。我们可以对输入的a数组排序
那么对于每对<a,b>可以拆成几段相邻a数组的值之差。
对于零到其它点另外拿出来考虑,显然ans += 所有a数组的值,
没有零的情况,枚举相邻a数组的值,然后统计经过这两个点的<a,b>对数(注意方向有两种,要乘以2)。
看上去很多,但有了思路就很快的。
B最长不下降序列O(n*log(n) )
找找规律可以发现,对于每个数,它后面有比它小的数,那么它们就有一条边,我们找独立点集是找没边的,
所以对于一个数,在它后面的数我们只能选择大于等于它的数。
C裸的容斥
《组合数学》里面容斥那章有很多类似的题目,记得某次浙大月赛也出过类似的题,这种题已经做烂了。
D二维树状数组
赛后补的题,比赛的时候想用线段树做,但二维线段树空间开不下, 一维是可以做的。
我们先分析一维树状数组的做法,树状数组是向后更新向前查询的,
对于(1---n),我们先假设更新都是(x---n), 查询都是(1---x),其它情况可以分成2个更新或2个查询。
更新 xor v:若x为奇数,那么我们要查询x+1,x+3.....时这个v值是没有用的(抑或掉了)。 有用的是x+2,x+4....
若x为偶数,反之亦然。
很显然我们开两个树状数组,分别是奇数位置和偶数位置。
查询: 若x为奇数,查询奇数的树状数组
若x为偶数,查询偶数的树状数组
推广到二维也是一样的。
[置顶] Codeforces Round #198 (Div. 1)(A,B,C,D)的更多相关文章
- [置顶] Codeforces Round #197 (Div. 2)(完全)
http://codeforces.com/contest/339/ 这场正是水题大放送,在家晚上限制,赛后做了虚拟比赛 A,B 乱搞水题 C 我是贪心过的,枚举一下第一个拿的,然后选使差值最小的那个 ...
- [置顶] Codeforces Round #190 (Div. 2)(完全)
好久没有写博客了,一直找不到有意义的题可以写,这次也不算多么有意义,只是今天是比较空的一天,趁这个时候写一写. A. B. 有一点贪心,先把每个拿去3的倍数,余下0或1或2,然后三个一起拿. 对于以上 ...
- Codeforces Round #198 (Div. 2)A,B题解
Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...
- Codeforces Round #198 (Div. 2) E. Iahub and Permutations —— 容斥原理
题目链接:http://codeforces.com/contest/340/problem/E E. Iahub and Permutations time limit per test 1 sec ...
- Codeforces Round #198 (Div. 1) D. Iahub and Xors 二维树状数组*
D. Iahub and Xors Iahub does not like background stories, so he'll tell you exactly what this prob ...
- Codeforces Round #198 (Div. 2)
A.The Wall 题意:两个人粉刷墙壁,甲从粉刷标号为x,2x,3x...的小块乙粉刷标号为y,2y,3y...的小块问在某个区间内被重复粉刷的小块的个数. 分析:求出x和y的最小公倍数,然后做一 ...
- Codeforces Round #198 (Div. 1) B,C 动态规划
比赛时,开了大号去做,算了半天发现不会做A,囧.于是跑去看B,发现很水?于是很快敲完了,但是A不会,没敢交.于是去看C,一直找规律啊,后来总算调了出来,看了一下榜,发现还是算了吧,直接去睡觉了.第二天 ...
- Codeforces Round #198 (Div. 2) —— D
昨天想了一下D题,有点思路不过感觉很麻烦,就懒得去敲了: 今天上午也想了一下,还是没有结果,看了一下官方题解,证明得很精彩: 这道题目其实就是一道裸地最大上升子序列的题: 看到这里,直接怒码···· ...
- Codeforces Round #198 (Div. 2) —— C
C题很容易看懂题目,不过两个循环肯定会TLE,所以得用点小聪明: 首先排好序,因为是全排列,乱序和顺序的结果是一样的: 然后呢···· 如果是数列 1 2 3 4 5 元素1 被 2 3 4 5每个减 ...
随机推荐
- CentOS6.5 yum安装桌面环境
安装原因 安装centos6.5时选择了minimal CentOS最小化安装方式 需要使用浏览器拨号连接内网 安装过程 通过yum grouplist查询在 group 软件包中,Desktop.D ...
- angularjs入门整理
之前发过一篇博文,从mobile angular ui的demo和其官网初识整个angularjs的大体使用,但是没很好学习,只是通过一些技术博文初步认识,陷入很多坑.所以现在在中文官网正式整理下知识 ...
- CANoe 入门 Step by step系列(一)基础应用【转】
CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多. 硬件我使用的是CAN case XL. 1,CANoe软件的安装很简单,先 ...
- python路径函操作
#判断是否为文件 os.path.isfile #判断是否为目录 os.path.isdir #返回文件名 os.path.basename(path) #返回文件目录 os.path.d ...
- 机务UI设计小节
1.CSS样式 .header { background-color:#7A8692; color:White; height:30px; font-size:16px; width:100%; li ...
- Google提议使用Jsonnet来增强JSON
Google开源了一门配置语言Jsonnet来取代JSON,它完全向后兼容并加入了一些新特性:注释.引用.算术运算.条件操作符,数组和对象内含,引入,函数,局部变量,继承等.Jsonnet程序被翻译为 ...
- jsconsole
在移动设备或者其他无法启动 chrome developer tools 的时候可以用以下方法进行console 步骤: 1. 进入 http://jsconsole.com 的console画面,在 ...
- 运行时改变控件的大小(点击后立刻ReleaseCapture,然后计算位移,最后发消息改变位置)——最有趣的是TPanel其实也有窗口标题,因此可发HTCAPTION消息
//光标在控件不同位置时的样式 // 由于拐角这点手动精确实在困难 所以用范围 范围+3 这样很容易就找到这一点了 procedure CtrlMouseMove(Ctrl: TWinControl; ...
- java.sql.SQLException: Can not issue executeUpdate() for SELECTs
未处理的多个select语句 解决方法就是:查看有没有用了同一个连接来处理多个SQL语句!
- 14.8.1 Creating InnoDB Tables 创建InnoDB 表
14.8.1 Creating InnoDB Tables 创建InnoDB 表 创建一个InnoDB表,使用CREATE TABLE 语句,你不需要指定ENGINE=InnoDB 子句 如果Inno ...