算法竞赛
文章平均质量分 54
qq_38234381
这个作者很懒,什么都没留下…
展开
-
最长公共子序列问题
题目大意:给定n个字符串,求这n个字符串的最长公共子序列长度思路:对于每一组字符串,我们比较它们的最后一位字符:若是相同,则删去最后一位(每一个字符串都删)再去比较前面的位,同时将最终得出来的答案加一(记得恢复一下,再返回);若是不同,依次删掉一组中每一个字符串的末位,每删一次比较一次,然后在恢复,再去删下一个字符串,再去比较,恢复......最后取最大的答案返回。为了加快速度,采用记忆化搜索...原创 2019-12-11 16:19:24 · 258 阅读 · 0 评论 -
【洛谷提高组】期中测试
首先,不得不提一下的是,感谢出题人ddd大佬的良心(duliu)题目以及十分周到的讲解,收获真的不少。--------------------------------------------------------------------------------------------------------------------------------------------------...原创 2018-08-04 17:07:26 · 285 阅读 · 0 评论 -
乘法逆元
首先是我自己的一些理解:乘法逆元类比倒数,若x乘上y在模p的意义下为1,则①y为x在模p的意义下的乘法逆元,记作xy≡1(modp),其中②y%p为x的乘法逆元(划线的是乘法逆元的两种表示)。ps:只有两个数(x和p)互质才有乘法逆元;对于上面的式子,当p为素数时,x的乘法逆元唯一。然后是关于乘法逆元存在的意义:•(a + b)%m = (a%m + b%m)%m• (a − ...原创 2018-08-08 20:56:17 · 561 阅读 · 0 评论 -
【洛谷3807】lucas定理模板
题目背景这是一道模板题。题目描述给定n,m,p( 1≤n,m,p≤105)求C(m,n+m)modp保证P为primeC表示组合数。一个测试点内包含多组数据。输入输出格式输入格式:第一行一个整数T( T≤10),表示数据组数第二行开始共T行,每行三个数n m p,意义如上输出格式:共T行,每行一个整数表示答案。输入输出样例输入样...原创 2018-08-09 10:52:33 · 413 阅读 · 0 评论 -
windows下的对拍
首先需要新建一个对拍文件夹,在该文件夹下建立源程序,需要对拍的程序,数据生成器,还有对拍程序文件。例如我们接下来要对拍一个A+B的程序://这是我们的程序,命名为my.cpp#include<iostream>using namespace std;int main() { int a, b; cin >> a >> b; while (...原创 2018-08-10 12:08:24 · 1521 阅读 · 0 评论 -
P3387 【模板】缩点
题目链接:https://www.luogu.org/problemnew/show/P3388主要考tarjan缩点topo维护dp的无后效性。code:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N = 1e4+10,...原创 2018-08-17 20:42:12 · 272 阅读 · 0 评论 -
P3916 图的遍历
题目链接:https://www.luogu.org/problemnew/show/P3916看到题的第一反应是dfs搜索最大的点编号,但由于这道题数据的问题(环比较多或者环的规模比较大),所以超时了。那么我们就可以考虑tarjan缩点,把环缩为一点,这样就可以大范围的减少时间复杂度,可这样可能还是会超时,因为缩点后每个集合还要跑一边dfs,还是比较耗时的,那么我们就可以考虑记忆化搜索,即搜...原创 2018-08-19 11:32:05 · 387 阅读 · 0 评论 -
DP杂题
题目链接:https://www.luogu.org/problemnew/show/P1541一道难度适中的DP,特别需要注意的地方是状态的构建。一开始看到这道题目,先想到的状态是dp[N][M][M][M][M],其中N表示到了哪一步,M表示4种牌当前我们手中分别持有的数量,但这样显然是炸了空间,所以就想利用总牌数减去前三种牌的数量来优化掉第四维,但由于水平有限,没有搞出来。这时又看到...原创 2018-08-20 20:52:13 · 127 阅读 · 0 评论 -
迷宫
题目描述小赖走进了一个非常奇怪的迷宫。这个迷宫可以抽象出 n 个节点和 m 条无向 道路。节点编号从 0 到 n-1 进行编号,每条道路都有它的长度。一开始,你在 0 号节点。这个迷宫总共有 k 个出口,分别是 p1,p2……pk。小赖只要任意到达一 个出口就可以走出迷宫。不过,当她在某个节点时,会有不超过 d 条以这个节点 为一端的道路被封锁。被封锁的道路是随机产生的,你多次到达同一个节点时...原创 2018-08-22 11:13:07 · 833 阅读 · 0 评论 -
取模与浮点数精度运算
int a=1e9, b=1e9, c=a*b;//毫无疑问c的值会不准确 int a=1e9, b=1e9;long long c=a*b;//这样子其实与上面的没什么区别,因为a*b已经爆掉了,在赋给c还是一样int a=1e9, b=1e9;long long c=(long long)(a*b);//同上,a*b已经爆掉long long a=1e9, b=1e9, c=a...原创 2018-08-26 11:30:14 · 1727 阅读 · 0 评论 -
愤怒的小鸟
题目链接:https://www.luogu.org/problemnew/show/P2831感觉这道题很不错,无论是练习爆搜还是状压,都无疑是最佳选择。先说爆搜:我们把猪从1-n来考虑,显然,对于每一只猪一共有三种选择:首先是在以前的抛物线被击中,若不满足,就是剩下的两种情况,一种是与其它没被抛物线击中的猪(即单独的猪)共同组成新的抛物线,另一种是自己单着,即自己组成一个抛物线。那...原创 2018-08-26 19:34:06 · 627 阅读 · 0 评论 -
虫食算
题目链接:https://www.luogu.org/problemnew/show/P1092正解是高斯消元,但搜索也勉强可以过。首先一个很明显的思路就是竖着搜的策略,一旦发现不合法的情况,就return。但这样最多也只能得80分,因此需要剪枝,可以在每次搜索之前从当前位置到0进行一次判断,若有不合法的情况,就返回false,具体可以看代码。code:// luogu-judg...原创 2018-09-02 22:24:18 · 110 阅读 · 0 评论 -
Mayan游戏
题目链接:https://www.luogu.org/problemnew/show/P1312(这道题debug了5天的我简直弱爆了。。。)首先这道题可以说是十分典型的爆搜题,范围非常小,搜索的思路也比较好想,即枚举每一个点向两个方向走的不同情况,超过了规定了的步数就回溯。这样的搜索可以得到60或者70分,如果开O2的话就可以A掉了,当然也可以搞一下玄学剪枝(例如用map记录图,在搜...原创 2018-09-08 12:53:48 · 447 阅读 · 0 评论 -
宝藏
题目链接:https://www.luogu.org/problemnew/show/P3959本题的解法有两种,一种是状压, 另一种是模拟退火,由于模拟退火算法不在NOIP考纲的范围之内,所以这里就不说了。(其实我也不懂就是了)再说状压之前我们先看一个爆搜的思路,也就是考场上大家都打的70分算法。直接看代码吧,暴力也没有什么可说的。code:#include<iost...原创 2018-09-11 22:31:23 · 143 阅读 · 0 评论 -
JSOI2004平衡点
题目链接:https://www.luogu.org/problemnew/show/P1337#sub可以用模拟退火来解这道题,关于模拟退火可以先看这几篇博客:https://www.cnblogs.com/peng-ym/p/9158909.htmlhttps://blog.csdn.net/numberer/article/details/79996753https://bl...原创 2018-09-15 22:25:24 · 275 阅读 · 0 评论 -
SPFA判负环
两种方式:DFS:若一个点在用dfs这样的方式跑最短路的时,在同一路径出现多次那么可判断有负环。注意由于我们主要是判断有无负环,所以可简化最短路的算法,即dis数组初始化为0,只跑负权边即可。//dfs-SPFA判负环//参考了洛谷的模板题面,但由于数据太强,所以过不去 //复杂度比较玄学 #include<iostream>#include<cstdio&...原创 2018-08-07 12:01:46 · 485 阅读 · 0 评论 -
tire tree
tire tree是一种存储字符串的数据结构,我们可以通过它来进行插入,查询,删除等操作首先其核心思想就是把每一个字符串中的每一个字符抽象成一棵树中的一条边,以及这条边所连接的子节点,插入时只需沿着相应前缀的字母向下走,一旦无法再继续走,也就是说当前树中无这个字符串,那么我们可以新建一个节点和一条边,表示没有的字母,来得到插入的字符串。查询时同样是沿着字母走,一旦没有,则返回一个值,有的话返回...原创 2018-08-05 12:15:00 · 530 阅读 · 0 评论 -
tarjan求强联通分量详解
本篇博客适用于对tarjan已有一定理解的人,若对该算法尚不熟悉者可自行百度搜索一些比较基础的博文。另外下面的论述中有大量博主自己的理解,仅供大家参考,但准确性都是可以肯定的,若您在阅读时发现错误或有不能理解的地方,可下方评论。----------------------------------------------------------------------------------...原创 2018-04-18 17:30:08 · 417 阅读 · 0 评论 -
二分答案详解
题目背景一年一度的“跳石头”比赛又要开始了!题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终 点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达 终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳 跃距离尽可能长。由于...原创 2018-04-25 13:04:30 · 2889 阅读 · 0 评论 -
区间dp
区间DP的总体思路就是把一个大区间拆分为多个小区间,然后我们通过求解小区间的答案进而递推出大区间的答案。模板:for (l = 2; l <= n; l++) {//枚举区间中数的个数,每个区间至少有2个数,1个数的区间初始化为0for (i = 1; i <= n; i++) {//枚举区间左边界 j = i+l-1;//区间右边界 if (j > n)...原创 2018-05-01 16:56:57 · 108 阅读 · 0 评论 -
数位DP
数位DP,常常用来求解对于给定区间中符合约束条件的数的个数。例:对于区间[1,100],试求其中不含两个连续1的数个数。首先想到的是在该区间内枚举,然后判断记录,很明显,这样在数据很大或者约束更复杂的情况下,一定会超时。那么,下面介绍DP的方法:我们可以按照位来枚举区间两端点的值,在枚举的过程中要保证当前产生的数不超过区间的右端点,最后再用前缀和的思想维护一下即可。例如100的话,...原创 2018-05-11 22:14:42 · 1668 阅读 · 0 评论 -
状压DP
状压DP一般适用于解决状态数比较多,且对于每一种状态,只有两种情况的问题。先看例题:题目描述在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。输入输出格式输入格式:只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * ...原创 2018-05-12 13:21:35 · 98 阅读 · 0 评论 -
Reorder the Array
A. Reorder the Arraytime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array of integers. Vasya can permute (ch...原创 2018-07-14 20:11:31 · 359 阅读 · 0 评论 -
洛谷七月月赛(未完)
题目描述有一条宽度为NN的河上,小D位于坐标为00的河岸上,他想到达坐标为NN的河岸上后再回到坐标为00的位置。在到达坐标为NN的河岸之前小D只能向坐标更大的位置跳跃,在到达坐标为NN的河岸之后小D只能向坐标更小的位置跳跃。在河的中间有MM个岩石,小D希望能跳到每个岩石上恰好一次。由于小D的跳跃能力太强,小D的跳跃长度有个下限SS,但没有上限。现在请你判断...原创 2018-07-15 20:58:33 · 246 阅读 · 0 评论 -
INF值的选取
在编程时常常会遇到0x3f3f3f3f或者0x7fffffff,那么它们具体的含义是什么呢?首先明确0x为C++中表示十六进制的符号,而3f3f3f3f为一个十六进制数,换算为十进制就是1061109567,时1e9级别的,和int的最大范围是一个数量级;7fffffff的十进制为2147483647,为int的最大值。这样的好处是可以用memset(以字节为单位)来给数组赋值。...原创 2018-07-23 22:02:26 · 2532 阅读 · 0 评论 -
【洛谷】【P2101 命运石之门的选择】
题目描述在某一条不知名世界线的冈伦今天突然接到了一条dmail,上面说世界线将会发生巨大变动,未来的他无论如何都无法扭转这种变动回到原来的世界线。而世界线变动的原因是现在的他不久后错过了与助手的约会。他约好要和助手去约会,但是在去约会之前,由于一直拖欠房租,房东大叔要求他帮忙完成一幅画的上色,然而他没有以最快的速度完成这个任务,导致他错过了与助手的约会,从而导致世界线的剧变。现在到了拯救世界的...原创 2018-07-27 13:16:45 · 432 阅读 · 0 评论 -
【JZOJ5677】纽约
题目背景印度洋暖流温润着纽约,四季丰沛的雨水造就了一望无际的大草原。蒙古包是纽约最独特的一道风景线,每至二月中旬,纽约的土著傣族人民又开始半年一度的转场了。题目描述由于牲畜和行李过多,牧民 Azone 不得不多次往返于两个草场之间运输家当。为了顺利转场,Azone 决定花费ww元津巴布韦币,购买一辆载重为ww的汽车。共有nn件家具需要搬运,每件家具的重量为w_iwi。A...原创 2018-07-31 09:06:54 · 273 阅读 · 0 评论 -
【NOIP2015】斗地主
题目描述牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、方片的A到K加上大小王的共54张牌来进行的扑克牌游戏。在斗地主中,牌的大小关 系根据牌的数码表示如下:3<4<5<6<7<8<9<10<J<Q<K<A<2<小王<大王,而花色并不对牌的大小产生影响。每一局游戏中,一副手牌由...原创 2018-08-01 21:19:38 · 1491 阅读 · 0 评论 -
【单调队列】滑动窗口
题目描述现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。例如:The array is [1 3 -1 -3 5 3 6 7], and k = 3.输入输出格式输入格式:输入一共有两行,第一行为n,k。第二行为n个数(<INT_MAX).输出格式...原创 2018-08-02 20:46:23 · 1792 阅读 · 2 评论 -
换教室
题目链接:https://www.luogu.org/problemnew/show/P1850一道难度不大的dp(就是状态和转移都很好想),但如果要想A掉的话必须要知道期望的一个性质。即:E(X+Y)=E(X)+E(Y),说白了就是期望具有可加性,根据这个性质我们可以进行转移,转移很好想,就是有些麻烦。状态就是dp[i][j][1]表示当前到了第i个时间点,换了j次,且当前这次也换了;d...原创 2018-09-16 12:53:08 · 377 阅读 · 0 评论 -
劝退二题【观光公交+华容道】
这两道题其实并没有什么关系,只是碰巧一起做到了。(之后就被劝退了)观光公交:https://www.luogu.org/problemnew/show/P1315看到题目后没什么思路,后来看了syc大佬的博客之后终于有了思路,然而却只拿了10分,之后调了很久也没调出来。不知道哪错的10分代码:#include<iostream>#include<cstring...原创 2018-09-22 20:08:20 · 152 阅读 · 0 评论 -
树上背包
拿例题来讲:https://www.luogu.org/problemnew/show/P2014#sub首先不难看出物品之间的依赖关系可以构成一颗树,对于不连通的树我们可以建一个0号节点(权值为0)将其全部联通,这样将这道题目转化成了树上背包的裸题了。然后按照一般的套路(稍后会总结)我们设DP的状态为f[i][j]表示当前以i为根的树中我们选择了j个点的价值(为了方便,这里我们的j个点不...原创 2018-10-18 12:46:34 · 3389 阅读 · 0 评论 -
稳定婚姻问题
对稳定婚姻问题的全面介绍:https://blog.csdn.net/a854596855/article/details/44631851实现思路:https://blog.csdn.net/a854596855/article/details/44631851这里给出两个结论:第一个是稳定婚姻一定存在;第二个是通过这种算法得出的婚姻必定是稳定且最优的,证明可以看下上面的博客。Gal...原创 2018-10-18 21:53:18 · 170 阅读 · 0 评论 -
最小区间覆盖问题
题目链接:http://poj.org/problem?id=2376大体思路:首先对每个区间按照左端点进行升序排序,之后再进行区间的覆盖。在覆盖的过程中我们从还没有选择过的奶牛中选择与当前区间有交集且右端点最大的奶牛来进行更新。最后再特判是否有解即可。code:#include<iostream>#include<algorithm>using na...原创 2018-10-19 21:38:44 · 3085 阅读 · 0 评论 -
[ZJOI2012]灾难
题目链接:https://www.luogu.org/problemnew/show/P2597首先一看到这道题可能感觉并没有什么思路,也很好联想到topo排序,但也应该很容易就发现topo是过不了的,例如样例。那么我们可以仔细观察一下样例构建出的图,会发现对于任意个点x,若它所有的食物灭绝了,那么它也一定要灭绝,而它所有食物灭绝的条件就是它们的lca灭绝了。所以我们可以把节点x连到它...原创 2018-10-20 06:50:16 · 362 阅读 · 0 评论 -
小木棍【数据加强版】
题目链接:https://www.luogu.org/problemnew/show/P1120这道题我认为还是有些难度的,首先你得知道怎么搜,思路是这样的:我们可以搜索当前正在拼的是第几根木棍,当前木棍还有多少长度没有拼,以及上一个用的木棍的编号(这个是为了后面的优化用的,如果不加的话可以正常地进行,但会超时)然后这道题的真正难点在于它的优化,我们把用到的优化依次列举如下:优化零...原创 2018-10-22 21:57:58 · 145 阅读 · 0 评论 -
[HNOI2003]消防局的设立
题目链接:https://www.luogu.org/problemnew/show/P2279解析部分请看这位大佬的博客:https://www.luogu.org/blog/contributation/solution-p2279这道题目的代码://核心是dis数组,即dis[i]表示距离i节点最近的消防站的距离#include<iostream>#includ...原创 2018-10-24 21:42:04 · 188 阅读 · 0 评论 -
关于悬线法
题目链接:https://www.luogu.org/problemnew/show/P4147#sub悬线法的模板题,下面主要讲悬线法:悬线法思路:悬线的定义,就是一条竖线,这条竖线要满足上端点在整个矩形上边界或者是一个障碍点。然后以这条悬线进行左右移动,直到移至障碍点或者是矩阵边界,进而确定这条悬线所在的极大矩阵。具体方法:先预处理:用数组l,r记录某点向左和向右能到达的最...原创 2018-10-24 21:54:39 · 311 阅读 · 0 评论 -
差分约束
首先不了解差分约束可以看下这篇博客:https://www.cnblogs.com/zhangmingcheng/p/3929394.html感觉这里面写的还是很详细的,有些话仔细琢磨一下也感觉非常有道理。做差分约束这样的题目首先要记住一句话,即:若题目中说要求最小的话,那么我们要跑最长路;若求最大的,那么我们要跑最短路。具体的证明上面的博客也有叙述,这里大体说下:就是求最小时,我们跑最长...原创 2018-10-28 12:06:04 · 1209 阅读 · 0 评论 -
USACO的一些不错的题目
T1 Watering Hole题目链接:https://www.luogu.org/problemnew/show/P1550刚开始看时可能没有思路,但想明白后其实非常简单。可以建一个0点,然后与其它点连边,边权就是在所连点打井所用的钱数,这样再求一边最小生成树即可。很巧妙的一道题。T2 Tractor题目链接:https://www.luogu.org/problemnew/s...原创 2018-11-01 06:53:39 · 1599 阅读 · 0 评论