Codeforces Round #163 (Div. 2) (完全)
来源:互联网 发布:js让金额不为0 编辑:程序博客网 时间:2024/05/18 02:22
这次比赛前两题切得算比较快,可惜C题一直RE,比赛结束后2分钟就找出了错误,果然在系统判完后交了一下AC,心痛啊,编译器也很神奇,竟然没有出现RE,排序的地方出现了小问题,诶,长经验了。最后接近紫色1656,下次继续努力。
C 贪心
我的思路: 分别对行列处理。
行::把每行按一定规则排序, 规则如下:
1. 把 行中1的个数多的放到下面
2. 如果个数相同,比较最后一个1所在的列数,列数大的放在下面
然后根据排序后的情况推出交换行的过程。
列::把每行按一定规则排序, 规则如下:
1. 把 行中1的个数多的放到左边
2. 如果个数相同,比较最前一个1所在的列数,列数大的放在左面
然后根据排序后的情况推出交换列的过程。
code
D最短路+二分
n 200, 可以用O(n^3)过。
通过分析,发现距离的2倍必定是一个整数,我们不妨把所有的边都扩大两倍,方便处理。
先用floyd() 预处理出任意两点之间的距离。
这里距离有个单调性,即距离越大所能到达的节点越多,
所以我们二分距离, 对给定的距离判断是否合法,合法就保存。
这样就可以记录一个最短合法距离了。
code
E 线段树成段更新
节点可以保存 ai* i^k的和 (l<= i <= r,i表示线段中的坐标) 这一信息。自然维护是很容易的。
但询问的时候,题目要的是 ai* (i-1+l)^k的和, 我们可以通过 ai* i^k的和 向其转化。
转化如下:
我们假设-l+1 = v, 表示偏移量,假设节点信息关于j(指数)的关系为F(j),则有
可见我们要用一个二维数组保存节点的信息(seg[6][maxn<<2])。
预处理出组合数C[0][0] ---- C[6][6], sum[j][i](表示 1^j+2^j+.......+i^j)。
然后维护一下节点信息即可
code
- Codeforces Round #163 (Div. 2) (完全)
- Codeforces Round #163 (Div. 2)(完全)
- Codeforces Round #158 (Div. 2) (完全)
- Codeforces Round #160 (Div. 2)(完全)
- Codeforces Round #161 (Div. 2)(完全)
- Codeforces Round #161 (Div. 2)(完全)
- Codeforces Round #162 (Div. 2) (完全)
- Codeforces Round #164 (Div. 2) (完全)
- Codeforces Round #165 (Div. 2)(完全)
- Codeforces Round #168 (Div. 2) (完全)
- Codeforces Round #167 (Div. 2) (完全)
- Codeforces Round #169 (Div. 2) (完全)
- Codeforces Round #169 (Div. 2)(完全)
- Codeforces Round #171 (Div. 2)(完全)
- Codeforces Round #171 (Div. 2)(完全)
- Codeforces Round #177 (Div. 2)(完全)
- Codeforces Round #178 (Div. 2)(完全)
- Codeforces Round #178 (Div. 2)(完全)
- JS事件绑定
- Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
- Hibernate 第二讲 Hibernate原理
- 如何设置server 2003 的半连接数防止syn flood攻击
- poj 1338 Ugly Number(DP)
- Codeforces Round #163 (Div. 2) (完全)
- Android自定义Button按钮显示样式
- Ivy配置
- POJ 1088滑雪(纯DP的方法)
- poj 1015 Jury Compromise(神一般的DP)
- 一点疑惑关于object-c,c,c++
- Hibernate 使用原生SQL
- Java 代码简化系列 (一)
- 对于Drupal来说,使用Omega 还是Zen?