ACM
文章平均质量分 77
一年游下饭选手
Aczy156
这个作者很懒,什么都没留下…
展开
-
位运算及相关
获取唯一的奇数个的不匹配的数 & 找未配上的对https://www.luogu.com.cn/problem/P1469 【注意:卡内存,卡时间】思路一:数组存,然后排序,然后再遍历,两个两个遍历=> 爆内存,爆时间。思路二:map存,找到配对的删除。一边即过。=> 6个点爆内存正确思路:直接用一个变量,然后来异或^所有的数,a^a = 0,所以最后剩下的那个数就是没匹配的。scanf("%d", &n);for (int i = 1; i <= n; +原创 2021-04-15 10:38:04 · 269 阅读 · 0 评论 -
洛谷P3371、P4779 最短路Dijikstra优化历程(邻接矩阵->邻接表->链式前向星->堆优化)
洛谷P3371、P4779 最短路Dijikstra优化历程两个题目链接:洛谷P3379:基础数据:用邻接表或链式前向星即可过掉。洛谷P4779:数据进行增强:需要邻接表和链式前向星优化空间+堆优化提高效率背景:近来在洛谷刷题 (Aczy156的首页 ),碰到这个题比较麻烦,一开始用邻接矩阵直接MLE了三个点,其他全wa,后来看了题解需要邻接表。后来在学LCA的时候有学到图的新的表示方法-链式前向星(博主在个人blog中整理的 Algorithm14.0 图论 图的四种常用的存储形式 ,顺便引原创 2021-03-31 21:29:13 · 2572 阅读 · 0 评论 -
最短路、KMP、MST、并查集、线段树
最短路hdu2544dijkstra找距离当前点中未被刷新过距离起点最值的最小值(!vis[j] && min(d[j]))拿来刷新到其他点的距离如果d[v] + mp[v][j] < d[j]就刷新到j点的距离,j点要是未被刷新的点。void dijkstra(){ for (int i = 0; i < n; i++) d[i] = mp[0][i];...原创 2020-04-07 14:00:41 · 206 阅读 · 0 评论 -
dp 回文串问题整理
回文串dp问题判断最长回文串bool dp[i][j]表示从[i,j]这一段是否为回文串状态转移方程:dp[i][j] = (s[i] == s[j] && (j-i == 1||dp[i+1]dp[j-1]))?true:false (j > i)j-i == 1 是对aa这种两个字符呈对称形式的情况//// main.cpp// 5回文子串///...原创 2020-04-06 20:39:32 · 333 阅读 · 0 评论 -
CSP[2019.12]1.2.3题总结
CSP[2019.12]1.2.3题总结1题找7倍数或者含有7的数。//// main.cpp// [201912-1]count-num//// Created by 陈冉飞 on 2020/2/9.// Copyright © 2020 陈冉飞. All rights reserved.//#include <iostream>using namesp...原创 2020-02-09 22:10:23 · 412 阅读 · 0 评论 -
POJ1113 计算几何-凸包算法-卷包裹法、Graham-Scan法
POJ1113 wall题目链接:http://poj.org/problem?id=1113凸包算法的板题,找出凸包,计算凸包的周长加上以要求的距离为半径的圆的周长即可。卷包裹法思路:点集预处理,以横坐标为准从小到大(横坐标相同以纵坐标从小到大)从点集的第一个点开始找上凸包。如果要添加的点在凸包的点集中最新添加的两个点所形成的直线的右边,将改点添加进凸包的点集。如果在左边,把...原创 2020-02-03 19:57:54 · 338 阅读 · 0 评论 -
洛谷P1141
01迷宫问题,试炼场广搜的一道题,题很简答,010101交替这走,不能连着走两个零或两个一,就是第二个点数据量比较大,1000*1000的,还有100000次查询。解题思路:一开始思路当然是看到了在广搜里的一道题,用的广搜,结果t了四个,下了第二个点一看那么多查询,做十万次查询显然不行,后来想到了打表,先预先打个表(交了一次,只t第二个了),防止重复查询,但是就随便跑了一下第一组数据,然...原创 2020-02-01 17:43:32 · 329 阅读 · 0 评论 -
洛谷P1101、P1019
洛谷P1101happy 2020年A的第一道题~(~ ̄▽ ̄)~题目大意:在一个二维字符数组中找到所有的连续’yizhong’的字符(各个方向),然后将其他的地方都用’*'替换掉。解题思路:最开始的思路是在每层中都遍历八个方向,跑了一次之后发现结果有问题,后来改成了多判断一次的,看第二个字符是否为i,这样确定了方向,直接在每一次判断的时候把方向index往下一层传即可(即多传一个参数。)/...原创 2020-01-31 16:50:11 · 148 阅读 · 0 评论 -
dijkstra的基本算法以及堆优化
dijkstra基本算法 O(n^2)是使用临接矩阵储存的,部分边可能会被访问两次,如果采用临界表的话边是但方向储存的,只需要访问一次,可以做略微的优化。//// main.cpp// dijkstra//// Created by 陈冉飞 on 2019/12/10.// Copyright © 2019 陈冉飞. All rights reserved.//#in...原创 2019-12-16 14:00:48 · 394 阅读 · 0 评论 -
大二算法课实验课设(01背包贪心、dfs、bfs实现)
贪心结构体排序,重载运算符即可bool operator <(const node a)const{ return a.weight < weight;}//// main.cpp// greedy_01//// Created by 陈冉飞 on 2019/12/15.// Copyright © 2019 陈冉飞. All rights reserve...原创 2019-12-16 00:31:15 · 398 阅读 · 0 评论 -
有向图强连通分量(核心代码图解分析)
理解有向图的强连通分量每两个顶点都至少有一条路径(A->B,B->A),然后称这两个顶点具有强联通性,这两个顶点组成的图为强连通图。从这个途中看到,阴影部分是强连通图,拿6看,6与7不是强连通图的原因是7到6可以,但是6到7找不到一条路径。Tarjan算法对tarjan对计算强连通分块计算理解:首先给传入了节点1,遍历1附近的点,先遍历到了2,3未被访问,进栈;然后遍历3...原创 2019-08-15 14:41:36 · 980 阅读 · 0 评论 -
Tarjan算法-强连通分量、LCA(poj1144)
Tarjan算法持续补充首先适用于无向图在强连通分量中已经得到了每一个点的low、dfn,输入指向关系的顺序不同得到的每个点的dfn[]、low[]的值不同,(遍历到的次序不同),然后观察,发现割点(u为当前点v为下一个相邻的点)当dfn[u] <= low[v]时当前的节点u为一个割点分析:v为子树,然后low[v] >= dfn[u] 代表子树不存在一个路径...原创 2019-08-16 20:32:44 · 143 阅读 · 0 评论 -
强连通分量缩点+DAG度数测定(poj1236)
poj1236task1,将缩点完了之后的每个块的入度为零的点的个数task2,是在缩完点的DAG的基础上添加多少条边使得 DAG 之间的所有点能够相互到达(形成一个 SCC),套结论:入度为 0 的点的个数和出度为 0 的点个数的最大者其中找连通分量可以通过vector储存有向图的信息,这样非常方便,就不需要开nt,to,head数组了。//// main.cpp// 强连通_将...原创 2019-08-20 15:41:37 · 174 阅读 · 0 评论 -
网络流、费用流
网络流有很多种类其中最大流有增广路算法和预流推进算法。增广路算法就是不断的添加增广路。其中的Dinic算法。(会稍微提到ISAP算法)poj1273首先想到dfs一直往后延伸,然后从源点到汇点计算每条路,但是这样只是单条路的最值,有时可能因为走一条路而间接的认定了除这条路以外的某个路通量为零,导致最后最大流不是最大。其次想到了bfs往后均匀延伸,然后会发现这样很浪费时间,因为每次都是...原创 2019-08-02 09:02:25 · 263 阅读 · 0 评论 -
树链剖分
对数据的处理//dfs1 里边用到的数组int fa[30010],siz[30010],son[30010],h[30010];对dfs1过程处理之后得到了储存数据的数组//// main.cpp// 树链剖分_bzoj1036//// Created by 陈冉飞 on 2019/7/27.// Copyright © 2019 陈冉飞. All rights res...原创 2019-07-27 16:22:16 · 127 阅读 · 0 评论 -
LCA&树链剖分在树的区间、节点的公共祖先问题&&st在线查询&RMQ算法补充
首先节点的公共祖先:LCA、树链剖分都可以找树链剖分找节点的公共祖先:top数组来看是否在一条链上,不一条链上的话就让深度大(也就是h小的往上爬),直到最后他们在一条链上,然后深度小的就是最近公共祖先//// main.cpp// LCA&树链剖分//// Created by 陈冉飞 on 2019/8/2.// Copyright © 2019 陈冉飞. A...原创 2019-08-05 15:02:53 · 198 阅读 · 0 评论 -
Trie树复习(hdu4825)
hdu4825-Xor Sum 用Trie树来储存数据,然后query的时候之间拿到深度最大的极为异或值最大的。//// main.cpp// 01字典树_异或最大值//// Created by 陈冉飞 on 2019/9/8.// Copyright © 2019 陈冉飞. All rights reserved.//#include<cstdio>#...原创 2019-09-08 22:38:44 · 154 阅读 · 0 评论 -
dp lis的基本解法以及二分优化和树状数组优化
lis基本解法O(n^2)for(int i = 0;i < n;i++) for(int j = i+1;j < n;j++) if(a[i] < a[j]) dp[j] = max(dp[i]+1,dp[j]);课设利用lis解决合唱队形,直接基本O(n^2)莽过。(洛谷P1091的100的数据n方轻松莽过。。。//// main.cpp// sing...原创 2019-12-15 20:32:09 · 246 阅读 · 0 评论 -
树状数组&离散化
树状数组前置知识:二进制 lowbit的求法((x^(x-1))&x) = lowbit(x)可以写成宏,也就是#define lowbit(a) ((a^(a-1))&a)或者这样也可以找到lowbit(x) = (~x+1)lowbit的作用:提取最后一个数转换为二进制后的从后往前找第一个出现的1的位置//// main.cpp// lowbit////...原创 2019-08-07 11:09:09 · 1302 阅读 · 4 评论 -
LCT&Tarjan算法解决LCA问题&ST算法解决RMQ问题
先复习一下RMQ(ST算法)RMQ问题背景给出一个序列,然后求子区间的最大最小值m次查询,长度为n暴力搜:O(mn)线段树树形结构维护区间最值O(nlogn)ST算法:预处理的O(n*logn+q)//// main.cpp// RMQ复习//// Created by 陈冉飞 on 2019/9/18.// Copyright © 2019 陈冉飞. All ...原创 2019-09-18 17:20:31 · 235 阅读 · 0 评论 -
MST& Prime算法& Kruskal算法
hdu1301–MST板题prime + 邻接矩阵O(n^2)//// main.cpp// MST板题_hdu1301//// Created by 陈冉飞 on 2019/9/23.// Copyright © 2019 陈冉飞. All rights reserved.//#include <iostream>using namespace std...原创 2019-09-25 23:10:58 · 226 阅读 · 0 评论 -
cf_#585补题
A - Yellow Cards大致题意两个队伍,给出每个队伍人数,然后罚下每个队伍的人分别需要的黄牌数。问给出一定的黄牌数,能罚下这两队的最多人数和最少人数。思路最多人数好想,直接贪心的从需要罚下黄牌数少的那个队伍开始罚。最多人数可以直接通过把总的所有的人被罚下的黄牌数都换成一(也就是让每个人都保持差一张被罚下),这样就可以比较剩余的黄牌数和人数之间的大小//// main....原创 2019-10-13 00:01:03 · 93 阅读 · 0 评论 -
斜率优化
bzoj1010斜率优化推导其中sum为前缀和首先写出一般的状态转移方程:dp[i] = min(dp[j]+(i-j-1+sum[u]-sum[j]-L)^2)然后把平方打开,提取出和j有关的项,dp[i] = min(dp[j]+(j+sum[j])^2-2*(j+sum[j])*(i-1+sum[i]-L)+(i-1+sum[i]-L)^2)把无关的i的项去除dp[i] = mi...原创 2019-08-12 12:26:10 · 208 阅读 · 0 评论 -
单调队列
单调队列简单应用:优化数列查找中的滑窗问题,原来的复杂度O(mn) (n个元素,查找的子区间m长)但是应用单调队列来可以达到复杂度为O(n)(只遍历一遍,分析子区间是每个元素只需要进入数列一次,然后这样可以用到原来结果。POJ2823题意给出一个数组,给出子区间大小,然后输出子区间中的最大最小值暴力mn会超时,然后通过开一个f[]来存放当前滑窗中的最小值,然后遍历过程中新进来的元素如...原创 2019-08-08 20:31:40 · 197 阅读 · 0 评论 -
状态压缩dp
POJ1185读题干发现(前两个点不容易想明白)可以把每一行的坦克分布情况通过0、1来表示,并将这一串01的串表示为一个状态,存放在一个status数组中(这个数组最多有60个元素,具体解释见参考博客,然后此时可以将所有可能存在的状态放进来,就是不管地图的山地还是平地情况,只要这一行的状态就只能从这六十个里边挑) 注意这个满足状态挑选的方法:(i&(i<<1)) =...原创 2019-08-06 09:15:11 · 88 阅读 · 0 评论 -
数位dp
板题 hdu2089题目意思,输出某个给定区间(给定左和右)区间中满足一下条件的数,不含数字4 不含连续的62,(分开的6 和 2 是允许的),输出答案。直接数字打表可以解利用itoa打表也可以利用数位dp利用数位dp解法1、利用前缀和,注意最后输出的时候是r-(l-1),不是r-l,这样没有排除左端点的数2、分别计算两个端点前面满足条件的数的个数3、计算的时候利用dfs碰到不...原创 2019-08-06 12:12:32 · 129 阅读 · 0 评论 -
逻辑与(&&)、逻辑或(||)、按位与(&)、按位或(|)、按位异或(^)、按位取反(~)
按位与计算方法:转换为二进制后,不够的位数补齐,然后通过0为false 1为true的规则,对每一位之间进行与的运算(只有true+true才为true),最后再将数转回十进制。按位或计算方法:转换为二进制后,不够的位数补齐,然后通过0为false 1为true的规则,对每一位之间进行或的运算(只有false+false才为false),最后再将数转回十进制。异或运算这是一种可以不用加号...原创 2019-06-18 15:48:15 · 31974 阅读 · 6 评论 -
线性dp之复习lis、lcs、线性回文串(uva11584,codeforce607B)
线性dplis最长的递增子序列初始化值时应该是1(如果递增也最少是这个元素,最少是1)dp[i]表示到这个之前的最大递增的数for(int i = 0;i < len; i++){ dp[i] = 1; for(int j = 0;j < i; j++){ if(a[j] < a[i]) dp[i] = max(dp[i],dp[j]+1); } //筛...原创 2019-09-12 00:26:59 · 174 阅读 · 0 评论 -
数论之卡特兰数、斯特林数
卡特兰数数列产生的环境:买票进公园问题:公园门票一块,有两种买票人:n个拿一块,n个拿两块,公园没有多余的一块钱来找零钱,意味着只能用收到的一块来找零。问这2n个人有多少种进站方式。(n个前括号 n个后括号找匹配问题)利用二维图组表示通过一个坐标轴理解,最后的目标就是必须回到坐标轴,且中间不能有超过y轴的所有情况直接利用排列数 C(2n,n)-C(2n,n-1),这个的特点是...原创 2019-10-30 14:46:27 · 277 阅读 · 0 评论 -
codeforce #582 div3补题
A - Chips Moving数奇数偶数的个数,取最小//// main.cpp// cf_#582_div3_补题//// Created by 陈冉飞 on 2019/9/6.// Copyright © 2019 陈冉飞. All rights reserved.// #include <iostream>using namespace std;...原创 2019-09-06 16:14:46 · 241 阅读 · 0 评论 -
数据结构课设-排序算法之——简单快速排序和冒泡排序
简单的快速排序1、是一种运用递归思想并且应用交换作为工具的一种排序算法。2、时间复杂度在不同的情况下不同,最好情况nlog(n),最差情况n^2。(一般平均的情况下为nlog(n))(u.txt 中的范例5 3 1 4 9 2)#include<bits/stdc++.h>using namespace std;void Qsort(int a[],int l,int r)...原创 2019-05-09 10:56:22 · 322 阅读 · 0 评论 -
线段树、主席树
线段树种类分为点查询、点修改、区间查询、区间修改点查询、点修改都是沿树的一条路走,时间复杂度也就是树的深度logn区间查询时间复杂度为(logn)^2的情况是每一次向下查询的时候都恰好往两边分了,例如线段树[1,10],查询目标区间[3,8],每次都是平均地分开了两个区间。区间修改由于修改某个区间的时候要同时修改所有与该区间有交叉关系的区间的值,模板建树利用递归,注意递归有跳...原创 2019-07-26 18:47:03 · 228 阅读 · 0 评论 -
最段路题目变式整理(poj2387,poj2253,poj1797)
poj2253最段路变形:1、把每一条路径的和改成每一条路径中最大的区段的长度。2、起终点的变化。3、d[]含义的转变注意输出格式pe了一发//// main.cpp// POJ2253_青蛙跳跃//// Created by 陈冉飞 on 2019/8/16.// Copyright © 2019 陈冉飞. All rights reserved.//#inc...原创 2019-08-16 15:34:48 · 207 阅读 · 0 评论 -
最短路复习-dijkstra、bellmen_ford、spfa
优质博客、参考出处最短路几个算法floyd 单源、有向、负权 O(N^3)dijkstra 单源、无负权 O(VV+E)bellmen_ford 单源、判断有无负权 O(VE)spfa 单源、负权 O(k*E) k<<V,k远远小于V模版中的模版,经典中的经典----单源无负权求最段路dijkstra算法利用一个vi...原创 2019-07-31 19:13:30 · 263 阅读 · 0 评论 -
数论初步复习(hdu5391,hdu2973,HihoCoder 1287,hdu2138)
威尔逊定理hdu5391题目大意:给出T个数,每个数为a,输出(a-1)!moda应用威尔逊定理,如果是素数的话,((a-1)!+1) mod a == 0或者表示为(a − 1)! ≡ −1 (mod a) ≡是取模的意思//// main.cpp// 威尔逊定理_素数问题//// Created by 陈冉飞 on 2019/8/18.// Copyright...原创 2019-08-18 17:47:42 · 172 阅读 · 0 评论 -
KMP复习(hdu1711,hdu2087,csu1598,hdu1686)
最一开始学的时候照着板子敲敲不对,,过了这么久了终于照着板子敲能敲对了还有附上原来写的看了kmp好几天的学习的博客kmp入门hdu1711两个数组,找第一次匹配成功的位置。(模版中的模版)//// main.cpp// KMP_模版_hdu1711//// Created by 陈冉飞 on 2019/8/17.// Copyright © 2019 陈冉飞. All r...原创 2019-08-17 10:42:09 · 157 阅读 · 0 评论 -
DFS&BFS复习(hdu2553,poj3620,zoj1709,poj3984)
今天写难题写的自闭了心血来潮,然后就复习一下DFS&BFS然后上来第一题n皇后 wdnmd,又t了三遍,一看题解nmd打表。。。我佛了、//// main.cpp// n皇后_复习//// Created by 陈冉飞 on 2019/8/16.// Copyright © 2019 陈冉飞. All rights reserved.//#include <...原创 2019-08-16 22:11:40 · 213 阅读 · 0 评论 -
线段树整理(hdu4578,hdu1698,poj3468,hdu3577)
区间修改、区间查询hdu4578//// main.cpp// 区间操作集锦_区间加法、区间乘法对查询区间平方和的影响//// Created by 陈冉飞 on 2019/8/14.// Copyright © 2019 陈冉飞. All rights reserved.//#include <iostream>using namespace std;...原创 2019-08-14 15:52:30 · 136 阅读 · 0 评论 -
dp--01,完全,多重及单调队列优化,区间dp,树形dp(hdu2602,poj1384,hdu2191,csu1592,codeforce 607B,poj2342)
hdu260201背包dp[i][j] 表示前i个物品放到书包容量为j时所获得的最大价值。状态转移方程:dp[i][j] = max(dp[i-1][j],dp[i-1][j-space[i]+val[i]); (二维,注意就算选择不放也要加上的时上一个物品的dp[i-1][j],而不是dp[i][j])dp[j] = max(dp[j],dp[j-space[i]+val[i]);(二...原创 2019-08-10 14:16:20 · 195 阅读 · 0 评论 -
ACM-CSUOJ-equation讨论并解一元二次方程
equationDescriptionxrdog有一个众所周知的算式 Ax^2+Bx+C=0现给定A,B和C,求x众所周知的是,这样子的方程是有可能有:无解(无实数根)、有有限个解、或者解有无穷多个这几种情况的,你设计的程序当然要能判定这些情况啦Input一行三个整数(−103≤a≤103),(−103≤b≤103) 和c(−103≤c≤103)Output若无解输出There i...原创 2019-05-05 14:15:47 · 485 阅读 · 0 评论