自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【题解】codevs P1403 新三国争霸(最小生成树 dp)

联动:https://blog.csdn.net/Rem_Inory/article/details/81139322这道题和一道叫物流运输的题非常相似,只不过变成了求最小生成树。根据这种思路我们求出w数组代表第i天到第j天没有灾害会消耗的军粮数,然后还要设一个判断数组记录在某一段时间内出现了灾害,记录下每一段时间内的最小值,然后进行dp操作就好了#include<cstdio&g...

2018-08-25 22:01:52 251

原创 【题解】51NOD 1105 第k大的数(二分)

n^2的时间复杂度肯定会爆炸,所以我们要考虑更优的做法。这里可以写一个check函数,记录c数组里大于等于x的数的个数。而统计这个需要枚举i来得到a[i],然后进行二分查找b数组,方法就是寻找最小的大于等于某个数的数。注意到达边界条件时要特判,来决定这一段区间的长度。处理完check函数后我们就可以枚举1-a[n]*b[n](a、b数组已经从小到大排好序了),再次二分,如果某个数(mid+1)...

2018-08-25 20:52:18 200

原创 【题解】洛谷P3958 奶酪(并查集 搜索)

想了半天写了一个搜索,不过里面用到了并查集的思想。。。结果很显然我TLE了6个点。看了题解之后发现自己傻了。。所以就把搜索去掉,单用并查集解决不就完事儿了qaq#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<cstri...

2018-08-25 19:09:52 274

原创 【题解】洛谷P1491 集合位置(次短路)

解决k短路问题有很多思路,不过因为这道题目是次短路,所以我们考虑的可以简单一些。先跑一遍spfa,记录下最短路的路径和在这条路上每个点的前驱,然后枚举最短路的路径删边,再重复跑最短路,取最小值。这样求得的就是次短路了。#include<cstdio>#include<iostream>#include<algorithm>#include<...

2018-08-25 18:00:40 510

原创 【题解】洛谷P3959 宝藏(生成树 随机化)

一开始可能大部分人的想法是这是个最小生成树问题,用prim就能解决,然而实际上可以发现由于有倍数与深度的限制,这种算法是不一定正确的。那该怎么办呢?我们只需要在找最小点之前做一下判断,用随机数取模,保证其有很小的概率取出来的是次小、更小的概率取出来的是次次小……的点,这个过程重复1000次(差不多吧),基本上就能通过了。#include<cstdio>#include<i...

2018-08-25 17:10:56 262

原创 【题解】洛谷P1027 Hankson的趣味题(gcd 枚举 数学)

纯粹的数学推理题。。。找到思路后代码实现还是不难的。注意不要开long long。。。不然会TLE一个点思路:https://zzlzk.blog.luogu.org/solution-p1072#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib&g...

2018-08-24 21:20:08 221

原创 【题解】洛谷P2118 比例简化(gcd 数学)

https://www.luogu.org/blog/18993/solution-p2118暴力就行 l不大#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using namespace std;int gcd(int x,int y){...

2018-08-24 20:08:20 317

原创 【题解】洛谷P2651 添加括号III(gcd 数学)

看到是入门难度结果看了半天也不知道啥做法。。kkk大神给出了答案,a1肯定在分子上,a2肯定在分母上,如果我们想让这个式子更有可能化成整数,那么a1、a3、a4……an都应该在分子上,所以我们只需要枚举求其与a2的gcd,a2/=gcd(a2,ai),如果a2化成1了,证明可以约分成功化为整数。否则就不能#include<cstdio>#include<iostrea...

2018-08-24 19:44:50 354

原创 【题解】洛谷P1029 最大公约数和最小公倍数问题(gcd 暴力)

郁闷。。这题交了三遍才过 果然我太菜了qaq就是个枚举,我说一下我的简化思路。首先循环从x0到sqrt(x0*y0),因为这后面的数都和前面相反了,所以枚举到这里就可以停下,乘二就是结果。如果枚举到一个数恰好为sqrt(x0*y0)就在乘二的基础上给结果加1.然后gcd和lcm乘积就是x0*y0,利用这个性质写一个gcd函数,然后判断一下他们的最大公约数是不是想要的那个,然后再判断一下能不能整...

2018-08-24 19:26:20 319

原创 【题解】洛谷P1062 数列(进制 数学)

拿到这道题非常懵,不过如果仔细看的话会发现有一句话(以十进制形式表示答案)为啥这么说呢。。我们不妨找找规律。首先我们将n转化成k进制的数,对于题目给的k=3就是转化成三进制:1,10,11,100,101,110,111……这些数和二进制数也许有点关系 所以我们再把它们转化为二进制:1,2,3,4,5,6,7……答案也就出来了。我们只需要把过程逆回去,将n转化为二进制,然后在其k进制的表示...

2018-08-24 18:00:26 331

原创 对拍的方法

当我们写出一个解决某个问题的高端算法后不清楚自己写的是否正确,而我们又能想到一种暴力做法,这个时候我们可以让两个程序对拍,判断自己写的是否正确。这里我们以洛谷P2152 SuperGCD为例,当我们写出了高精的做法又不敢确定是否写对时,我们可以写一下long long类型的普通gcd(当然前提是你这个不能写错)。然后将两个程序进行对拍,这里给出对拍的代码@echo off:loopda...

2018-08-24 16:04:42 371

原创 【题解】洛谷P2152 [SDOI2009] SuperGCD(高精 gcd)

10^10000,这个数据范围是一定得用高精度的。。不过如果用平常递归求最大公约数的算法肯定会栈溢出,除法的高精又麻烦,所以我们可以考虑减法(虽然有人说更相减损术在这道题里其实是不成立的 但可以通过)。我们读入字符串,将对应的位存到数组里,手写高精度减法、高精度比较函数(因为gcd里我要让较大的数在前面)、输出函数,然后就要写gcd了。在没有任何优化的情况下,更相减损术的意思就是gcd(a,b...

2018-08-24 15:52:33 797

原创 【题解】vijos P1200 ganggang的烦恼(高精 素数判断)

看到数据范围就知道需要用高精度乘法。。不过是一个整型*一个高精类型的,我们可以重载运算符来计算,数据比较水。记录数字每一位数的数组开到5000左右就够了,我之前开到1000跑不出500以后的数,结果居然A了。。。这个数据真的水管他啥的数学规律,素数判断无脑欧拉筛。#include<iostream>#include<cstdio>#include<a...

2018-08-24 08:32:05 315

原创 【题解】洛谷P2149 [SDOI2009]Elaxia的路线(记忆化搜索 最短路)

题目里已经明示了这道题的目的:具体地说,就是要求无向图中,两对点间最短路的最长公共路径。那么我们首先得把两对点的每一个点到其他点的最短路求出来,可以通过spfa来解决。这里我开了一个二维数组dis[s][v],s范围从1-4,分别代表出发点为x1,y1,x2,y2的四种情况,v则是其他点的编号。存下这个信息后,我们就需要找到最短路的公共部分。我们首先让Elaxia从宿舍(x1)出发,然后求在她到达...

2018-08-23 22:14:17 278

原创 【题解】洛谷P1726 上白泽慧音(tarjan缩点)

拿到这道题后,知道tarjan算法的应该第一反应就是用tarjan缩点来求。观察一下数据范围,其实我们可以将裸的缩点模板打上去。问题可能集中在第二问,我们只需记录下染色的数组,在第二问时从小到大遍历如果当前点染的是最大的那个颜色,就输出来即可。(代码下附题目背景人物 车万永不过气)#include<cstdio>#include<iostream>#inclu...

2018-08-23 20:19:49 246

原创 【题解】洛谷P1993 小K的农场(差分约束 dfs 最短路)

做多了应该能一眼看出这道题使用差分约束解决。根据1/2/3三个序号所代表的含义建立不等式组,然后我们将符号统一成一个方向跑最短路或者最长路,这里我选择跑最短路。如果出现在图内出现负环就代表不行,而如果用bfs-spfa的话会T几个点,所以改用dfs-spfa来解决。卡着时间过去了#include<cstdio>#include<iostream>#include&...

2018-08-23 19:31:44 232

原创 【题解】洛谷P3953 逛公园(最短路 动态规划)

NOIP2017最难的题目。。。这里给一种比较方便理解的做法。拿到这个题目,啥也不用想,首先得把最短路求出来。然而求最短路时我们要反着建图,也就是求出n到其他所有点的最短路。为什么这样做呢?因为这样可以避免正向某个点无法到达n点的情况。求出最短路后,我们可以利用动态规划解决这个问题。首先考虑没有0边的情况。我们开一个二维数组f[u][know],代表在反向图中从u到n与从u到n的最短路径之...

2018-08-23 17:25:12 323

转载 【题解】洛谷P3952 时间复杂度(栈 模拟 字符串)

https://www.luogu.org/blog/WYW-wys/solution-p3952没想到.jpg 

2018-08-23 15:13:11 259

原创 【题解】洛谷P2216 理想的正方形(单调队列)

一般的暴力做法的时间复杂度为O(a*b*n*n),一定会超时。其中a*b是省不掉的,所以我们可以在对n*n的区间寻找最大值和最小值内进行优化。https://www.luogu.org/blog/denial/solution-p2216以上是本题的解题思路,但具体如何实现这个思路,我们就需要用到单调队列了。对于X(行内最大值)和Y(列最大值)我们维护一个从大到小的单调队列,然后对于读进来...

2018-08-20 22:28:58 317 2

原创 【题解】洛谷P2331 最大子矩阵(dp 前缀和)

对于m=1与m=2的情况分开单独处理,m=2注意有4种不同的状态https://www.luogu.org/blog/ttt-ttt/solution-p2331#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<cstrin...

2018-08-20 20:57:43 311

原创 【题解】洛谷P2467 地精部落(dp 滚动数组)

https://www.luogu.org/blog/user55639/solution-p2467思维难度挺大。。正解不容易想 由于原来数组两维可能比较浪费,我们注意到每次更新dp数组只需要前一位的状态,所以我们可以利用滚动数组优化。这里令偶数位存在0中,奇数位存在1中,两者之间的变化通过&1来实现,这样能节省很多时间。最后注意该方程只是考虑了开头为峰的情况,结果还应当×2才是...

2018-08-20 19:30:15 186

原创 【题解】洛谷P3084 照片(差分约束)

https://www.luogu.org/blog/user9643/solution-p3084注意用优先队列。。还有判断负环

2018-08-20 17:15:59 395

原创 【题解】codevs P2218 补丁vs错误(最短路 状压)

我们可以将b+、b-、f+、f-集合用0和1的二进制表示来进行状态压缩,然后枚举软件的所有状态,如果当前状态取反&补丁b+==0并且当前状态&b-==0说明软件包含了补丁中的所有错误,可以使用。然后对原来的软件我们让他|能修补的错误与不能修补的错误,最后减去能修补的错误,然后将当前状态与利用补丁后的最终状态连上权值为输入的单位时间的边。最后跑最短路求得当软件压缩后所代表的数为0时的...

2018-08-20 14:32:23 182

原创 【题解】codevs P2594 解药还是毒药(bfs 状压)

https://blog.csdn.net/qq_36799943/article/details/76919180思路非常清晰。。

2018-08-20 10:33:56 270

原创 【题解】codevs 1391 伊吹萃香(分层图 最短路)

对于这道题我们可以利用分层图来解决。我们首先设点1~n为白洞,点n+1~2n为黑洞。首先对于每一个点,由于可以留在原地,而且过了一秒之后路另一端会变色,所以我们将自己所代表的白点与自己所代表的黑点连边,边权为零,意思就是在某个点为白洞时选择留在原地,不消耗体力。同样的,我们将自己所代表的黑点也就是n+i与自己所代表的白点连边,边权为读入的是停留的点为黑洞时所要消耗的体力。然后我们将读入的点连边...

2018-08-20 09:23:33 349

原创 【题解】洛谷P2324 骑士精神(A*算法 启发式搜索)

第一眼看到就可以枚举空白格子位置然后跑bfs,处理一些细节就可以,这样的话最优能30分。为了让程序跑的更快,我们可以在读入队列某个元素时记录其和目标状态对应位置不同的数量,因为交换一下最多能消去两个格子(第一次),其他情况最多能消去一个格子,所以当前的步数+数量>16或者当前步数>=15(这里可以为等于因为在其前面已经有循环保证如果步数为15就输出结果并return)。这样还有一个...

2018-08-19 22:32:19 844

原创 【题解】洛谷P2831 愤怒的小鸟(搜索 状压)

#include<cstdio>#include<iostream>#include<algorithm>#include<cstdlib>#include<cstring>#include<cmath>using namespace std;int t;int m1,m2;struct pig{ do...

2018-08-19 21:20:45 254

原创 【题解】洛谷P2939 改造路(最短路 分层图)

因为有k条道路可以将权值变成0,所以我们可以构建分层图,读入边后循环k,将自己与下一层到达自己的点相连,到达自己的点与下一层自己所在的点相连,下一层的到达自己的点与自己两个点之间互相相连(注意这个是双向的)。然后就可以跑最短路,从1到(k+1)*n。这道题队列的spfa会TLE,所以我们可以进行堆优化,然后卡过去。#include<cstdio>#include<iost...

2018-08-18 21:23:01 993

原创 【题解】洛谷P3225 矿场搭建(割点 tarjan)

https://www.luogu.org/blog/cjyyb/solution-p3225思路还是比较好理解的,不过实现起来挺复杂。。。虽然数据水 但还是注意初始化别搞错了。。我的Cut数组初始化为0时sizeof写的是cut,看了半天没找出来。。。#include<cstdio>#include<iostream>#include<algori...

2018-08-18 17:46:12 281

原创 【题解】洛谷P1314 聪明的质检员(前缀和 二分 数学)

还是没想出来正解。。不过题解一看就会系列qaq同类型的题还得多练https://www.luogu.org/blog/codinging/solution-p1314注:代码里的最大值不够大只有50分 建议开的大一点 亲测1e15可以过#include<cstdio>#include<iostream>#include<algorithm>...

2018-08-18 15:06:31 262

原创 【题解】洛谷P1901 发射站(栈 单调队列)

一开始做时百思不得其解,于是打了个暴力居然有60分。。正解其实挺好理解的,不过我想不到、。。附链接https://www.luogu.org/blog/user41569/solution-p1901#include<cstdio>#include<iostream>#include<algorithm>#include<cstri...

2018-08-18 14:46:55 257

原创 【题解】洛谷P2264 情书(字符串 模拟)

显然这道题我们用字符串存储感动词汇,然后读入正文时读一整行,比较部分字符串会更方便 这里学到了几招。1.要考虑把大写都转成小写,不会stl库就将所有大写字母加上'a'-'A',就变成小写形式了。2.初始化一个空白字符串 sent=“”,然后在读入正文时倘若读到的不是空格/逗号/句号,就令sent+=zw[i],可以直接将字符类型变成字符串。注意在判断空格/逗号/句号末尾将sent变回“”即...

2018-08-18 14:20:30 303

原创 【题解】洛谷P3469 BLO-Blockade(tarjan 割点)

建好图后,我们可以通过dfs记录某一个点之后的子节点个数,并不断更新dfn和low值,如果low值大于等于dfn值(大于代表是一条链,等于代表是一个环),这样都会出现去掉该点后将图分成两部分的情况,所以我们将该点以下子节点个数累加,记录答案为对于每个y及y后的结点*(n-每个y及y后的结点),注意这么操作后会导致只统计要去掉那个点之后的所有结点到要去掉的那个点的距离,而答案我们还需要记录要去掉的那...

2018-08-17 20:23:02 289

原创 【题解】洛谷P1850 换教室(暴力80)

直接顺序枚举换几节课,并枚举所有的情况并算出答案#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cstdlib>using namespace std;const int maxn=2100;const int...

2018-08-17 17:26:55 300

原创 【题解】洛谷P1600 天天爱跑步(60分暴力)

NOIP2016最难的一道题目,正解不会系列。。然而那年每道题都有比较详细的分段范围,所以我们可以尝试拿到部分分。这里提供部分分为60分的做法。Sample 1 2只有当某个点时刻为0时才有可能观察到选手 因此我们先将初始状态每个点的选手数目统计下来 然后对每个点的时间遍历 如果时间为0输出该点选手数目 否则输出0Sample 3 4由于时间为0, 所以我们将初始状态每个点的选...

2018-08-17 16:21:44 441

原创 【题解】洛谷P1433 吃奶酪(dfs)

首先处理出每两个点之间的距离,然后从起点开始遍历所有点,找出最大值即可,注意坐标不一定是整数。。#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using namespace std;int n;double maxx=1e9;struct p...

2018-08-13 21:20:38 569

原创 【题解】洛谷P1434 滑雪(记忆化搜索)

枚举每一个点,从每一个点开始扩展求出每个点的最大长度,最后求最大长度的最大值。这是一般的dfs的想法,在此题中可以得90分。想要通过最后一个点,我们需要使用记忆化搜索。开一个数组记录每个点的最大长度,当dfs到该点时就返回这个点的最大长度,可以节省非常多的时间。代码如下#include<cstdio>#include<iostream>#include<al...

2018-08-13 21:18:25 291

原创 【题解】洛谷P1141 01迷宫(dfs 连通块)

不想写bfs 就用dfs来解决,普通的思路很好想就不说了,反正只能得70分。为了节省时间,我们可以考虑连通块的做法,将从某个点移动到达的所有点的数量记录下来,存在数组里,给这个点的vis打上一个标记。然后对于询问的某个点就输出num[vis[i][j]]就好了#include<cstdio>#include<iostream>#include<algor...

2018-08-13 17:27:30 473

原创 【题解】vijos P1029 晴天小猪历险记之number(bfs 康托展开)

显然这道题可以用bfs解决。我们可以首先得到8种横竖斜之和均为15的情况,然后给它们赋予一个值,从这八种情况扩展,开一个dis数组记录某种情况所需要的步数,然后扩展出哪种就给哪种步数+1就行了。但关键是dis数组的范围,倘若按照从数字编号,dis是肯定存不下的。我们注意到9个数的全排列是9!种,362200种可能,这个数还是比较小的,所以我们可以考虑把情况压缩成这种状态,但如何操作呢?这里就要用到...

2018-08-13 16:52:29 911

原创 【题解】洛谷P2022 有趣的数

题解半天看不懂系列。。。这里可以模拟一下,我们首先要求数值比k小,但字典序在k前面的数的数量,用cnt表示。这里为了方便,我们可以采用代码中的方式计算。然后特判无解的情况。接着我们对比k大、字典序在k前面数的数量吗,逐渐扩大N,以K的10^i扩大,当ans>m时,ans=(k*10^i-(ans-(M-1)+1))//减出多余的部分。#include<cstdio>#...

2018-08-12 21:39:30 362

空空如也

空空如也

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

TA关注的人

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