codeforces
MathonL
这个作者很懒,什么都没留下…
展开
-
Codeforces 567E President and Roads
@(题解)[Codeforces|Dijkstra|最短路|最短路径数|好题|567E]Codeforces 567E President and Roads 题意:给出一个有向图,给出起点s,和终点t,总是从s沿着最短路径走到t,对于每一条边询问是否一定会经过这条边,如果是输出yes。如果不是,能否通过把减少这条边的权值(但不能减少到0)使这条边成为沿着最短路走一定会经过的边。如果能,输出需要原创 2015-08-13 20:09:29 · 474 阅读 · 0 评论 -
Codeforces 590B Chip 'n Dale Rescue Rangers
题意: 一艘飞船相对空气的最大速度是V,一开始风速是F⃗ 1\vec F_1(x1,y1), T秒后风速变为F⃗ 2\vec F_2(x2, y2),求从s点(a1,b1)到e点(a2,b2)的最短时间.输入保证飞船相对空气的最大速度大于风速. 分析: 这道题很巧妙的利用了向量的性质,当最短时间t≤Tt \leq T的时候很明显可以直接计算出答案,现在考虑t>Tt > T的时候, 设飞船前T原创 2015-10-27 23:51:11 · 511 阅读 · 0 评论 -
Codeforces 482C Game with strings
题意:给你n个长度为l的字符串,1<=n<=501<=n<=50,1<=l<=201<=l<=20,选出一个字符串,每一次操作你可以知道这个字符串某个位置的字符,问多少次可以操作可以唯一确定这个字符串是哪个。求出对于所有字符串,可以唯一确定一个字符串的操作数的期望。 思路:这是一个概率题,概率题最重要的就是不重复不遗漏。因为这里l的长度只有20,所以可以考虑枚举每一次猜的哪个位置。比如对于abc,a原创 2015-09-07 16:24:32 · 697 阅读 · 0 评论 -
Codeforces 487b Strip, dp + RMQ(经典)
题意:有一个长度为n的数列,问是否能把这个数列切成连续的几段,使得 1.每一段长度大于等于l;2.每一段中的最大值和最小值之差小于等于s。如果能输出能切成的最小的段数,不能输出-1。 思路:非常经典的dp题目,假设dp[i]表示a1...aia_1...a_i这个序列能切成的最小段数,如果不能dp[i] = INF。现在问题是 1.如何找到状态转移方程。考虑如果l = 3, s = 1,如果ai原创 2015-09-06 10:21:05 · 526 阅读 · 0 评论 -
Codeforces 460d Littel victor and set
题意:给出一个范围[l,r],以及一个数k,让从[l,r]这个区间中选不超过k个数a1, a2, a3…an,使f = a1^a2^a3…^an最小。 思路:就是一个找规律的数学题。可以先从两个的入手,然后再从4个的入手,最难得其实是3个数的情况,但是仔细分析不难观察到其规律,代码已经很能说明思路了就不再反复写了。 代码: /*************************************原创 2015-09-04 16:15:07 · 388 阅读 · 0 评论 -
Codeforces 156b Suspects
题意: 询问n个嫌疑人,每个人有两种回答,+i和-i, +i表示第i个人是罪犯,-i表示第i个人不是罪犯,每个人能且只能回答一次,已知有m个人说的是实话,问第i个人说的是实话还是谎话,或者不能确定. 思路: 这个题其实重点就是根据有m个人说实话去判断谁是罪犯. 朴素的思路就是假设第i个人是罪犯,然后扫描所有人的回答,检测是否有m个人在说实话.但是这样复杂度是O(n2)O(n^2). 接下来就是如果去原创 2015-09-08 22:46:12 · 766 阅读 · 0 评论 -
Codeforces 156c Cipher
题意:给一个字符串s,有两种操作,对于1<=p<|s|,1.s[p]++, s[p+1]–2.s[p]–,s[p+1]++。如果进行操作后 s[p]或者s[p+1]不为小写字母,则操作非法。可以进行无数次这样的操作,通过这两个操作可以变化出多少种不同的字符串。 思路:可以发现无论进行多少次这样的操作,字符串s每一位的ascii码值之和都不会改变,并且对于任意两个长度相同并且每一位的ascii码值之和原创 2015-09-09 19:42:20 · 904 阅读 · 0 评论 -
Codeforces 460C Present
题意:有n多初始高度不同的花,每次浇水可以浇相邻的w朵花,每一次浇水花都会长高一个单位,可以浇m次,问怎样浇水才能使最低的那朵花最高。最高是多少。 思路:很显然的最大化最小值问题。仔细观察可以发现并没有一个可以直接算出答案的思路,但是考虑到如果如果最低能够达到H的高度,那么比H低的高度也肯定都可以满足,如果不能够达到H的高度,比H高的高度也就不能达到,所以如果给定一个高度H,可以很方便的判断是否所有原创 2015-09-04 13:53:52 · 1265 阅读 · 0 评论 -
Codeforces 156D Clues (图论, 并查集, 卡特兰数)
题意:给出一个森林,问用最少的边将其连接成一颗树有多少种连接方式. 思路:这道题是一个推导公式的题,涉及到树的生成数计数的问题,但是我现在仍然不知道题目中的n^p是怎么用得到的,先挖个坑在这儿,以后明白了再来填坑. 代码: #include <bits/stdc++.h> using namespace std; const int maxn = 100000 + 5; int par[maxn];原创 2015-09-07 19:57:43 · 813 阅读 · 0 评论 -
Codeforces 592D Super M
题意:给出一颗节点数为n的树,其中有m个点必须要访问到,起点可以任意,每一次只能从当前点走到相邻点,每个点可以重复走,每走一步需要花费一个单位的时间,求把m个点走完最少需要花费的时间,并使得起点的编号最小. 分析:这道题比赛的时候并没有一点思路,赛后看了官方的题解才知道怎样做,代码写的很挫,没想到wa了一发改了一个小地方后直接AC,还是有点小激动. 1.根据观察可以发现,起点一定是m个点中的一个原创 2015-11-01 21:16:25 · 611 阅读 · 0 评论