08 2020 档案
摘要:首先,%%%Kvein 快速幂 #include<iostream> #include<cstdio> using namespace std; long long tem=1; long long p; long long ans=1; long long b; long long k; long
阅读全文
摘要:就是快速幂和矩阵的结合 link Miku #include<cstdio> #include<algorithm> #include<cstdio> #include<cstring> #include<iostream> using namespace std; long long n,k; l
阅读全文
摘要:链接Miku 规律简单,暴力模拟 此题大坑点 一个元素可能在此组没出现但是出现在上一组 一定要坚持读完数据 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; i
阅读全文
摘要:题目链接Miku 数论dp的典型例题 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; int dp[1001][15]; //
阅读全文
摘要:题目链接Miku dfs每个点找环,但是要有一些特殊改造 标记每一个点需要在找完了之后标记 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<stack> using namespac
阅读全文
摘要:Miku 思路:参照这位神仙 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> using namespace std; const int maxn = 1e5+50
阅读全文
摘要:让A,b序列中大小排名相对应即可 若A中第j大的位于i,则应该b中第j大位于i 证明:假如a1<a2,b1<b2 则排列方式有 a1,a2,b1,b2或 a1,a2,b2,b1那么 对于这两种情况上,平方并做差,即可得以上结论 然而大问题是这样离散化后怎么搞出交换几次呢 离散化后 \(c_{a_i}
阅读全文
摘要:Miku 画一画图就能知道规律 倘若询问区间是偶数 画图可知,答案为零 为奇数,则为 ^······· 然后奇数偶数分别开一个 树状数组 就行了 #include<iostream> #include<cstdio> #include<algorithm>
阅读全文
摘要:Miku 可以用树上dp解决 表示以i为根的子树在模三意义下到i的距离为j的点有几个 然后根据乘法原理搞一波 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n; i
阅读全文
摘要:Miku 用表示在第i行有j列一炮,z列二炮时的方案数 自己做的时候t飞了三个点 然后发现需要写一个更快的读入优化 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; lon
阅读全文
摘要:Miku 这道题样例错了!!! 正确解决方法 ⇒ 写一个搜索 ⇒ TLE ⇒进行记忆化改造 ⇒ Ac #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int maxn =15; c
阅读全文
摘要:Miku 一眼就看出来是个二分答案 二分最大边的权值 然后显然这种题是不需要考虑花了多少钱的,那么对于每一个mid 就先把所有范围内1级边全键了,然后再把剩下的二级边全键了,看一下能不能跑出来一个生成树 就行了 //二分解决最大的最小 #include<iostream> #include<algo
阅读全文
摘要:Miku 说出来你们可能不信,这题卡了我一小时 因为没写路径压缩但是我以为我写了+写快读忘了处理负数 哭了 思路就是把所有联通的球放到一个并查集里,然后只要有上下表面的球联通了,就有了答案 #include<iostream> #include<cstdio> #include<algorithm>
阅读全文
摘要:Miku 这只是一道小小的模拟 但是要考虑的东西也不少 思路,在改变月份时,尽量改为有31天的 #include<iostream> #include<cstdio> #include<cstring> using namespace std; char c; int a,b; int ans; i
阅读全文
摘要:Miku so crazy 因为把stack的类型写成bool 把自己搞自闭了 思路,显然如果一个点是(,那么不会有贡献,只要压入队列,答案继承父亲就行了 如果是),如果能匹配,就判断(的父亲是什么,如果是),那么显然把根节点到)的父亲的序列中与刚匹配的()相接的部分加上刚匹配的()也是合法的 不考
阅读全文
摘要:Miku 既然是二分图匹配的模板 为什么不和模板一样是绿的 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct b{ int to; int ne;
阅读全文
摘要:Miku 真是自闭呢 这个题还是还理解的 dfs预处理出每一行的情况,然后dp #include<iostream> #include<cstdio> using namespace std; int ok[2001]; int n,kk; long long dp[10][2001][2001];
阅读全文
摘要:Miku 从叶子结点开始,自下而上得跑分组背包 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,m; int s[301]; struct b{
阅读全文
摘要:Miku 或许dp起来有点麻烦 那何不记忆化呢 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; int head[100001
阅读全文
摘要:Miku 区间dp模板,记得longlong #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; long long n; long long a[201]; l
阅读全文
摘要:Miku 定义为到达(i,j)的最小代价 然后对于从下往上,因为可以点无数次,是个完全背包,从上往下就一次,01背包,飞到天花板上的,拽下来 水管特判 #include<iostream> #include<cstdio> #include<cstring> using namespace
阅读全文
摘要:Miku 第一关键字是温度,那完全可以在保证图联通的前提下找到最大的最小温度 最小生成树 然后把所有比最小温度还小的边建成一个新图,跑最短路就行了 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #inc
阅读全文
摘要:本应很简单的东西。。。 Miku #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int u,v; int m; int fr[5001][5001]; int ans[10205]; int
阅读全文
摘要:(Miku)[https://loj.ac/problem/10013] 画个图就知道,f(x)还是个单峰函数 三分起 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace st
阅读全文
摘要:Miku 三分答案这东西,非常好理解 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n; double y; double xz=1e-7;//修正精度 double lm,rm; d
阅读全文
摘要:Miku 找规律,非常简单。 (然而蒟蒻被边界条件搞炸了) #include<iostream> #include<cstdio> #include<algorithm> using namespace std; unsigned long long k; int n; unsigned long
阅读全文
摘要:Miku 还是莫队板子 啥叫互不相同?区间内不同的元素的数量==区间元素数 #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<cmath> using namespace std; i
阅读全文
摘要:Miku 仍然是要优化的,但是输出方案是非常恶心的 一维爆炸,以下为二进制优化做法 关键是如果最后到着找方案的话,就比如说样例 5的最少方法就是一个5,但是因为dp的顺序是逆序。会把10指向5,然后5指向0 、??,但是只有一个啊。所以不能倒序 #include<iostream> #include
阅读全文
摘要:Miku [理论](https://www.cnblogs.com/WAMonster/p/10118934.html) 感谢这位神仙帮助我深刻理解了莫队 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring>
阅读全文
摘要:Miku 简单版就是个单纯的模板 ac自动机是啥,就是一个加了类似于kmp的next数组的tire树 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<qu
阅读全文
摘要:Miku 字典树部分非常好解决,只要把最后每个单词结尾处记录下翻译成了啥 但是输出很麻烦,要处理空格,回车,换行和标点符号 不过有string在,还行 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring>
阅读全文
摘要:Miku 字典树模板题级别 字典树是啥,就是一颗从根走到底就找到了一个单词的树 非常好理解 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<istream> using namesp
阅读全文
摘要:Miku 多重背包板子 纯多重背包好想> 但是要优化。这里采用二进制优化。 二进制优化是啥呢,假如i物品有13个 13可以拆成1+2+4+6,然后用这四个,就可以表示除1-13所有可能了 这样就把多重背包优化成了01背包 #in
阅读全文
摘要:Miku 规律:假如只有一个栈,那么如果原序列存在三个数x<y<Z&& 那么就不可能排序成功,但是这里有两个栈,那么就应该把原序列分成两部分 两部分?二分图。 把不能在一起的点连边,进行二分图染色。 如果成功,就意味着存在&&两个栈的成员搞定了 反之不存在 #include
阅读全文
摘要:Miku 显然思路是倒着扫,倒着染。 然而这样有一个问题,这样做,那么对于已经染色的区间是不需要重新染色的, 但是遍历的时候可以找到已染色区间的一个端点,另一个在哪? 用并查集解决 fa[x]为x右边第一个没染色的端点 然后就O(N)解决了 提示:n+1个点也要初始化,因为只要n点被染色,那么一定指
阅读全文
摘要:Miku 莫名其妙每一天 如果一天满足和前面的连续一些天可能不下降,那么它的最大气温一定不小于之前序列的每一天的最小气温 然后这东西用单调队列维护 再开一个队列维护这一段序列的堆头 就Ac了 #include<iostream> #include<cstdio> #include<algorithm
阅读全文
摘要:Miku 贪心 按照时间从前往后尽可能的修 如果能修就修,修不了的话 我们可以选择撤掉一个以前修的腾出时间来,但是,腾出两个显然更蠢 那么,显然无论腾不腾,截止到此建筑,能修的数量最多一定() 由此观之,应该把已修的最大的取出来,然后进行比较,放进小的,扔掉大的,来为后面腾时间 #include<i
阅读全文
摘要:Miku 线性dp+单调队列优化 单独的线性dp很好想,也很好卡。需要用单调队列优化。 对于1~l-1的点,他们是不可能到达的,(当然还有,不过因此for从l开始)。初始化dp为一个大负数,因为有negative答案 然后从l~n枚举(这里是要算dp的点),画个图就很好理解,单调队列扫到的点和枚举的
阅读全文
摘要:树上差分板子的板子 Miku #include<iostream> #include<cstdio> using namespace std; int head[2*500001]; int p; struct b{ int to; int ne; } e[2*500001]; int fa[2*5
阅读全文
摘要:树上差分!!! 这是一道模板题的稍微改编 首先,啥是树上差分 就和名字一样,书上的差分 倘若我们要给(u,v)的路径上加上k 则给u+k,v+k,然后lca(u,v)-k(因为事实上lca处就加了一个,可是这么干加了俩) father(lca( ))-k(这里及更高处根本没动过,消除影响) 所以这题
阅读全文
摘要:Miku 解提示思路一定要清醒,想好了再干。 别直接下笔,有思路吗,没思路写什么 --scz 被这个题卡了1h 我还是太弱了 #太弱了 思路本身好想,从后往前扫,能搞就干,先玩最大,同时间扔一块 #include<iostream> #include<
阅读全文
摘要:MIku 规律: #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n; struct c{ long long w; long long s; }c
阅读全文