codeforces
Sakai_Masato
这个作者很懒,什么都没留下…
展开
-
Codeforces 5A
这题真是一道水题啊,只是输入有点问题,你只能边调试边看你的ans,然后交上去即可AC,反正我用的是getLine。 不要管说话人是谁,谁进来或者谁出去,cnt维护聊天室内的人数,然后乘起来,累加即可。 伏地%__debug大神。。。#include#include#include#include#include#includeusing namespace std;原创 2015-08-08 20:14:12 · 495 阅读 · 0 评论 -
Codeforces 4B
此题我的做法是: 一、如果计划下界大于sum或者计划上界小于sum,直接no return; 二、将每天的答案设置为当天的上界; 三、现在应该调整每天的答案了,我这么做,将每天的差值升序排序,维护一个now,初始为上界和,然后遍历,将每天的ans变成下界,更新ans; 四、如果now 五、还原顺序输出。#include#includeusi原创 2015-08-04 20:35:50 · 523 阅读 · 1 评论 -
Codeforces 7B
题目大意:其实就是模拟一个内存分配器,有n个指令,k个单元的内存。alloca:分配a个单元给内存块(内存块是从程序开始就计数器++),从左往右找一个连续空的内存区域将其分配。erasex:删除编号为x的内存块。defragment:把不相邻的内存块移动至相邻,且最前面的内存块要移动到1的位置(并不是标号小的靠前)。其实我看了一麻版的英文题面之后就去网上搜翻译,然而并没有,原创 2015-08-18 21:45:47 · 1074 阅读 · 0 评论 -
Codeforces 7C
题目大意:给出直线的一般式Ax+By+C=0Ax+By+C=0的系数,求解在该直线上的一个整点。 题解:妈了个鸡就要联赛了,多刷刷这种裸算法题目有益身心健康,把背下来的扩展欧几里得打上去交一次就A掉了。 %%%__debug大神,保佑我联赛不挂。#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#includ原创 2015-09-29 20:58:55 · 574 阅读 · 1 评论 -
Codeforces 7D
题目大意:给出一个字符串,长度小于等于5*1e6。定义一个串是k回文的,当且仅当它的前半部分和后半部分是(k-1)回文的,求其所有前缀的回文值得和。 题解:我之前写了一个挫爆了的哈希,待会贴代码,交了20多次都没A,TLE了。然后看看网上的,判回文串实际上记一个前缀哈希值(后进的元素是低位),另一个哈希值(后进的元素是高位),若x[i]=y[i]则说明以i结尾的前缀为回文,那么它的值为dp[i>>原创 2015-09-30 15:43:45 · 696 阅读 · 2 评论 -
Codeforces 8A
题目大意:给出一个字符串序列,然后给出两个序列s1,s2s_1,s_2,求是否能在原序列中依次找到找到s1,s2s_1,s_2,或者反转原序列是否能找到。 题解:本来以为s1,s2s_1,s_2长度也是很大的,然后写了个KMP,光荣WA在了第14个点,然而看数据也没用。后来看网上的代码是暴力,再次看题才发现模式串不超过100还是怎么的,果断用了string.find()。就是一道傻逼模拟题。#in原创 2015-10-08 14:37:35 · 545 阅读 · 0 评论 -
Codeforces 8B
题目大意:给出机器人的移动路线,求是否存在这样一个只有空格和障碍的棋盘,使得机器人从起点道中点的路径为最短路。 题解:开数组判断一下子,判断是否机器人走到的当前格子的相邻三个格子(除去来的那一个格子)中有一个被走过,如果有说明是不可行的。 %%%__debug\%\%\%\_\_debug原创 2015-10-09 19:44:43 · 626 阅读 · 0 评论 -
Codeforces 8C
题目大意:给出包的坐标和n个物品的坐标,你初始从包出发,每次可以最多拿两个物品,问怎么走使路程最短,输出方案。 题解:状压dp,开始我想状态一直没有想出来。容易知道只要你拿包的配对方案是一定的,那么不管按什么顺序拿,都是可以的。 那么我们设dp[i]表示i这个二进制状态,也就是说当前状态选了i这些物品的答案。然后进来一个物品(当前没被选的物品中下标最靠前的一个),我们先更新把这个物品单独拿的后继原创 2015-10-09 21:52:30 · 626 阅读 · 0 评论 -
[Codeforces 277E][Round #170 div.1 E]Binary Tree on Plane
题目大意:平面上给出K个点,每个点可以向纵坐标比它小的点连边,边权为欧几里得距离,求一棵最小二叉生成树。 每个点只有一条入边,至多有两条出边,考虑使用最小费用最大流模型。 每个点拆成两个点i,i’,对于原图上的边u,v,u向v’连一条容量为1,费用为dis的边,源点向每个i连容量为2费用为0的边,每个i’向汇点连一条容量为1费用为0的边,最后检查除了最上面那个点的出边之外是否满流即可。#incl原创 2016-03-01 20:12:04 · 836 阅读 · 0 评论 -
Codeforces Round#333 div.1 D Acyclic Organic Compounds
题目大意是给你一棵还没有合并的trie树,要你合并它,然后统计一些傻逼信息。 本题需要一种线性时间复杂度的合并算法,这里直接给代码片了。#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<iostream>#include<cassert>#include<map>#include原创 2016-05-26 22:04:11 · 597 阅读 · 0 评论 -
Codeforces 4C
这一题很水啊,一次A,C++直接开map判重和记录次数然后输出就行了,反正我开了两个map 592ms,此题给了5s,不知道毛子是什么心态。__debug大神看我如此开map一定要吐槽了。“呵,这常数太大了,看我写平衡树”,其实我是黑他的哈哈哈。。总之%%%_debug大神。#include#include#include#include#includeusing namespace原创 2015-08-04 20:59:07 · 593 阅读 · 0 评论 -
Codeforces 6E
题目大意:给定一个长度为n的序列和一个数k,求最大数与最小数的差小于等于k的子序列的最长长度,并输出有多少个,以及各自的左端点和右端点。不得不说这道题目真是经典。刚开始看到这道题的时候,就觉得要用线段树做了,但始终不知道该怎么搞,我当时的想法很暴力,枚举l,r用线段树暴力判断是否满足,显然T得很惨。看题解有一句关键的话:“若[l,r]满足条件,则[l,r-1]也必然满足条件”。这句话说明了单调原创 2015-08-16 19:48:44 · 867 阅读 · 0 评论 -
Codeforces 6D
题目大意:有n个敌人站成一行,你可以发射火球,使得被攻击的那个人扣a的血量,相邻的扣b点血量,血量严格小于0则死,问最少多少次干掉全部。看见这题数据这么小以为是状压dp,硬是想不出,结果发现DFS可过,自己写了个DFS结果光荣TLE,下面讲讲怎么剪枝。由于攻击的顺序不影响结果,换句话来说我们需要搜的是组合而不是排列,爆搜的话浪费了很多的时间。所以我们在拓展时只考虑拓展当前节点和下一个节点,原创 2015-08-15 21:38:46 · 719 阅读 · 0 评论 -
Codeforces 4D
CF这套题目确实水啊,这题把每个信封能套进去的信封n方扫一遍,然后连一条有向边。由于一个信封不可能直接或间接地套在自己身上,因此这个图是一个DAG(有向无环图)。设f(i)表示从节点0开始的最多的矩形嵌套,就变成了求DAG上最长路的水题。f(i)=max(f(i),f(v)|(i,v)属于E)E是边集。这坑爹题我交了两遍,第一次MLEon32,一看就是Vector爆了,考虑到只有5000个原创 2015-08-08 19:46:53 · 616 阅读 · 0 评论 -
Codeforces 5B
这道题水,但是就是看不懂题意,加上输入不太会。反正奇数的话,一次取下整,一次取上整,轮着来。 __debug大爷说我肯定做不出来,果然没做出来,%%%__debug#include#include#include#include#include#include#define sys system("pause")const int MAXN=1001;using nam原创 2015-08-08 20:58:07 · 727 阅读 · 0 评论 -
Codeforces 5C
这道题我开先想了两个算法,结果全WA(受了4C还是4B的影响),无耻地看了题解。 先把所有右括号插入set,然后从右到左处理每一个左括号,二分查找set里面第一个位置大于它的,然后记录下来。然后就很简单了,扫一遍有连续标记的就出来啦。最后仍然伏地%__debug大神。#include#include#include#include#include#include#incl原创 2015-08-09 21:46:30 · 655 阅读 · 0 评论 -
Codeforces 7E
我们考试的时候把题目稍微改了一下就是这个样子的题解啦,%zxo学姐。%__debug大神#include#include#include#include#include#includeusing namespace std;const int MAXN=105,MAXL=1006;int t,n,i,res[105];char f[MAXN][2][MAXL],p[MAX原创 2015-08-11 20:45:11 · 1199 阅读 · 0 评论 -
Codeforces 5E
这一题看见我就想套单调数据结构什么的,然后各种做不出来,超时什么的,看了一下英文版的官方题解,体会了题解的妙处。先找到序列中最高的作为数组的第一个元素,把圈切成一条链,然后就可以开始做了。具体说来,设r[i]表示从i这个位置往右走第一个严格大于w[i]的位置,l[i]正相反,再记c[i]表示i到r[i]中与i相等的数的个数。从左到右扫一遍,每个w[i]可以贡献给答案c[i],还有两对(原创 2015-08-14 17:11:45 · 1012 阅读 · 1 评论 -
Codeforces 6A
题目大意:给定4根长度已知得木棍,问是否能组成三角形,或者能组成一个面积为0的三角形,或者不可能组成三角形。水,先对边进行排序。设ac,第二种情况a+b=c,第三种情况a+b不管是什么题,都要%%__debug大神。#include#include#include#includeint a[4],f1,f2,f3,f4;void judge(int x,int y,int z原创 2015-08-14 19:33:08 · 526 阅读 · 0 评论 -
Codeforces 6C
题目大意:有两个人在吃巧克力,一个人从左往右吃,另一个人从右往左吃,如果左右同时吃到一块巧克力的话那么给左吃,给定每块巧克力吃掉的时间,求各自吃了多少块。我是这样做的:记一个前缀和s1,后缀和s2,然后从1到n+1(必须n+1,否则WA on test 2)枚举第一个人吃了多少块。对于第i块巧克力,如果s1[i-1]也可以二分答案啊,反正我觉得这种算法挺显然的。%%%__debug原创 2015-08-14 20:20:35 · 447 阅读 · 0 评论 -
Codeforces 7A
题目大意:给出一块8*8棋盘的终态,初始状态是全部白棋,一次操作可以把一行或一列的棋子换成黑棋,可以重复换,问最少要多少次。好吧,构造题,平时做得比较少。我的构造方法基于贪心的思想,我们先处理行,处理完行再处理列。对于一行在终态中全黑的,我们自然要在初始棋盘中将其涂黑,然后对于非全黑的一行,我们枚举每一个格子,再检查在这个格子上能不能竖着涂,能就在初始棋盘上涂。对于列同样的搞法。这道题完全原创 2015-08-16 20:48:15 · 704 阅读 · 1 评论 -
Codeforces Round#333 div.1 E A Museum Robbery
题目大意:要你动态维护一个0-1背包问题(可以离线)。 首先预处理出每个背包所能影响的询问区间,然后区间插入询问的线段树中,注意线段树是分治的询问。 然后遍历线段树的每一个节点,遍历的过程中就只有加背包了,直接维护dp数组即可。 复杂度大概是O(nklogn)这个级别的。 这种算法之所以比暴力优,是因为一个背包会影响多个询问,而暴力每次都要重新考虑。 这种考虑的方式貌似可以适应很多问题,我原创 2016-05-27 21:23:16 · 781 阅读 · 0 评论