题目
文章平均质量分 65
Sarlendy
I'm an OIer.
展开
-
Luogu P2733 家的范围
题目Luogu P2733 家的范围分析初看这题没有思路,参考了一下题解的思路,于是用了前缀和。 ans表示以(i,j)为右下角的矩形区域内边长为k的正方形是否存在,以此记录整个矩阵内边长为k的正方形的个数。 用d[i][j]预处理出以(i,j)为右下角,(0,0)为左上角的矩形区域内1的个数。仅当该点为原值1,并且从此点向左上延伸的边长为k的正方形中,1的个数与面积(k*k)相等时,ans++原创 2017-12-12 20:36:31 · 271 阅读 · 0 评论 -
[HNOI2005]狡猾的商人
题目BZOJ1202 [HNOI2005]狡猾的商人分析用并查集维护各节点到各自根节点的前缀和。将[x,y]的信息保存在y上,在路径压缩过程中,边压缩边计算前缀和。 值得注意的是,计算[x,y]时应当合并[x-1,y],这样可以方便的判断两段区间是不是相邻组成了一个更大的区间。当这个区间已经有值时,可以直接v[y]-v[x]求出现在加入的这段区间的和,判断是否与现在加入的这段小区...原创 2018-05-14 19:17:51 · 200 阅读 · 0 评论 -
[NOI2007]社交网络
题目BZOJ1491 [NOI2007]社交网络分析看到数据规模,最先想到的是Floyd,但在统计方案的地方卡住了。浏览了几篇题解,得到了一点启示。 在floyd过程中,枚举k为中转点:如果当前需要更新,那么经过k的最短路条数附初始值为两边(i-k和k-j)的条数之积(乘法原理);如果恰巧当前就是一条最短路,那么此点最短路数加上这一(i,j)的最短路数(乘法原理,类似地)。 可...原创 2018-05-15 21:23:14 · 283 阅读 · 0 评论 -
[SCOI2005]最大子矩阵
题目BZOJ 1084: [SCOI2005]最大子矩阵分析一眼看上去就是一道DP!想了很久,码出来一个很复杂的做法,而且还错了…… 注意到m<=2,可以利用这个性质: 当m=1时,问题变为求多个子区间使得和最大。这就比较好想了,令f[t][i]表示选到了第i个位置,已经选了t个区间的最大值。得到:f[t][i]=max{f[t][i],f[t−1][j]+sum[j,i...原创 2018-05-16 21:19:27 · 269 阅读 · 0 评论 -
POJ1679 The Unique MST
题目POJ1679 The Unique MST分析题目大意:求一张图的最小生成树是否唯一,唯一则输出价值,否则输出“Not Unique!”。思路1:求一棵最小生成树,再求一棵次小生成树。两者价值相等则不唯一。思路2:先求一棵最小生成树。依次枚举树里面每一条边,让它不能被使用,新构建一棵生成树。如果不含此边的生成树(即新求出的这棵)也最小,说明不唯一。 ...原创 2018-05-23 20:45:52 · 157 阅读 · 0 评论 -
POJ3013 Big Christmas Tree
题目POJ3013 Big Christmas Tree分析题目大意:给定一个计算公式:某条边的边权=其所有子节点的点权和××\times原始边权,以此生成一棵树,求最小边权和。思路:首先描述一下表达式:ans=∑(u,v)subsum[v]⋅cost(u,v)ans=∑(u,v)subsum[v]⋅cost(u,v)ans=\sum_{(u,v)}{subsum[v]...原创 2018-05-24 19:43:58 · 169 阅读 · 0 评论 -
POJ1904 King's Quest
题目POJ1904 King’s Quest分析题目大意:有n个王子和n个妹子,王子可能会喜欢多个妹子,现在这些王子要跟自己喜欢的妹子结婚。 给出一个可行的婚配方案(完美匹配),要求所有的可行匹配,使得:每个王子与求得方案中的某一个妹子结婚后,其他喜欢这个妹子的王子仍有其他婚配方案。(不可行)思路1:乍一看上去像是二分图匹配。显然,所有妹子与王子都要结婚,没有重婚...原创 2018-05-29 23:34:22 · 323 阅读 · 0 评论 -
[JLOI2011]飞行路线
题目BZOJ 2763: [JLOI2011]飞行路线分析图上DP。 应当注意,最小花费的航线并不一定是在最短路径上免费尽量多的边而得到的。 为什么呢?设想如果有一条路径,由不多于k条边组成,那么可以通过免费掉所有的边而获得0元的费用;如果恰好此图的最短路有多于k条边组成,那么无论如何也不能免费到0元。 因此,应采用DP:设f[i][j]表示更新到i节点,当前免费了j次的最小...原创 2018-05-31 18:36:27 · 372 阅读 · 0 评论 -
[HAOI2009]毛毛虫
题目LuoguP3174 [HAOI2009]毛毛虫分析可以想到这是一个树形DP:因为题目要求一条链,并且这条链连同其相邻节点所组成的新树最长,所以这就意味着,选择一个节点后,将选择其所有儿子,并且扩展其中一个儿子。 因此可以得到一个暴力做法:枚举每个点,树形DP,设f[i]表示以i为根节点的最长链长度。 转移方程:f[i]=max{f[v]+son[i]−1|v→i}f[i]...原创 2018-06-08 18:58:50 · 395 阅读 · 4 评论 -
Luogu P1879 [USACO06NOV]玉米田Corn Fields
题目P1879 [USACO06NOV]玉米田Corn Fields分析状压DP入门题目。 数据规模非常小,非常适合用状压DP。首先把每一行的情况压成一个二进制数,1表示选,0表示不选; 设f[i][j]表示到计算了前i行,第i行状态为j;枚举上一行所有可能的状态,按行转移; 那么状态转移方程显然为:f[i][j]+=f[i−1][k]modPf[i][j]+=f[...原创 2018-06-16 08:15:12 · 290 阅读 · 0 评论 -
[JSOI2010]Group 部落划分 Group
题目BZOJ 1821: [JSOI2010]Group 部落划分 Group分析竟然是一道kruskal……好久都没有看出来。 首先各点之间两两连边构建一张完全图,模拟kruskal从小到大加边; 设初始有n个部落,即每个点各自为一个部落,每加一条边,相当于减少一个部落; 恰好有k个部落时,当前要加上的那条边即为当前最近的两部落间的距离; 由于前面加入的边都不长于当前边,...原创 2018-05-17 21:59:38 · 293 阅读 · 0 评论 -
[SCOI2009]最长距离
题目BZOJ 1295: [SCOI2009]最长距离分析本来以为是一道DP,想了很久都想不到咋做。于是考虑最短路,发现一些操作。 将有障碍的格子的权值标为1,没有障碍为0; 对于一个起点,跑一遍最长路,寻找dis[i][j]≤tdis[i][j]≤tdis[i][j]≤t的最大长度的(i,j); 格子(i,j)即为距离起点的最远点,求出欧几里得距离; 枚举所有的格子作为起...原创 2018-05-17 19:52:27 · 286 阅读 · 0 评论 -
[HNOI2008]水平可见直线
原创 2018-05-09 19:28:49 · 453 阅读 · 0 评论 -
Luogu P2910 寻宝之路
题目Luogu P2910 寻宝之路胡乱分析对于航行序列,跑从每个起点开始到达相应终点的最短路,然后累加得到结果。试着用dijkstra实现,结果70分。70分代码#include<cstdio>#include<queue>#include<cstring>#include<iostream>using namespace std;const int maxn=1002,inf=2147原创 2017-12-03 11:23:46 · 389 阅读 · 0 评论 -
Luogu P3905 道路重建
题目Luogu P3905 道路重建分析使得修复总长度为最小,即使得两点之间路径为最短。因为AB两点现在没有被连接,所以只要修复最短路径上需要修复的路,即可联通,并且答案最小(这是显然的)。 假定全部道路通畅,跑一遍A到B的最短路,然后将被毁坏的道路边权设为0,再跑一遍最短路。两次所得的B的最短路之差,就是最短路径上需要修复的路的长度。路径上某些边的权变成0后,再得的最短路只会变得更短或者不变(这原创 2017-11-30 19:56:40 · 604 阅读 · 0 评论 -
Luogu P1629 邮递员送信
题目Luogu P1629 邮递员送信分析浏览一遍题目,很容易分析出是最短路模型。首先跑一次1号店到其他点的最短路,然后在他返回时从每一个点都跑一次最短路,但在返回过程中我们只利用每个点到1号点的最短路,却要跑(n-1)次,所以显然十分浪费。并且复杂度是O(n*m log n),爆炸。 如何解决这个问题呢? 如果我们把每条边的方向反过来,那么原来每个点到1的最短路就变成了1到每个点的最短路,相当原创 2017-12-13 21:55:11 · 349 阅读 · 0 评论 -
Luogu P2725 邮票 Stamps
题目Luogu P2725 邮票 Stamps分析一眼看到像是一道搜索,枚举可能的邮资,搜是否能用不多于k张邮票拼凑出当前值来。分析一下复杂度,邮资的最大值是所有可贴的地方全贴满最大面值的邮票,也就是max(ai∗k)max(ai∗k)max({a_i*k})=2e6,每个邮资搜索k层,每层n个状态,那么每一次就要搜索nknkn^k次。那么总操作数大概是2e6∗(50200)2e6...原创 2018-03-08 21:53:39 · 384 阅读 · 0 评论 -
Luogu P1877 [HAOI2012]音量调节
题目 P1877 [HAOI2012]音量调节分析题目的意思大概就是,在一个序列中选择数,使得任何一次选择不小于0,不大于maxLevel,而且每个数要么选择正值(即调高),要么选择负值(即降低)。那么得到了一个暴力的做法,枚举每个值的符号,求最大值。复杂度O(2n2n2^n)。顺着思路往下走,可以联想到背包问题。那么肯定是01背包啦,bool f[i][j]表示在演奏第i首歌时,...原创 2018-03-10 11:17:06 · 402 阅读 · 0 评论 -
Luogu P2049 魔术棋子
题目 P2049 魔术棋子分析显而易见的暴力做法是,枚举每一条路径,把经过的每一单位的值边乘边取模。每个点可以选择向右或者向下两个方向,所复杂度(2n2n2^n)。 如果使用动态规划,判断某个位置的棋子能否是p来进行转移,得到(n,m)的所有可能。显然可以设f[i][j][p]表示位置(i,j)可否为k。边界条件就是f[1][1][a[1][1]mod k]=truef...原创 2018-03-10 22:22:48 · 292 阅读 · 0 评论 -
Luogu P1073 最优贸易
题目P1073 最优贸易分析分不清这道题到底是DP还是SPFA…… 显然这道题是要使得买入价格最低,卖出价格最高。跟数列不同的是,图是有访问顺序的。不妨从起点到终点方向找一个最小买入点,从终点往起点反向找一个最大卖出点,两者作差就是最大收益了。这样的好处是不需考虑买入点是否能走到卖出点,因为反向建图找卖出点,就意味着有起点方向的边(如果不理解可以慢慢往下看,下一段有更形象的解释)...原创 2018-03-24 13:33:09 · 275 阅读 · 0 评论 -
Luogu P2066 机器分配
题目P2066 机器分配分析考虑到为每一个公司分配机器时,需要知道现在还能分配多少机器,即需要知道已分配过的公司共分得多少机器。那么这就是一个动态规划。设f[i][j]表示前i个公司共分配了j台机器。那么可以得到转移方程: f[i][j]=max(f[i][j],f[i−1][j−k]+a[i][k]),k<=jf[i][j]=max(f[i][j],f[i−1][j−k]...原创 2018-03-20 20:10:59 · 314 阅读 · 0 评论 -
Luogu P1938 [USACO09NOV]找工就业Job Hunt
题目P1938 [USACO09NOV]找工就业Job Hunt分析题意大概就是找最长路。 可以把每条边的花费看成负数,更新每个点的最长路时加上这个点的点权。如果出现环,那么肯定可以赚无限多的钱。建图时将航线的边权定为花费,没用航线的路线花费就是0了。 由于需要判断是否有环,所以需要用到spfa。代码#include<cstdio>#include&l...原创 2018-03-25 15:56:08 · 294 阅读 · 0 评论 -
[USACO13NOV]空荡荡的摊位Empty Stalls
题目Luogu P3090 [USACO13NOV]空荡荡的摊位Empty Stalls分析遇到一道思维题,难度不大,记录一下。题意:有很多类牛,每类牛有很多批,同种类的每一批又有相同个数的牛,他们喜欢相同一个位置;每一类的第i批都喜欢 Ai+B 号位置;每一个位置最终只能安放一头牛;牛中意的位置被占领后,它将向后寻找最近的没有被占领的位置进行占领。所有位置是成环的,即...原创 2018-06-10 11:38:27 · 412 阅读 · 0 评论