自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sakai_Masato的博客

雅人叔好帅啊!

  • 博客(99)
  • 收藏
  • 关注

原创 Codeforces 6D

题目大意:有n个敌人站成一行,你可以发射火球,使得被攻击的那个人扣a的血量,相邻的扣b点血量,血量严格小于0则死,问最少多少次干掉全部。 看见这题数据这么小以为是状压dp,硬是想不出,结果发现DFS可过,自己写了个DFS结果光荣TLE,下面讲讲怎么剪枝。 由于攻击的顺序不影响结果,换句话来说我们需要搜的是组合而不是排列,爆搜的话浪费了很多的时间。所以我们在拓展时只考虑拓展当前节点和下一个节点,

2015-08-15 21:38:46 736

原创 Codeforces 6C

题目大意:有两个人在吃巧克力,一个人从左往右吃,另一个人从右往左吃,如果左右同时吃到一块巧克力的话那么给左吃,给定每块巧克力吃掉的时间,求各自吃了多少块。 我是这样做的:记一个前缀和s1,后缀和s2,然后从1到n+1(必须n+1,否则WA on test 2)枚举第一个人吃了多少块。 对于第i块巧克力,如果s1[i-1] 也可以二分答案啊,反正我觉得这种算法挺显然的。 %%%__debug

2015-08-14 20:20:35 470

原创 Codeforces 6B

前面的题目确实很水啊。 题目大意:给定一个字符串矩阵和一个字符C,求与含C的子字符串矩阵边相邻的字符种类数(大写拉丁字母),n,m 我的思路是找出所给矩阵的左上右下,暴力枚举四条边相邻的元素,计数器++。 不管多么水的题都要%%%__debug大神。保佑我noip不挂。#include #include #include #include #include #include #include

2015-08-14 19:53:07 681

原创 Codeforces 6A

题目大意:给定4根长度已知得木棍,问是否能组成三角形,或者能组成一个面积为0的三角形,或者不可能组成三角形。 水,先对边进行排序。设ac,第二种情况a+b=c,第三种情况a+b 不管是什么题,都要%%__debug大神。 #include #include #include #include int a[4],f1,f2,f3,f4; void judge(int x,int y,int z

2015-08-14 19:33:08 560

原创 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 1052 1

原创 HDU 1520

又是一眼题撒,树形DP的干活。 设dp[i][0]表示不邀请i的答案,dp[i][1]表示邀请i的答案。 那么dp[i][0]+=max(dp[son[i]][0],dp[son[i][1]]);下属可来可不来。 dp[i][1]+=(dp[son[i]][1]);下属必须不能来。 %%%__debug大神。 #include #include #include #include #in

2015-08-14 14:43:52 432

原创 NOIP2012提高组 借教室

这个题目是个一眼题啊,维护一下一段区间内教室数的最小值,线段树搞就可以了,lazy标记打一打,来一个订单先询问再区间减,codeVS上是可以过的,只不过嘛。 %%__debug大神。我卡时间过的。 #include #include #include #include #include const int MAXN=1e6,MAXNODE=MAXN*2+MAXN/10; int num[MAX

2015-08-14 13:24:15 1006

原创 HDU 3466

这一个题,首先就应该想到01背包问题了,但是题目有一个限制,对于每一件商品i,只要你的钱数小于qi,你便不能购买这件商品。 如果按照一般的思路dp的话,假如有一件商品价格5,要求6,有一件商品价格5,要求5,手上一共10块钱。你在处理商品1的时候,显然你手上有5元钱的状态是什么也不能买的,这样就导致答案最终只有商品2。如果我们按qi-pi升序排序,那么先处理商品2,显然不会出现问题啦,好开心。然

2015-08-14 13:15:03 494

原创 Codeforces 7E

我们考试的时候把题目稍微改了一下就是这个样子的题解啦,%zxo学姐。 %__debug大神 #include #include #include #include #include #include using 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 1233

原创 HDU 5357

这一题好神啊,看了半天题解还是不会做。 设a[i]表示以i开头的合法括号序列的个数,b[i]表示以i结尾的合法括号序列的个数,a只考虑左括号,B反之。 设up[i]表示包括i的极小匹配序列的左端且up[i]!=i; 记match[i]表示i括号匹配的位置。 那么ans[i]=ans[match[i]]=ans[up[i]]+a[i]*b[match[i]];        ab怎么求

2015-08-10 16:20:34 746 1

原创 Codeforces 5C

这道题我开先想了两个算法,结果全WA(受了4C还是4B的影响),无耻地看了题解。   先把所有右括号插入set,然后从右到左处理每一个左括号,二分查找set里面第一个位置大于它的,然后记录下来。 然后就很简单了,扫一遍有连续标记的就出来啦。 最后仍然伏地%__debug大神。#include #include #include #include #include #include #incl

2015-08-09 21:46:30 687

原创 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 741

原创 Codeforces 5A

这题真是一道水题啊,只是输入有点问题,你只能边调试边看你的ans,然后交上去即可AC,反正我用的是getLine。    不要管说话人是谁,谁进来或者谁出去,cnt维护聊天室内的人数,然后乘起来,累加即可。    伏地%__debug大神。。。 #include #include #include #include #include #include using namespace std;

2015-08-08 20:14:12 530

原创 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 637

原创 NOIP 2013提高组 truck

今天上课讲的是分治与分块,讲到这道题时,觉得分治算法真的好無理(其实看不懂),所以就写了个标准算法。。。         这题两点之间的路径一定在最大生成树上(运用贪心的思想很容易脑补出来,因为如果不走最大生成树的话,路径中必有一条边小于最大生成树路径最小的一条边,那么路径的min值就不可能大于生成树路径的min值)。        所以我们用kruskal把最大生成树求出来,把边加进去建图,

2015-08-06 20:50:41 453

原创 UVALive 5031

#include#include #include #include #include #include #include #include using namespace std;//题目说每种询问20万,总共60万,开小了RE const int MAXN=20005,MAXM=60005,MAXQ=600001,MAXNODE=MAXQ*2; int val[MAXNODE],r[MAX

2015-08-06 10:48:56 576

原创 Codeforces 4C

这一题很水啊,一次A,C++直接开map判重和记录次数然后输出就行了,反正我开了两个map 592ms,此题给了5s,不知道毛子是什么心态。__debug大神看我如此开map一定要吐槽了。“呵,这常数太大了,看我写平衡树”,其实我是黑他的哈哈哈。。总之%%%_debug大神。 #include #include #include #include #include using namespace

2015-08-04 20:59:07 628

原创 Codeforces 4B

此题我的做法是:     一、如果计划下界大于sum或者计划上界小于sum,直接no return;     二、将每天的答案设置为当天的上界;     三、现在应该调整每天的答案了,我这么做,将每天的差值升序排序,维护 一个now,初始为上界和,然后遍历,将每天的ans变成下界,更新ans;     四、如果now     五、还原顺序输出。#include #include usi

2015-08-04 20:35:50 557 1

原创 Codeforces 4A

大意是给出一个正整数n,能不能拆成两个偶数之和。 “even number"才知道是偶数的意思,差点看不懂题了。。。 水过。 %%%__debug大神常数强迫症 #includecstdio> int main() { int n; scanf("%d",&n); for(int i=2;i { int b=n-i; if(b%2==

2015-08-04 20:05:25 420

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除