自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MY Blog

我最讨厌中途放弃的人

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

原创 hdu 5236 Article 概率dp

题意:一个人打文章,他需要打n个字符,他在第i+0.1秒的时候输入一个字符,在i+0.9秒的时候系统可能崩溃,那么他将从上次保存的位置开始输入在每个i时刻他都可以按下x个字符然后按ctrl+s保存求他把所有文章输入后所需要按下字符的期望数分析:题目意思理解不透彻想了很久,看了题解想了很就才弄懂。首先我们不考虑保存的情况:设dp【i】为输入完i个字符的期望那么dp【i】=

2017-04-29 16:40:31 369

原创 山东第一届acm省赛总结:

链接&题解Phone Number  字符串求前缀,字典树or暴力 解题报告Balloons             2个dfs                                          解题报告Clockwise          计算几何加dp                            解题报告Shopping

2017-04-29 09:13:02 541

原创 sdut 2153 Clockwise

链接:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2153.html题意:二维平面内给你n个点,构成n-1个向量(第i和第i+1个点构成第i个向量)问删除最少的向量,使得剩下的向量按顺序呈顺时针或逆时针。顺时针:第i个向量顺时针转【0,180)与i+1个向量重合逆时针:

2017-04-28 16:41:34 358

原创 POJ 3140 Contestants Division 树形dp

题意:一个带权的树删去一条边使得分成的两部分权值和的差最小分析:dfs暴力枚举每一条边就好了tips:inf 如果设为0x3f3f3f3f3f 会错 因为答案可能很大ACcode:#include #include #include #include #include #include #include #include #define maxn 10000

2017-04-26 16:53:20 299

原创 POJ 1947 Rebuilding Roads 树形dp+01背包

题意:一棵n个节点的树如何减去最少的边使得剩下的结点和为m分析:dp【i】【j】表示i为根包含j个节点最少减去的边数那么状态转移方程dp【root】【i】 = min(dp【root】【i-k】+dp【child】【k】 - 1,dp【root】【i】); dp初始化 dp【root】【1】 = num【i】ACcode:#include #include #inc

2017-04-26 16:10:03 332

原创 poj 2486 APPLE TREE 树形dp+01背包

题意:求从根节点出发走K步经过的结点权值和最大分析:很容易想到dp【i】【j】表示i为根走j步的最优解,对于所有儿子结点跑一个01背包就ok这时候会发现对于当前状态从i出发走j步回到i节点和不回到i节点对于状态转移是不一样的所以加一维表示是否回到根节点(0----不回到 1-----回到)那么转移方程:dp[u][j][0]=max(dp[u][j][0],dp[u][

2017-04-26 13:47:00 310

原创 POJ 2411 Mondriaan's Dream 状态压缩

题意:用1*2的矩形铺满n*m的大矩形有几种方式分析:n,m很小可以状态压缩我们发现第i行的情况只和i-1行和i行有关判断一下爆搜一下ACcode:#include #include #include #include #include #include #include #include #define maxn 205#define inf 0x3f3f3

2017-04-25 20:46:48 263

原创 POJ 2385 Apple Catching

题意:2棵苹果树在T分钟内随机由某一棵苹果树掉下一个苹果,奶牛站在树#1下等着吃苹果,它最多愿意移动W次,问它最多能吃到几个苹果。分析:dp【i】【j】【k】表示i时刻走了j步在k树下的最优解#include #include #include #include #include #include #include #include #define maxn 1

2017-04-22 13:28:00 287

原创 poj 2250 Compromise 记录路径的lcs

记录路径的lcsACcode:#include #include #include #include #include #include #include #include #define maxn 101#define inf 0x3f3f3f3f#define ll long longusing namespace std;struct N{ char

2017-04-21 20:42:22 357

原创 poj 2241 The Tower of Babylon lis

题意:用n种长方体建楼问如何最高,要求上面的长方体的长宽要严格的小于下方的长方体分析:一个长方体有3种情况,那么对3*n个长方体按面积排序,对得到的序列以长和宽为标准求一个最长上升子序列的和就okACcode:#include #include #include #include #include #define maxn 10100#define inf 0x3f

2017-04-21 18:12:55 368

原创 POJ 2184 Cow Exhibition 01 背包变形

题意:给你n头牛,每头牛有2个属性聪明和快乐,现在要选出若干头牛使得他们的总聪明值加上快乐值最大且快乐和聪明总值都大于0分析:我们把聪明看作体积,快乐看作价值。那么就转化为01背包,那么max(dp【i】+i)为所求的因为有负数的存在,那么整体优移下标就行ACcode:#include #include #include #include #include

2017-04-21 15:48:55 321

原创 poj 2181 Jumping Cows 贪心

题意:求一个序列的子序列 这个子序列的偶次项取相反数 问最大的子序列和分析:把每个数按其大小为y坐标那么可以得到一个类似波浪的图形,那么每次我们加上波峰减去波谷就是最优解ACcode:#include #include #include #include #include #define maxn 151000#define inf 0x3f3f3f3fusing

2017-04-19 20:45:53 328

原创 poj 2137 Cowties

题意:二维坐标系上现在有100头牛,每头牛可以至多40种位置可选。问牛怎么站能够使得用绳子将1~n按顺序连起来在加上n到1的距离最短分析:很明显的dp【i】【j】表示i号牛现在站在它可站的j号位置那么dp[i+1][k]=min(dp[i+1][k],dp[i][j]+dis(my[i].p[j],my[i+1].p[k]));我们枚举1号牛的起始位置就可以用40*100*

2017-04-19 19:59:46 364

原创 POJ 2057 The Lost House 树型dp+贪心思想在动态规划上的应用

题意:蜗牛的房子遗失在一颗树的某个叶子结点,它要从根节点出发开始寻找它的房子。中间一些节点可能会住着一些虫子,这些虫子会告诉蜗牛它的房子是否在该节点为根的子树上。假设蜗牛每走一条边的花费是1,且房子在每个节点的概率相等。问蜗牛找到他房子的最小期望。分析:参考2006年全国信息学冬令营讲座 贪婪的动态规划---浅谈贪心思想在动态规划中的应用不难分析出本体模型是树形dp那么我们令s

2017-04-19 16:30:44 481

原创 POJ 3042 Grazing on the Run 区间dp

这题类似于zoj3496 3541用dp【i】【j】【k】表示牛吃完区间(i,j)的草时候在i头停下(k=0)或者在j头停下(k=1)注意草每时每刻都在枯萎所以状态转移的时候可以用(n-(j-i))来表示当前未吃掉草的枯萎程度所以有转移方程dp[i][j][0]=min(dp[i][j][0],min(dp[i+1][j][0]+tmp*(a[i+1]-a[i]),dp[i+1][

2017-04-18 21:37:49 381

原创 poj 3036 Honeycomb Walk 暴力枚举 dp

题意:蜜蜂走n步后回到原始位置的不同走法分析:把以正六边形建立坐标系那么(0,0)点可达(1,0)(0,1)(1,1)(0,-1)(-1,0)(-1,-1)然后暴力循环求解ACcode:#include #include #include #include #include #define maxn 150005#define inf 0x3f3f3f3f#i

2017-04-18 20:42:28 485

原创 poj 1985 Cow Marathon 树的直径

题意:求树的直径分析:dfs2次即可ACcode#include #include #include #include #include #define maxn 150005#define inf 0x3f3f3f3f#include #define ll long longusing namespace std;struct N{ int to,

2017-04-18 19:00:00 270

原创 poj 1952 最长递减子序列个数

题意:求最长递减子序列的个数和长度分析:用num【i】记录以i结尾的最长的个数ACcode:#include #include #include #include #define maxn 5006#define inf 0x3f3f3f3f#include #define ll long longusing namespace std;int a[maxn]

2017-04-18 12:35:04 1461

原创 poj 1948 Triangular Pastures

题意:给你n个木块,问你把所有木块用上构造一个三角形最大是多少分析:n那么我们暴力枚举2个边就可以写的有点丑g++超时,c++ACACcode:#include #include #include #include #define maxn 2006#define inf 0x3f3f3f3f#include #define ll long longus

2017-04-17 22:06:08 765

原创 poj 1925 Spiderman dp

题意:蜘蛛侠为了救女友要在高楼之间使用他的网来穿行,问最少荡几次到目标地点。分析:xi坐标最大是1000000,我们可以用dp【i】来表示i坐标是否能达到且最小的次数枚举即可ACcode:#include #include #include #include #define maxn 1000007#define inf 0x3f3f3f3f#include #d

2017-04-17 20:39:18 282

原创 poj 1848 Tree 树形dp

题意:给一个n个节点的树加最少的边使得其成为一个环。分析:借鉴网上他人的图片分析首先,我们来分析下对于一个点,我们有哪几种处理方法:一个点i,它在的环可能跟儿子没有关系,也可能跟儿子有关系,但是,可能跟两个儿子有关系,可能仅跟一个儿子有关系,但是不可能跟所有儿子(超过三个)有关系(那样就不符合仅在一个环中了)。 那么我们可以定义三个状态 dp(i,0)表示当前节点跟

2017-04-17 15:32:12 487

原创 poj 1745 Divisibility dp

题意:给你n个数每个数可以取正负,问是否存在一种情况使得最后的公式%k的值等于0分析:因为k那么dp【i】【j】=max(dp[i-1][(j-a[i]+m)%m],dp[i-1][(j+a[i])%m]);ACcode:#include #include #include #include #define maxn 10007#define inf 0x3f3f

2017-04-16 21:15:34 296

原创 poj 1322 概率dp

题意:c种巧克力无限个,取n个后桌面上剩下m个概率是多少。(如果桌面上出现2个一样的巧克力就把它们吃掉)分析:我们令dp【i】【j】为取i个巧克力后还剩下j个巧克力那么dp【i】【j】=dp【i-】【j-1】*(c-j+1)/c+dp【i-1】【j+1】*(j+1)/c这题有2个坑点一:n可以取很大,但是n到达一定数量级后概率是收敛的所以不用取那么大二:能奇偶剪枝:取奇

2017-04-16 19:55:05 281

原创 POJ 1170 Shopping Offers 状态压缩dp+完全背包

题意:有n种物品需要你去购买,每种物品购买num【i】个。(1 )当然提供s种优惠:购买商家规定的组合商品的价格为 s【i】27 3 28 2 521 7 3 52 7 1 8 2 10如例子中有2种优惠方案 i)类型7的商品买3个只要5花费ii)类型7的商品买1个同时类型8的商品买2个只要10花费如何购买所需的物品且花费最小?///不能多买分析:

2017-04-15 20:50:39 684

原创 POJ 1157 dp

题意:给你n个花插到m个花瓶中保证n个花的顺序的情况下如何最大分析:       dp【i】【j】表示前i种花插入前j种花瓶的最大dp【i】【j】=max(dp【i-1】【j-1】+cost【i】【j】,dp【i】【j-1】)ACcode:#include #include #include #include #define maxn 105#include u

2017-04-15 17:31:16 414

原创 POJ 1038 Bugs Integrated, Inc. 状态压缩dp+3进制枚举

题意:给你n*m的方格(1分析:很明显m才10所以我们可以压缩状态我们另dp【i】【j】表示第i行状态为j的时候最多能放多少个方格;我们是逐格递推的那么每一次我们都假设当前格子为矩形的左下角,那么就是下面2种情况红色就是我们当前扫描到的格子对于每个格子有3种状态:第一种上方的前2格都未被占据那么记作2第二种上方第二格被占据记作1第三种上方前一

2017-04-15 16:13:26 574

原创 poj 2482 Stars in Your Window 扫描线 线段树

题意:给你n个星星,每个星星有不同的亮度,让你用N*M的矩形去套,如何套得最大亮度分析:因为题意用固定矩形去套那么对于每一个星星我们都可以建立一个矩形让后求矩形并的最大值如图:当然这些线还有其亮度,所以套最多的不一定最大我们需要2个数组 cnt【】维护当前区间的亮度maxx【】区间内最亮的亮度其中push_up()  maxx[st]=max(maxx[tmp]

2017-04-14 17:43:10 337

原创 hdu 1255 覆盖的面积 矩阵面积交

题意:求n个矩阵面积交分析:其实和求矩阵面积并是一样的思想我们只需增加一个nsum数组储存区间中覆盖2次及以上的长度就行#include #define maxn 200002#define tmp (st<<1)#define mid ((l+r)>>1)#define lson l,mid,tmp#define rson mid+1,r,tmp|1using n

2017-04-14 15:26:39 1066

原创 poj 1389 扫描线

裸矩形并ACcode:#include #include #include #define maxn 50005#define tmp (st<<1)#define mid ((l+r)>>1)#define lson l,mid,tmp#define rson mid+1,r,tmp|1#define ll long longusing namespace std;i

2017-04-14 14:27:53 289

原创 poj 3832&&hdu 3265 扫描线+线段树

题意:贴n张海报(海报的形状是矩形,且每个海报中都去除了一个矩形的区域)问覆盖面积分析:把一张海报切换成4个矩形就把问题转化成求4*n个矩阵面积并惹注意有可能出现空矩阵需要特判ACcode:#include #include #include #define maxn 50005#define tmp (st<<1)#define mid ((l+r)>>1)#

2017-04-14 13:47:06 357

原创 POJ 1177&&HDU1828 Picture 线段树+扫描线

题意:求n个矩阵并后形成的图形的周长分析:这题大体思路和求矩阵面积并差不多,但是有所不同我们可以把所有的线段分为x方向的y方向首先我们如何求得x方向的线段呢?和求面积的时候一样我们从下往上扫描那么对于当前扫描的线我们可以求得这一水平线长度= 目前线段树中覆盖总和-上一次线段树覆盖的总和我们记上一次覆盖的长度为last那么第一次插入时候ans+=红

2017-04-13 21:53:08 697

原创 HDU 1542 Atlantis 线段树+扫描线

题意:求二维坐标下n个矩阵的面积并分析:如何求矩阵并的面积呢?如下图我们可以利用扫描线来做,什么是扫描线?你可以把这些矩阵合并后看做一个容器现在你要把这些容器注满水很明显:水先充满的地方为:更据这样的思想就可以把原图分为下面几个部分惹:那么如何用代码实现呢?我们需要一个Seg结构体储存x方向线段 其中有4个参数 h--->线段高度 l

2017-04-13 19:18:58 377

原创 poj 2492 A Bug's Life 并查集

裸的并查集咯ACcode:#include #include #include using namespace std;#define maxn 100010int myset[maxn];int find_x(int x){ if(myset[x]==-1)return x; return myset[x]=find_x(myset[x]);}int ma

2017-04-12 17:43:18 447

原创 poj 2750 Potted Flower 线段树区间合并加dp

题意:给定一个环形序列,在线单次跟新,修改一个元素,求环上最大子串和分析:如何求每次的环上最大子串和那么相当于这里介绍的方法51nod 求循环数组的最大子串和那么最优解就是=max(普通的最大子断和,总和-普通的“最小子段和")因为要求支持在线更新修改,那么我们可以用线段树来优化每次更新那么就是线段树区间合并问题需要维护下列数组int sum[maxnint l

2017-04-11 19:51:40 393

原创 POJ 2886 反素数+线段树

题意:N个人进行约瑟夫环游戏第i轮的人能获得p(i)个糖果求获得最多糖果的人和糖果数p(i)为数i的因子的个数分析:约瑟夫环可以用线段树模拟下一次出局的人(因为每一次出局一个人所有的人的下标都回改变)知识点:反素数对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0因为我们要求的是最大的p(i)1ACcode:

2017-04-11 16:02:43 435

原创 POJ Count Color 线段树

题意:给定一个区域划分成n块,每块对应的序号是1~n初始情况下所有区域的颜色都是1有2种操作P x y c 把x~y区域的颜色变为cC x y 查询x~y区域的颜色有几种分析:我们用线段树处理sum【】存结点对应的区间的颜色如果颜色不唯一就记为-1ACcode:#include #include #include #include #include #

2017-04-10 20:34:01 357

原创 poj 3007 stl

各种stl应用  ACcode:#include #include #include #include #include using namespace std;#define pb(x) q.push_back(x) vectorq;int main(){ int loop; scanf("%d",&loop); string s; wh

2017-04-10 15:00:16 536

原创 poj 3096 set 水题

判断一个字符串是否是surprisingset 瞎搞就好了ACcode:#include #include #include #include #include #include using namespace std;#define inf 0x3f3f3f3f#define maxn 105#define ll long longchar s[maxn];in

2017-04-10 13:17:32 421

原创 poj 1019 Number Sequence 打表二分

题意:有这么一个数 112123123412345……问这个数第i个数字是什么分析:我们可以观察到这个数是由 (1)( 1 2)(1 2 3 )……拼接起来我们可以打2个表a【】b【】a【i】表示加上(1 2 3……i)后到达第a【i】位b【i】表示对于(1 2 3……i)这个序列包含几位数然后二分瞎搞就可以了ACcode:#include #include #

2017-04-02 12:59:14 336

原创 poj 3292 打表

题意:规定H-number为所有能由4*i+1组成的数给定一个数A,问0-A中所有能2个H-number相乘得到的数有多少个分析:直接打表之ACcode:#include #include #include #include #include #include using namespace std;#define eps 1e-6#define mod 9

2017-04-01 21:24:32 305

空空如也

空空如也

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

TA关注的人

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