返回顶部
摘要: 预处理 void init(){ clean(); scanf("%lld",&n); for(i=1;i<=n;i++)scanf("%lld",&a[i]); sq=sqrt(n); for(i=1;i<=sq;i++){ st[i]=n/sq*(i-1)+1; ed[i]=n/sq*i; } 阅读全文
posted @ 2024-04-15 20:23 无敌の暗黑魔王 阅读(20) 评论(0) 推荐(2) 编辑
摘要: $T1 \qquad $ 排座位 https://tg.hszxoj.com/contest/992/problem/4 $\quad \ \ $ 很难说,开始一眼暴力\(O(n^2)\)(好像不是),再看\(n=1e5\),废了,更不行了。但想起来归并排序,然而并不是归并排序。也是水过样例了,十分 阅读全文
posted @ 2024-04-15 17:15 无敌の暗黑魔王 阅读(37) 评论(2) 推荐(2) 编辑
摘要: 假设存在一个满足条件的长度为i的不下降序列(显然是一定存在的)那么只需要从中选出i个数即可 (不必在意选出具体数的大小,可以把满足条件的序列写下来,选几个数感受一下)。 但是$n \choose m $里的 \(m\) 的是就是 \((r-l+1)\) 吗? 乍一看是这样的,但是这样会出现一个问题, 阅读全文
posted @ 2024-04-13 21:28 无敌の暗黑魔王 阅读(37) 评论(0) 推荐(2) 编辑
摘要: 看数据范围就知道应该要状压,也不难看出应该压缩位数的状态。所以设f[i][j]为前i位,相互匹配的字符串的状态。 那么,就会有 \[{f^i_{(j \bigcap a^i_{ch})} }=(f^{i+1}_{(j\bigcap a^i_{ch})}+f^i_j ) mod (p) \]其中a[i 阅读全文
posted @ 2024-04-08 21:31 无敌の暗黑魔王 阅读(13) 评论(0) 推荐(4) 编辑
摘要: “正常”求最短路 BFS版本 void spfa(){ queue<int>q; q.push(0); fl[0]=1; while(q.size()){ int x=q.front(); q.pop(); fl[x]=0; for(int i=h[x];i;i=s[i].next){ int y= 阅读全文
posted @ 2024-03-05 15:08 无敌の暗黑魔王 阅读(14) 评论(0) 推荐(2) 编辑
摘要: 结构体: int n,i,b[N]; struct stu{ int x,id; bool operator<(stu &stu1)const{ return x<stu1.x; } }s[N]; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ 阅读全文
posted @ 2024-03-02 17:22 无敌の暗黑魔王 阅读(23) 评论(2) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2024-02-24 10:07 无敌の暗黑魔王 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 内容 寒假集训不知道多少天(懒得数了),一共八个大专题:五大DP(总结已写),树状数组,线段树,单调队列单调栈。 树状数组和线段树有共通之处,基本都可以维护区间或者单点的各种东西,线段树可以区间加(线段树也可以,用lazy甚至更好)。 单调队列和单调栈感觉很神奇,总能用在我想不到的地方,据了解它还可 阅读全文
posted @ 2024-02-24 09:38 无敌の暗黑魔王 阅读(17) 评论(0) 推荐(1) 编辑
摘要: 题干中说每次选择一个大于k的数,还要选他左右两个数其中之一加上一,最后问你最长的每个数不小于K的子序列。 这些都是障眼法,其实就是问你最长的平均值大于或等于K的最长子序列,这样就明朗了。 接下来就是找子序列的问题,因为要求的是区间最大平均值,所以不能再以单个数的值为依据来决定进出栈情况。 那只好用前 阅读全文
posted @ 2024-02-22 08:12 无敌の暗黑魔王 阅读(18) 评论(0) 推荐(1) 编辑
摘要: 前进!各民族英雄的人民。 伟大的gongchandang,领导我们继续长征。 万众一心奔向共产主义明天。 建设祖国,保卫祖国英勇地斗争。 前进!前进!前进! 我们千秋万代,高举maozedong旗帜, 前进!前进!!前进进!!! 阅读全文
posted @ 2024-02-21 20:59 无敌の暗黑魔王 阅读(105) 评论(6) 推荐(2) 编辑