codeforces
文章平均质量分 60
slowlight93
这个作者很懒,什么都没留下…
展开
-
codeforces goodbye2014
B题意:给一个n排列, 和一个nxn矩阵,矩阵中元素代表那些位置上的元素可以互相交换,要搞出字典序最小的排列。。思路:floyd一遍,然后位置从小到大,将能放在该位上最小的元素与该位置上现在的元素交换,,如果两个位置之间存在一条路径,是可以进行一系列交换使得最后等效于他们直接交换。。一开始没想到,用了个vis禁掉已经换过的位置,然后模拟交换过程。。。直接FST。。#includeus原创 2015-01-01 00:30:28 · 512 阅读 · 0 评论 -
srm 653 div2 1000(dp)
题意: 一个序列的值定义为其差分结果的绝对值之和。例如, {1, 2, 3} 值为 abs(2-1) + abs(3-2) = 2 现在有一个长度大于等于1的序列,要求把它分成两个子序列,使得两个序列的值之和最小。 思路: 一开始想残了。。 打算用f[A唱最后一个音][B唱的最后一个音]f[A唱最后一个音][B唱的最后一个音]这个状态,显然这是个n3的复杂度。。。 其实,我们只要考虑f[原创 2015-03-17 22:36:56 · 512 阅读 · 0 评论 -
codeforces 285(树,康托展开,组合,二分)
501C Misha and Forest只要看出这是一个包含若干棵树的森林就好办了,从叶子开始删除。。504B - Misha and Permutations Summation Factorial number system 或者康拓展开康拓展开是 排列 和 十进制整数之间的双向映射,转换的中间结果可以表示在中 Factorial number syste原创 2015-01-16 23:31:52 · 781 阅读 · 0 评论 -
codeforces 505C Mr. Kitayuta, the Treasure Hunter(DP)
题意:数轴上点[0, 30000]。先从 0 跳到 d, 以后每次跳的步数是 {prev-1, prev, prev+1}。跳到某个点上可以得到相应的value,求可以得到最大的value。思路:n, d 最大都是30000, 所以 min_step >= d-246, max_step所以方程 f[i, j] 当前在 i, 前一次跳的长度是 j注意要把 [min_step,原创 2015-01-22 17:45:55 · 886 阅读 · 0 评论 -
codeforces 515D Drazil and Tiles
题意: 类似骨牌覆盖。在n*m的格子上有一些不能放的格子。 询问是否有唯一的方法用1x2的牌覆盖地图。 思路: 建图:如果两个空格相邻,则连一条边。并计算每个格的度数。 然后用类似删源点法的方法不断删去度为1的格子和它的邻居。 如果最后有剩下的格子可以证明边是可二着色的(必然偶环?)#include<bits/stdc++.h>using namespace std;#define S原创 2015-02-18 22:59:34 · 541 阅读 · 0 评论 -
codeforces 444C DZY Loves Colors(线段树)
题意:[1, n] 中ai的有两个属性,颜色,累积和。定义两种操作,1:区间染色 2:区间查询。当一个点的颜色变化时,累积和 += abs(new - old)。。。思路:对线段树上每个节点维护三个属性, sum(和), color(颜色), sign(累积和)。。pushdown:如果当前节点上 sign 不为0 (区间修改的结果放在这个节点上,还没更新到子节点), sign[原创 2015-01-21 20:17:06 · 1102 阅读 · 0 评论 -
codeforces 351A Jeff and Rounding(区间枚举)
题意 给2n个实数。 拿n个出来做floor,剩下的取ceil。 d为操作前后元素的和之差的绝对值,求最小的d。 思路 PS:感觉像这样的 现将所有的元素统一操作一遍,然后从中间选若干个 遇到的题有贪心,dp,枚举。。 快形成一种思路了,应该总结下类似的题。。 设小数部分x[i] 先将所有的数取floor,d = −∑x[i]-\sum{x[i]} 然后只要选n个数出来ceil原创 2015-02-09 17:49:57 · 445 阅读 · 0 评论 -
codeforces 327C Magic Five
题意: 给了一个数字串s,和正整数k。k是s重复的遍数。 求有多少种不同的删除元素的方法,使得删除后的数字时5的倍数。 答案mod 1e9 7 思路: 先解决不存在周期的情况。 考虑s[i]=0 或 5,将它右边的数全部删去,即将它变成末位。 则答案增加2cnt[i]2^{cnt[i]}, cnt[i]是其左边的位数。 答案则是 ∑s[i]=0,52i(modM)\sum_{s[i原创 2015-02-09 16:40:13 · 570 阅读 · 0 评论 -
codeforces 500D New Year Santa Network (树结构, 组合, 概率(注意精度))
题意:给了一颗树,和它的边权。。然后给若干修改,每次改一条边的权值。。问题是,每次修改后随机找三个不同的点,求 E( d(a, b)+d(a, c)+d(b, c)) 。。。思路:如果是随机选两个点,就好办得多了。我们让1作为root, 如果 (u, v) 修改后变化了 d, 那么它对总权值的贡献是 size(k)*(n-size(k))*d, k = size(u) size(原创 2015-01-17 18:25:02 · 852 阅读 · 0 评论 -
codeforces 576B Invariance of Tree (观察)
题意: 。。。 思路: 尝试把排列分解成若干个环。 然后就会发现如果在环中连了一条边,最终整个环就会被连上。 所以有以下结论 1)如果有大小为1的环,即置换后不变的点,把其他点全部连在这个点上。 2)剩下的环中,如果存在奇环,则无解。 3)剩下的环中,如果不存在长度为2的环,则无解。 4)拿出一个长度为2的环,其它的环拆开后连在这个环的两个端点上,可以构造出树。typedef ve原创 2015-09-11 11:39:26 · 801 阅读 · 0 评论