摘要: **字符串哈希** 点击查看代码 ``` #include using namespace std; #define N 1005 #define ULL unsigned long long #define Base 13331 int n; ULL h[N][N],q[N]; char ch[N 阅读全文
posted @ 2023-06-20 11:57 pig_pig 阅读(18) 评论(0) 推荐(0)
摘要: **01,多重,完全,以及混合背包** 对于这种类型的背包问题 我采用的策略是——全都当多重背包来做 那么代码看起来会是这个样子 ``` #include using namespace std; #define ll long long #define Inf 0x3f3f3f3f #define 阅读全文
posted @ 2023-06-20 11:40 pig_pig 阅读(15) 评论(0) 推荐(0)
摘要: **Floyd** 十分暴力方便的最短路算法 虽然复杂度较高,但好在有最短路的图都可以用它解决(即无负环) ``` int n,m;//n个节点 m条边 int mp[N][N]; void init_floyd() { for(int i=1;imp[i][k]+mp[k][j]) mp[i][j 阅读全文
posted @ 2023-06-15 16:44 pig_pig 阅读(11) 评论(0) 推荐(0)
摘要: 拓扑排序要解决的问题是给一个图的所有节点排序 在一个 DAG(有向无环图) 中,我们将图中的顶点以线性方式进行排序,使得对于任何的顶点 u 到 v 的有向边 (u,v), 都可以有 u 在 v 的前面。 注:有环的图无法给出拓扑排序 因此也可以用这个性质判断图有无环 ``` int n,m; int 阅读全文
posted @ 2023-06-14 10:45 pig_pig 阅读(14) 评论(0) 推荐(0)
摘要: 树状数组是一种支持 单点修改 和 区间查询 的,代码量小的数据结构。 什么是「单点修改」和「区间查询」? 假设有这样一道题: 已知一个数列 a,你需要进行下面两种操作: 给定 x, y,将 a[x] 自增 y。 给定 l, r,求解 a[l...r] 的和。 其中第一种操作就是「单点修改」,第二种操 阅读全文
posted @ 2023-06-13 17:30 pig_pig 阅读(16) 评论(0) 推荐(0)
摘要: **前缀和** 前缀和可以简单理解为「数列的前 n 项的和」 对于一维前缀和 简单的处理方式为`b[i]=b[i-1]+a[i]` 若需访问[l,r]区间的和 有`b[r]-b[l-1]` 对于二维前缀和 有 ` sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][ 阅读全文
posted @ 2023-06-13 17:17 pig_pig 阅读(44) 评论(0) 推荐(0)
摘要: 还是好好打读入优化吧 关闭同步流据说有奇怪的问题 事实上 决定你是否AC的不是读入 而是算法.. 阅读全文
posted @ 2023-05-27 14:34 pig_pig 阅读(7) 评论(0) 推荐(0)
摘要: [COCI2018-2019#6] Sličice 题目描述 Nikola 喜欢收集足球队员的照片,并将其保存在相册中。他计划收集 $N$ 支球队的队员照片,其中每支球队都有 $M$ 张。 对于 Nikola 所收集的每支球队,该球队的照片数量 $x$ 能给他增加分数 $B_x$。他目前拥有球队 $ 阅读全文
posted @ 2023-03-20 17:10 pig_pig 阅读(30) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; #define N 50005 int k; char ch[N][100]; char a[N]; int mp[N][100],in[N],out[N]; char ans[N]; int cnt; que 阅读全文
posted @ 2023-03-18 11:31 pig_pig 阅读(25) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; #define N 1005 int n; inline int read() { int x = 0; bool f = 1; char ch = getchar(); for (; !isdigit(ch) 阅读全文
posted @ 2023-03-17 19:09 pig_pig 阅读(19) 评论(0) 推荐(0)