自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 bzoj1036[ZJOI2008]树的统计Count

这道题裸裸的树剖。。 求个和求个最大值即可。。 不写什么了,不会树剖的自己学。。#include<cstdio>#include<cstring>using namespace std;struct node{ int x,y,next;}a[2100000];int len,last[110000]; void ins(int x,int y) { len++; a[

2016-09-25 15:57:31 221

原创 bzoj1003: [ZJOI2006]物流运输

这道题一看就有点spfa的味道.. 但是想了半天还是没有想到spfa里面应该怎么搞。。 上网翻了一下发现这道题在spfa的基础上还要dp。。 f[i]表示前i天的最优运输路线。。 dp方程大概就是这样。。 f[i]=min(f[i],f[j]+spfa(j+1,i)+K) K就是修改一次路线所需要的额外费用。。 spfa(st,ed)表示从第st天到第ed天不修改路线的最优方案。。

2016-09-18 20:50:36 329

原创 poj 2796Feel Good

这道题师姐说用单调栈。。 所以顺便学了一下单调栈。。 建一个单调递增的队列。。 每个元素进来时在队尾t人,比他小就t。。然后插入。。 对于每一个队列里的元素,以他为最小值的一段区间,肯定是: 队列前面的一个数在原数组的位置+1 到 队列后面的一个数在原数组的位置-1 用结构体记录位置和值这道题就可以了#include<cstdio>#include<iostream>#inclu

2016-09-18 13:47:55 253

原创 noi 7627:鸡蛋的硬度

这道题有点水。。 只是一个动态规划。。 f[i][j]表示i个鸡蛋从第j层开始试需要几次。。 dp方程还是蛮好想的。。 只需相通,不论几个鸡蛋在第几层摔策略都是一样的就行了。。#include<cstdio>#include<iostream>#include<cstring>using namespace std;int f[110][110];int main() {

2016-09-18 13:43:04 323

原创 codevs 3955 最长严格上升子序列(加强版)

这道题是一道最长上升子序列。。 但是数据范围有点大。。 所以O(n^2)的正常方法过不了。。 所以要用一个不知道叫什么的东西来做。。 建一个单调递增队列,表示最长上升子序列的结果。。 每进来一个元素,就问一下是否比队尾大,如果大过队尾那么就插入,否则用二分找一个大于等于他的最小的一个并更新,这样就会更有潜力。。#include<cstdio>#include<cstring>using

2016-09-18 13:39:15 197

原创 bzoj1019: [SHOI2008]汉诺塔

定义两个数组,f和p f[x][i]表示第x根柱子有i个盘移到另一个柱子上的最小步数。。 p[x][i]表示移到哪根柱子 一共两种情况。。 先把a柱上的n-1个盘移到b柱上。。 然后把最后一个盘移到c柱上。。 然后把b柱的盘移到c柱即可。。 第二种。。 先把a柱上的n-1个盘移到b柱上。。 然后把最后一个盘移到c柱上。。 然后把b柱的移到a柱上。。 把c柱的移到b柱上。。 最

2016-09-18 13:35:15 412

原创 bzoj1082: [SCOI2005]栅栏

这道题一看就是暴搜啊。。 但是暴搜明显会超时啊。。 所以想了想加了个二分。。 发现二分还是过不了啊。。 又是经过了大神的指导。。 发现有一个玄学剪枝啊。。 不想加详细的解释啊啊。。 自己看代码吧不解释了。。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int l,r,mid,s[1

2016-08-29 15:51:37 502

原创 bzoj1081: [SCOI2005]超级格雷码

这道题感谢yzh的指导.。。(我也不知道应不应该叫他大神) 这道题他发现了规律。。 以下内容转载yzh写的博客,欢迎到他的博客去看看。。 yzh博客主页 http://blog.csdn.net/mf_chris/article/details/52326615 假设是2 3: 答案是:00 10 20 21 11 01 02 12 22 分下组:00 10 20 21 11

2016-08-29 15:05:03 384

原创 bzoj1086: [SCOI2005]王室联邦

这道题有点坑。。 不用输出最优解。。 只需输出一组解。。 用一个栈来存当前省的城市。。 一个暴搜O(n)的算法就可以过。。 代码挺简单的。。#include<cstdio>#include<cstring>#include<iostream>using namespace std;struct node { int x,y,next;}a[2100];int len,la

2016-08-29 14:40:57 429

原创 bzoj1083: [SCOI2005]繁忙的都市

这道题比较水。。 让n个点联通,有m条边给你选,让最大的边最小。。 那么至少要n-1条边。。 然后把所有边快排一次。。 用并查集依次问这两点是否联通,不联通就加多这一条边。。 代码比较简单。。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node { int x,

2016-08-29 07:37:14 363

原创 bzoj1088: [SCOI2005]扫雷Mine

这道题以前做过,比较简单 只要枚举前两个格子的状态后面的格子都可以确定了。。 这个方法也是上网学的。。 代码还是比较简单的。。通俗易懂#include<cstdio>#include<cstring>using namespace std;int a[11000],f[11000];int n;int main() { scanf("%d",&n);int ans=0;

2016-08-26 14:24:22 329

原创 bzoj1085: [SCOI2005]骑士精神

这道题不想说。。 一开始想到爆搜 打了一下只对了三个点 上网搜了一下发现是A*算法,看了一下不就是爆搜加剪枝。。 挺容易懂得。。 哈哈。。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int dx[9]= {0,-2,-2,-1,-1,1,1,2,2};const int

2016-08-26 10:03:04 334

原创 bzoj1087: [SCOI2005]互不侵犯King

这道题我作为初学者来看有些懵。。 上网搜了一下发现大神都说是状态压缩。。 所以就开始学了一下状态压缩 状态压缩就是把每一行的状态转化为2进制,0表示不填,1表示填,只问合法状态,不用把每一个状态都问一遍。。 对时间和空间都很节省。。 这道题的dp方程也不难想(只要你会状压)。。 学会了状压之后很快就做出来了。。这道题还是比较入门。。#include<cstdio>#include<cs

2016-08-25 11:02:14 408

原创 bzoj1037: [ZJOI2008]生日聚会Party

题目自己看,不解释。。 大概的题意就是一串由n个1m个0组成的01序列,使得任意一段0的数量与1的数量的差不超过k。求总方案数 这道题一看就知道是DP,但是这种DP对我初一来说比较恶心,上网搜了一下。 发现跟常规DP有点不太一样定义状态 f[i][j][x][y]; 表示前i个人有j个男孩 当前这个位置最长的一段男生人数-女生人数= x 当前这个位置最长的一段女生人数-男生人数

2016-08-24 10:50:42 211

原创 bzoj1042: [HAOI2008]硬币购物

题意不用说了吧。一看大概就知道是背包。。 但是用背包做了半天还是没做出来 经过一位神犇的指导知道了这题要用到容斥原理 先两个for搞出4种硬币没有限制的情况下的方案数 我们要求的答案 Ans 就是 f[S] - (硬币1超限制的方案数) - (硬币2超限制的方案数) - (硬币3超限制的方案数) - (硬币4超限制的方案数) + (硬币1,2超限制的方案数) + (硬币1,3超限制的方案数)

2016-08-24 09:18:55 182

空空如也

空空如也

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

TA关注的人

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