codeforces
文章平均质量分 73
u013912596
这个作者很懒,什么都没留下…
展开
-
Codeforces (441C) Round #252 (Div. 2) C题
题目链接:http://codeforces.com/contest/441/problem/C题目大意:有一个n*m的矩阵,你需要用k根管道填满这个矩形,管道只能横着或者直着放,不能斜着放。让你每行输出管道的经过点的坐标。因为有很多种放置方法,所以只需要输出满足条件的任意一种就行。由于n, m, k (2 ≤ n, m ≤ 300; 2 ≤ 2k ≤ n·m),所以前面k-1根管道只原创 2014-06-10 14:25:49 · 819 阅读 · 0 评论 -
Codeforces 463C. Gargari and Bishops
题目大意:给出一个n*n的棋盘,要在这个棋盘上放两个象(能将以自己为中心的两条斜对角线上的子全部吃掉),要求两个象不能吃到相同的子,问最后最大能够吃到的价值,和需要在哪两个点上放置这两个象。做法:首先我们需要知道在每个点上防置象能吃到多少,怎么解决这个问题?我们可以将左斜方向和右斜方向的每一行编号,然后分别计算出每一行的价值,最后将每个点对应的左斜右斜的伤害加起来再减掉当前点的原创 2014-08-31 15:16:07 · 570 阅读 · 0 评论 -
Codeforces 144D. Missile Silos【dijkstra】
题目大意:给出一个图,一个源点s,问距离这个源点的最短距离恰好为 l 的点有多少个(这个点可以在边上,可以在节点上)。做法:首先用dijkstra算法求出每个节点到s的最短路d[]数组,然后对于每条边w(u,v)来说有下面三种情况是合法的:1:d[u]l2:d[v]l3:d[v]对于上面每种情况,ans++,另外每个d[i]==l 的原创 2014-08-31 14:07:20 · 787 阅读 · 0 评论 -
Codeforces 85B. Embassy Queue【线段树、贪心】
题目大意:每个人要办理签证都必须到大使馆中办理三种手续,而且这三种手续办的顺序是固定的。给出办理每种手续的窗口有多少个,办理每个手续花费的时间,有多少人会来办理手续,一级每个人会在什么时间来。要求的是所有人分别在大使馆待的最长时间是多少。做法:一种贪心的做法,由于只有三种手续,那么每个人进入办理的时候,保证选办理同种手续的所有窗口中最早等待的那一个窗口(为什么会有等待?因为该窗原创 2014-09-01 14:05:28 · 894 阅读 · 0 评论 -
Codeforces 362C. Insertion Sort【构造】
题目大意:给出一个排列,问交换某两个数之后,该排列的逆序数最小为多少,并找出可以交换多少对数能够得到这样的逆序数。做法:由于数据范围只有5000,那么直接暴力O(n^2)也是可行的,既然如此,我们暴力枚举两个交换的元素的下标,思考一下交换之后,整个序列的逆序数会怎么改变。假设我们交换的是a[i],a[j](由于需要得到的是逆序数最小,那么交换的两个数满足,a[i]>a[j]),原创 2014-09-02 13:23:48 · 1139 阅读 · 0 评论 -
Codeforces 242E. XOR on Segment【线段树】
题目大意:给出一个序列,有两种操作,一种是计算l到r的和,另一种是让l到r的数全部和x做异或运算。做法:很显然直接暴力是不可能的(但是这题刚刚出来的时候,很多人用暴力水过去了,后来加强的数据吧),又是两种操作,又想到了线段树。。但是这并不简单,异或操作该怎么处理?异或是一种位运算,如果x的第j位是1,那么说明l到r的每个数的第j位都要反转,(0^1=1,1^1=0),如果是0,那么原创 2014-09-02 14:55:48 · 965 阅读 · 0 评论 -
Codeforces 507D (Round #287(div.2))D. The Maths Lecture【数位DP】
题目地址:http://codeforces.com/contest/507/problem/D题意:给出n,k,m,问满足一下条件的数字有多少:1.这个数刚好有n位;2.这个数存在某非空的后缀Si,满足Si%k=0;3.这个数大于0;解法:这个题是个数位DP,我们考虑从数的右边往左边构造的方法。定义这样的DP数组, dp[i][j][0]:表示有i位数位,mod原创 2015-01-25 12:57:19 · 1111 阅读 · 0 评论 -
Codeforces Round #283(div.2) 496C C. Removing Columns
题目地址:http://codeforces.com/contest/496/problem/C题目大意:给出一个n*m的字符矩阵,你能做的操作是每次删除一列,问能够最少删除几列使得字符串矩阵的每行的字符串从上到下顺序是字典序。做法:这个题很简单,属于那种解法容易想出来,但是写法复杂的题目。这个题的解法很容易想到,遍历每一列,检查这一列是否需要删除即可。那么该怎么判定某一列是否需要原创 2015-01-26 20:23:56 · 594 阅读 · 0 评论 -
Codeforces Round #286 div.2 D 505D. Mr. Kitayuta's Technology【强连通分量,弱联通分量】
题目链接:http://codeforces.com/contest/505/problem/D题目大意:在一个图中,有n个顶点,给出m对数字(u,v)表示顶点u和顶点v必须直接或者间接相连,让你构造一个这样的图,输出最少需要多少条边。分析:毫无疑问,n个顶点的话,我们最多可以用n条边,使得n个顶点构成一个环,满足所有的情况(任意两点都是联通的),但是这并不一定是最少的边。于是原创 2015-01-28 17:01:03 · 1427 阅读 · 0 评论 -
Codeforces Round #286 div.1 D 506D D. Mr. Kitayuta's Colorful Graph【并查集】
题目链接:http://codeforces.com/problemset/problem/506/D题目大意:给出n个顶点,m条边,每条边上有一个数字,代表某个颜色。不同数字代表不同的颜色。有很多个询问,每个询问问有多少条纯种颜色的路径使得某两个点联通。分析:这个题一看就想用并查集来搞,每种颜色用一个并查集处理。对于输入的每条边,我们只需要将这两个点在这条边的颜色对应的并查集中合原创 2015-01-30 01:40:44 · 2588 阅读 · 0 评论 -
Codeforces 463D. Gargari and Permutations【DP】
题目大意:给出1~n的k个排列(2做法:算是不难的DP,dp[i]表示以i为结尾的最长公共子序列的长度,由于每个数在一个排列中只可能出现一次,我们用一个二维数组pos[i][j]表示数字j在第i行出现在第几个位置,再用一个数组cnt[i] 记录i出现了多少次;当第i个数出现了k次之后,说明能够以该数为结尾构成公共子序列,那么dp[i]=max(dp[j]+1),其中i,j满足p原创 2014-08-31 14:52:41 · 867 阅读 · 0 评论 -
Codeforces 319B. Psychos in a Line【栈】
题目大意:一串数列,每一个值如果大于相邻右一位的值的话,那么就可以把右边这个值“吃掉”(右一位消失,原来的值不变),问需要吃多少次才能到达无法再吃的状态。做法:利用栈。遍历一遍数组,处理每个值的时候,如果栈顶的元素小于该值,那么将其弹出,知道栈顶元素大于该值或者栈为空,栈内的每个元素记录下一个属性:他是在第几次被“吃掉”,进栈的新元素的被吃次数就是它弹出去的元素中的属性的最大值原创 2014-08-31 14:48:56 · 1419 阅读 · 0 评论 -
Codeforces 383C . Propagating tree【树状数组,dfs】
题目大意:有一棵树,对这个树有两种操作:1:表示为(1 x val),在编号为x的节点上加上val,然后给x节点的每个儿子加上- val,再给每个儿子的儿子加上-(- val),一直加到没有儿子为止。2:表示为(2 x)查询x节点上的值。做法:由于每次修改操作修改的并不是一个值,而是很多值,那我们将该题抽象成区间修改,点查询的问题。那怎么抽象呢?可以明白的是,每次操作虽然有加有减,但是原创 2014-08-31 01:09:28 · 1225 阅读 · 0 评论 -
Codeforces (441B) Round #252 (Div. 2) B题
题目链接:http://codeforces.com/contest/441/problem/B题目大意:有一个果园里有很多树,上面有很多果实,为了不然成熟的果实腐烂,必须在两天之内收集起来。给出果园有的树,以及该树上的果实个数,工人每天可以采集的上限,求出这段时间之后,能收集到的最大值很简单,维护一个一维数组ans[],首先将数据存在结构体中,再按果实成熟的日期ai升序排序,优先将果实计原创 2014-06-09 03:07:09 · 1258 阅读 · 0 评论 -
Codeforces (441A) Round #252 (Div. 2) A题
题目链接:http://codeforces.com/contest/441/problem/A简简单单的考实现代码能力原创 2014-06-09 02:54:50 · 966 阅读 · 0 评论 -
Codeforces (439B) Round #251 (div.2) B题
题目链接:http://codeforces.com/contest/439/problem/B题目大意:给你个任务,教导一个愚笨的人,学科目很慢。但是有一个特点,学习第一科的每一个章节需要x小时,之后学习其他科就会依次少一个小时,最少一个小时,给出他锁要学的科目的数量n和学习第一科所需要的时间x,每一个科目所需要学习的章节。求出教会他科目的最短时间。思路超级简单,只需要把每个科目的章节数原创 2014-06-08 18:57:55 · 783 阅读 · 0 评论 -
Codeforces 258B. Little Elephant and Elections【数位DP,DFS】
B. Little Elephant and Electionstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere have recently been e原创 2014-08-23 16:00:25 · 1011 阅读 · 0 评论 -
Codeforces 379D. New Year Letter【动态规划、暴力枚举】
题目大意:给出如下定义: s(n)=s(n-2)+s(n-1),其中s为字符串,+为串联,比如s1="ab",s2="cd",s1+s2="abcd",s2+s1="cdab"。给出k,x,n,m,求满足使字符串s(k)中子串“AC”的个数恰好等于x的s1,s2字符串,如果有多种可能,随意输出。做法:我们将“AC”其分成两个部分,一种是在s1,s2内部的“AC”,一种是在s原创 2014-08-23 22:25:06 · 739 阅读 · 0 评论 -
Codeforces 282E. Sausage Maximization【trie树(非指针版)】
题目大意:给出一串数,pre[i](前i个数的异或)为a[0]~a[i-1]的异或,post[i](后缀的异或)为a[i]~a[n-1]的异或,求pre[i]^post[j]的最大值(0做法:利用trie树将后缀或者前缀存储起来,首先从pre[n]开始,往前遍历,对于每个前缀,将此时的后缀添加到trie树中,再在trie中寻找与当前前缀异或之后能得到最大的值。在trie原创 2014-09-08 18:27:59 · 886 阅读 · 0 评论 -
Codeforces 132C.Logo Turtle【DP,dfs】
题目大意:在一根数轴上有一只机器龟,它能够听从人们给它的指令做出向前走一步(F)和向后转(T)的操作。给出初始操作,你最开始有修改n步指令的权利(每一个指令可以被修改很多次),问在你修改n次之后,海龟离原点的最大距离。做法:很直观的想法,尽可能的将T转化为F,也算是一种贪心的做法吧。我们用dfs(i,j,t,cur),其中i表示当前遍历的命令的序号,j表示从0~i过原创 2014-08-25 15:18:45 · 876 阅读 · 0 评论 -
Codeforces 371D. Vessels【并查集】
题目大意:给出一堆从上到下叠起来的容器,有两种操作:第一种是在编号为i的容器中加入x的水(保证水溢出之后会流到下一个最近的容器(如果存在)中);第二种是查询编号为i的容器中有多少水。做法:首先,想想暴力?但是如果直接暴力,那肯定超时了。每次的加水操作都必须一步步的推向能够容纳从上面溢出的水的容器,这样来十万次操作,一定是T了。那该怎么办呢?我们面对一个在 i 容器中加水的操作,要是能短原创 2014-08-28 19:06:32 · 807 阅读 · 0 评论 -
Codeforces 380C. Sereja and Brackets【线段树】
题目大意:给出一串括号,有m个查询(包含a,b)问区间[a,b]之间有多少个匹配的括号做法:处理两个数组r[i](代表从1到i之间有多少个已匹配的右括号),l[i](代表从1到i之间有多少个没有匹配的左括号)。我们要算[a,b]之间的匹配的括号数,首先用r[b]-r[a-1],但是遮掩更有可能a到b之间的右括号是在[1,a-1]之间被匹配的,那么再减去l[a-1],但是减去的这一部分中原创 2014-08-29 23:36:42 · 920 阅读 · 0 评论 -
Codeforces Round #257 div.2 D or 450D Jzzhu and Cities【最短路】
Codeforces Round #257 div.2 D or 450D Jzzhu and Cities【最短路】原创 2015-03-04 01:43:45 · 1344 阅读 · 0 评论