自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 B - Dividing HDU - 均分问题-多重背包

B - Dividing  HDU - 1059  题意:给出1,2,3,4,5,6,各种钱的数量,问能否拼出总钱数的一半。 思路 :按照背包总容量为总钱数的一半跑一下多重背包即可。 #include<bits/stdc++.h>using namespace std;#define maxn 122259int dp[maxn],sum,n,w;stru...

2018-10-31 17:55:11 248

原创 C - CD UVA - 01背包+路径

C - CD  UVA - 624  01背包,按照容量状态记录了路径即可。 #include<bits/stdc++.h>using namespace std;#define maxn 11005int dp[maxn],n,m;int a[maxn],pre[maxn];int main(){ while(~scanf("%d%d",&am...

2018-10-31 16:31:09 143

原创 E - String of CCPC ZOJ - 思维+字符串

E - String of CCPC  ZOJ - 3985  题意:一个连续的CCPC得到1元,然后你可以花钱买字母插入到字符串中,第i次买花i-1元钱。 挣的钱-花的钱,问最后得到的最价值 思路:分析的无论怎么加最好的情况为不破坏原来的产生一个新的所以只需看看第一次花0元的时候, 能不能有这种最好的情况就行了,先统计一下原来的CCPC数目,然后枚举3种内部情况三种边界情况 ...

2018-10-31 15:28:51 255

原创 M - Safest Buildings ZOJ -概率+计算几何

M - Safest Buildings  ZOJ - 3993  题意:“吃鸡”游戏,给出两个半径R,r,R表示第一次的大圈半径,r表示第二次的小圈半径。 第一次大圈的圆心位于(0,0)。第二次小圈的圆心未知,但在大圈内,给你一个n,然后给出n个屋子的位置, 问这些屋子中,第二次在小圈的概率最大的屋子有几个,都是哪些。 思路:首先分析到新的小圆不会超出大圆的边界,所以小圆的圆心...

2018-10-31 14:55:06 224

原创 C - Crusaders Quest ZOJ - 枚举+栈模拟

C - Crusaders Quest  ZOJ - 3983  题意:限定了九个字符,问最好情况下有几次三连碰。  思路: 先预处理把原有的三个连字符处理掉然后剩下的字母就肯定会肯定至少有一个字母不会产生三连击。 只要枚举一下让哪个字母不产生连击即可,只要去掉一个剩下的就可以确定。枚举的情况中取一个最大值即可。 #include<iostream>#incl...

2018-10-31 14:32:28 200

原创 Compatible Numbers CodeForces - 状压DP

G - DP优化+位运算  CodeForces - 165E  题意:给出数组对于每一个数a[i],找出a中是否存在t,使得t&a[i]=0,若有输出t,没有输出-1,多个t输出任意一个; 思路:对于任意一个数x,假设数的最大范围有N位二进制则有x&(((1<<N)-1)^x)=0; 那么对于x',未必非得找到x‘,将x'中的任意的1去掉后得到的数temp...

2018-10-30 09:43:20 204

原创 C - Test for Job POJ - 拓扑序+DAG最长路

C - Test for Job  POJ - 3249  建立超级源点与汇点.然后跑一边拓扑序列。 然后按照拓扑序列中的点去更新他所到达的边. #include<iostream>#include<cstring>#include<stdio.h>using namespace std;#define inf 0x3f3f3f3f...

2018-10-30 08:57:09 204

原创 Cash Machine POJ - 1276 -多重背包-裸

B - 多重背包  POJ - 1276  钱数即为价值也为权重. #include<iostream>#include<stdio.h>#include<cstring>using namespace std;#define maxn 100015int dp[maxn];int n,sum;struct node{ ...

2018-10-30 08:18:45 162

原创 D - Mayor's posters POJ - -线段树+离散化

D - Mayor's posters  POJ - 2528  思路:离散到20000个点上然后进行区间更新用颜色来标记。最后查询不同颜色的数目。 #include<iostream>#include<cstring>#include<map>#include<stdio.h>#include<algorithm&...

2018-10-30 08:10:02 194

原创 A - Function Run Fun POJ - 记忆化搜索-裸

A - Function Run Fun  POJ - 1579  #include<iostream>#include<stdio.h>#include<cstring>using namespace std;#define inf 0x3f3f3f3fint mp[100][100][100];int x,y,z;int me...

2018-10-30 08:07:40 224

原创 C - One Person Game ZOJ - 期望DP-归零条件

C - One Person Game  ZOJ - 3329 转自一篇写的非常好的博客:   原文:https://blog.csdn.net/sd_stjean/article/details/75175232  只需按照公式去求解A,B即可,我的代码中dp数组只是预处理了一下个各个分数的概率。 #include<iostream>#inc...

2018-10-28 22:10:24 149

原创 J - Find Metal Mineral HDU - 树形DP+背包

J - Find Metal Mineral  HDU - 4003  题意:k个机器人到S点,问机器人找完所有金矿后,最短的移动距离;如果只有一个机器人, 他就要找遍所有金矿就会走重复的路,直到找到最后一个矿;如果有两个机器人,他俩就可以分头行动; 思路:dp[i][j]=min(dp[i][j-k]+dp[son][k] | 0<=k<=j)设dp[i][j]表示i...

2018-10-28 21:12:15 152

原创 ACboy needs your help HDU - 分组背包

知识:分组背包是01背包的一种变形。分组背包中物品被分成几组,每组中只能挑选出一件物品加入背包, 这是与01背包的区别。 在01背包中,我们以每一件物品作为动态规划的每一阶段, 但是在分组背包中我们要以每一组作为每一阶段。 先枚举每一组,再枚举体积,最后枚举每组中的物品。  for(int i=1;i<=k;i++) for(int c=v;c>=0;c--) for( ea...

2018-10-28 20:48:50 150

原创 I - The more, The Better HDU-树形DP+背包

I - The more, The Better  HDU - 1561  题意:现有N座城堡,每座城堡有bi的宝藏,现在最多攻破M座城堡,且攻城要按顺序,要共攻破第i座城必须先攻破第j座城 思路:把题意转划一下,容易建边,val[0]=0,然后M++,这样就可以看做每一个点都有一个父亲节点需要攻破,一颗以0 为根的树,接下来就是 树形DP+背包过程了,先递归到叶子节点,在回溯不断...

2018-10-28 16:36:19 129

原创 F - Choosing Capital for Treeland -树形DP

F - Choosing Capital for Treeland  CodeForces - 219D  题意:给出具有N个节点的树,现在给出N-1条有向边,问我们最少改变多少条边的方向,使得我们能够从一个点。 到达其余所有的点。并且输出各个点的编号。 思路:第一遍dfs,dp里面存的是它到所有子树节点的需要翻转的次数,第二次更新ans存的是它到全体的节点的翻转次数 ans[v...

2018-10-28 12:28:06 130

原创 Making the Grade POJ -DP-离散化

Making the Grade  POJ - 3666  题意:给定A序列然后每个位置都一个高度,重新在每个位置选定一个高度使得整个序列为单调的, 思路:不可以按照高度去枚举只能选择这给定的n的点的高度,(这就是离散化过程,不是真正离散化只是有点离散思想), 之所以能这样是因为话费为每个位置改变的绝对值为了尽可能的小改变后的高度一定为原来序列中已经有的高度了, 例如有有一个序列...

2018-10-28 10:57:53 161

原创 E - Walking Race POJ - 树形DP+单调队列

E - Walking Race  POJ - 3162  题意:n天,第i天从第i个节点开始跑步,每次跑到距第i个节点最远的那个节点(产生了n个距离),现在要在这n个距离里取连续的若干天,使得这些天里最大距离和最小距离的差小于M,问怎么取使得天数最多? 思路分步解决,第一个问题典型的树上最远距离两遍DFS,dp更新即可。 第二个问题固定的最值差,两个队列分别维护单调升与单调减序列...

2018-10-28 10:17:40 179

原创 D - Aeroplane chess HDU - 期望DP

D - Aeroplane chess  HDU - 4405  题意:在一条有n个格点的线上掷骰子,有1-6六个值,如果当前为止超过n,则胜利,有m个跳跃点,到x位置可以直接飞到y位置(x < y),问从起点开始到终点掷骰子的期望数。 思路:逆向期望DP即可。有边的期望直接传递没有的按照1/6的概率传递。 #include<iostream>#inclu...

2018-10-27 16:58:16 155

原创 D - Domination ZOJ - 概率DP

D - Domination  ZOJ - 3822  题意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望。 思路: 注意天数k必须从至少得比max(i,j)大才有可能出现当前的状态 dp[i][j][k+1]+=dp[i][j][k]∗(n−k)/(S−k)没有新的行列出现只能从当前行列中选取新点(要出去原来的的点)...

2018-10-27 16:16:54 245

原创 Scout YYF I POJ - 矩阵快速幂+概率DP

Scout YYF I  POJ - 3744   dp[i]=p∗dp[i−1]+(1−p)∗dp[i−2].在每一段上按照这个公式递推 然后转化为在每段区间上求解不踩雷的概率划分依据是1-a[0], a[0]+1-a[1],按照雷区进行划分 在每个区间上以在第一个位置个概率为1.0进行递推在a[i]上的之为踩雷的概率所以最终把每一段的1-a[i]相乘就是总的概率 注意:mem...

2018-10-27 14:59:35 175

原创 B - Collecting Bugs POJ - 概率DP

B - Collecting Bugs  POJ - 2096  有n个bug1有s个bug2,ex[i][j]表示为已经发现了i个bug1,j个bug2,离目标发现s个bug1,n个bug2还需要的期望天数。这样所求就是ex[0][0],而ex[n][s]则为0,因为已经全部发现,不需要额外的天数了。到下一天,产生三种发现新bug的情况,ex[i][j],发现一个bug1, ex[i][...

2018-10-27 11:20:15 166

原创 C - Reading comprehension 矩阵快速幂

  C - Reading comprehension  HDU - 4990  给出的f[n]与f[n-1]的关系还需要分奇偶讨论。为了列出矩阵找到前后递推关系找f[n],f[n-1]与f[n-1],f[n-2]的关系 讨论一下奇偶发现无论奇偶都有一个固定的关系f[n]=f[n-1]+f[n-2]*2+1,直接列出递推矩阵即可 #include<bits/stdc+...

2018-10-27 10:27:55 279

原创 E - Fast Matrix Calculation HDU -矩阵快速幂

E - Fast Matrix Calculation  HDU - 4965  利用高等代数知识把相邻矩阵合并一下得到中间有n*n-1个k*k的矩阵相乘这样就避免了在过程中出现1000*1000*1000的情况 注意不要传递参数返回结构体,矩阵比较大的情况下直接用数组去乘只有构造的进行快速幂的小矩阵可以进行参数传递 #include<bits/stdc++.h>...

2018-10-27 09:38:46 162

原创 I - Bag of mice CodeForces -概率DP

I - Bag of mice  CodeForces - 148D  #include<bits/stdc++.h>using namespace std;#define maxn 1111double dp[2*maxn][maxn];int w,b;int main(){ scanf("%d%d",&w,&b); me...

2018-10-26 21:53:03 131

原创 D - Fire POJ - LCA+树形DP

D - Fire  POJ - 2152  先解决孩子的问题在解决父亲,每次每句n个点建造firehouse,父亲从孩子中的选择最优。 选择了j点之后父亲ans[cur][j]必须得加上W[j]然后再加上   孩子v的best与孩子v的ans[v][j]-W[j]中选择最小 代码wa,还没找到错误 #include<iostream>#include<c...

2018-10-26 20:46:38 197

原创 M - Godfather POJ - 树的重心

M - Godfather  POJ - 3107  树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。 Based on the idea that Godfather wants to have the most possible control over mafia, the chief of ...

2018-10-26 18:02:31 182

原创 B - Scrambled Polygon POJ - 极角排序

B - Scrambled Polygon  POJ - 2007  按照与第一个点的夹角排序即可, #include<cstdio>#include<cmath>#include<algorithm>using namespace std;#define maxn 105#define PR 1e-6struct node{...

2018-10-26 17:04:53 216

原创 Two POJ - 1849-树直径

Two  POJ - 1849  有一颗n个结点的带权的无向树, 在s结点放两个机器人, 这两个机器人会把树的每条边都走一遍, 但是最后机器人不要求回到出发点. 问你两个机器人走的路总长之和的最小值是多少? 思路:每个机器人从起始点出发去遍历所有点,只有沿着直径走然后非直径边走两遍即可,结果就是所有,边权总和*2-直径,因为总有一条路然后沿着路走路两边的分叉访问回到道路上的过程会遍历...

2018-10-26 16:27:27 188

原创 A - Wall POJ - 几何-凸包

A - Wall  POJ - 1113 题意: 给一些点求一个墙把所有点都包围并且墙到点的距离至少为L 所以求出凸包来之后在加上一个 以L为半径的圆的周长即可。 那个墙的图形就是把凸包的边向外平移L然后它们之间就不连接了 所有需要加上一段圆弧而最小呢就是以每个定点为圆心L为半径的圆弧 由外角和得出360恰好所有圆弧构成一个以L为半径的圆 #include<cs...

2018-10-25 22:12:34 180

原创 P2742 圈奶牛Fencing the Cows-凸包-模板

P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows #include<bits/stdc++.h>using namespace std;#define maxn 10005struct node{ double x,y;} s[maxn],p[maxn];int n,tot;double ans,mid;dou...

2018-10-24 17:53:23 238

原创 K - Master of Sequence HDU - 思维-线段树

K - Master of Sequence  HDU - 6274  给定区间初始状态全部为1,然后有两种操作一种是给某段区间上的数字进行*2另一种是给某段区间上的数字*3 然后最后查询整段区间的GCD,直接线段树维护区间最小值即可有两个维护一个是乘二的次数最小另一个是 乘3的次数最小最后的结果就是2的minsum2次方,3的minsum3次方 #include<s...

2018-10-24 16:52:12 256

原创 transaction transaction transaction HDU - 树形DP

transaction transaction transaction  HDU - 6201  我们设1为根节点,假设一开始一个人身上的钱为0。 我们设dp[i][0]表示从根节点走到i及其子树并中任一点买入一本书后这个人身上钱的最大值(显然是负的)。 dp[i][1]表示从根节点走到i及其子树并中任一点卖出一本书后这个人身上钱的最大值(可正可负)。 那么我们对这棵树进行一次树形D...

2018-10-23 09:39:33 181

原创 C - Computer HDU - 树形DP-叶-根-叶

C - Computer  HDU - 2196  每个节点的最长距离可由父节点的最长距离,和子节点的最长距离(取最大)决定。 先用一个dfs求出各节点由各子树确定的最长距离,次长距离,并且记录最长距离是由哪个子节点更新来的。 再用一个dfs由父节点推各子节点的最长距离。 #include<bits/stdc++.h>using namespace std;...

2018-10-23 09:09:04 169

原创 B - Binary Apple Tree URAL - 树形DP+背包

B - Binary Apple Tree  URAL - 1018  这个题目给定一棵树,以及树的每个树枝的苹果数量,要求在保留K个树枝的情况下最多能保留多少个苹果 dp[i][j]来表示第i个节点保留j个树枝的最大苹果数。树形dp搜索父子关系,以树枝数为容量dp存的为苹果数进行背包dp即可 #include<stdio.h>#include<iostr...

2018-10-22 22:28:21 179

原创 A - Anniversary party HDU - 树形DP

  A - Anniversary party  HDU - 1520  树形DP-模板 题意:有个公司要举行一场晚会。为了让到会的每个人不受他的直接上司约束而能玩得开心. 公司领导决定:如果邀请了某个人,那么一定不会再邀请他的直接的上司,但该人的上司的上司. 上司的上司的上司……都可以邀请。已知每个人最多有唯一的一个上司。  已知公司的每个人参加晚会都能为晚会增添一些气氛,...

2018-10-22 21:37:21 177

原创 P1063-能量项链-环状区间DP

  P1063 能量项链 注意合并方式价值定义进行区间DP 因为是相邻两个合并并且有一个剩余所以枚举中间点k时需要从i开始 但是最后要枚举一下剩下的点然后取一个最大值 #include<bits/stdc++.h>using namespace std;#define maxn 222int n,a[maxn],ans;int dp[maxn][maxn];i...

2018-10-22 20:36:59 193

原创 F - Removal Game Gym -环状区间DP

F - Removal Game  Gym - 101196F  区间DP模板题 : 三重for枚举长度、起点、中间值,注意预处理gcd否则超时 它独特之出就是最终剩下的两个没有中间点价值可以按照他们两个的gcd来计算,由于是环的特性可以有两种思路 一、在原来区间DP模板基础上起点不需要有i+len<n的限制了直接i<n即可这样j与k的大小需要%n 二、直接先拷贝一遍...

2018-10-22 20:02:38 356

原创 J - Sliding Window POJ - 二分优化-单调队列

J - Sliding Window  POJ - 2823  1、将队尾所有大于a[i]的值弹出队列 2、插入a[i]到队尾 3、判断队首元素位置是否超出i-k 交c++编译器恰好不超时 可以在进行插入a[i]到队尾时进行二分优化但是我这里队列只记录了下标,没有改动,可以建两个数组一个存值用来二分查询一个存下标用来检查是否在窗口内,这两个数组同步操作,(同入同出) #...

2018-10-22 18:54:07 184 1

原创 E - Largest Rectangle in a Histogram -单调栈

E - Largest Rectangle in a Histogram  POJ - 2559  题意:n个宽度为1,高度为h[i](1<=i<=n)组成的柱形图,求里面包含的长方形的最大面积; 思路:建立一个单调递增栈维护即可,当新的长方形高于栈内的直接入栈宽度为1,当新的长方形低于或等于栈内高度时栈内元素需要出栈,出栈时更新最大值并且累加宽度以为他是最高的所以他的宽...

2018-10-21 16:18:39 167

原创 array array array HDU - LIS-nlogn

array array array  HDU - 6197  #include<bits/stdc++.h>using namespace std;#define maxn 100008int t,n,k,a[maxn];int cnt,b[maxn],x;int main(){ scanf("%d",&t); while(t--)...

2018-10-21 15:53:11 158

空空如也

空空如也

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

TA关注的人

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