随笔分类 -  洛谷

上一页 1 2 3 4 5 6 7 8 9 ··· 21 下一页
摘要:Jennie 显然可以模拟,但是谁会喜欢写高精和逆元呢? 需要撤销乘法操作,该怎么做呢 如果说一个个乘法结合起来的话,那么撤销就是把一个数变成1 那么就是一个线段树的问题了 #include<iostream> #include<cstdio> #include<algorithm> #includ 阅读全文
posted @ 2021-09-25 15:55 Simex 阅读(38) 评论(0) 推荐(0)
摘要:jisoo 简单的二分 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; int n,m; struct po{ int x; 阅读全文
posted @ 2021-09-18 21:49 Simex 阅读(44) 评论(0) 推荐(0)
摘要:jisoo 可以证明,一定只需要考虑需要翻转的边 如果一种合法方案,需要翻转不需要翻转的边,那么就必然有一个过程是把这条边翻转过来, 那么这一条边有两种可能,要不它连着偶数个由需要翻转的边组成的环,要不是有许多同样的此类不翻转边组成的环 对于以上两种可能,可以发现都会出现需要翻转的边连成环的可能。 阅读全文
posted @ 2021-09-18 21:47 Simex 阅读(104) 评论(0) 推荐(0)
摘要:jisoo 这是一个拓扑排序,对于一条路线,中间没有走过的节点,一定等级低于路线上经过的节点 然后就可以了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #defin 阅读全文
posted @ 2021-09-18 21:40 Simex 阅读(57) 评论(0) 推荐(0)
摘要:Jisoo 首先呢,可以知道,每个数都要去它右边第一个空位置 然后对于$a_i,a_j$,假如$b_i,b_j$是空位的话,那么无论$a_i,a_j$谁去哪里,总距离不变 那么显然让每一个数去它右边的第一空是最有的(拉开距离差距) 然后按照距离分配b #include<iostream> #incl 阅读全文
posted @ 2021-09-14 23:01 Simex 阅读(110) 评论(0) 推荐(0)
摘要:Jisoo $dp_i$表示节点i为头的最长毛毛虫 (我这里i的父节点呗算作腿的一条) 然后就可以不用特判地进行转移 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define int long 阅读全文
posted @ 2021-09-14 22:55 Simex 阅读(34) 评论(0) 推荐(0)
摘要:Jisoo 这种背包是不是把一维扔进状态就都能做了啊 $dp_{i,j}$表示到了第i个任务的时候A机器工作了j时间,转移显然 有点卡时间,注意常数优化 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> 阅读全文
posted @ 2021-09-14 22:52 Simex 阅读(43) 评论(0) 推荐(0)
摘要:Jisoo 显然找硬币和付钱是两个过程 然而最多给多少钱呢 有应该找最多多多少呢? 方案一 时间绰绰有余,我们开的大一点 证明 找钱的数量不会超过$V_{max}^2$ #include<iostream> #include<cstdio> #include<algorithm> #include< 阅读全文
posted @ 2021-09-14 22:50 Simex 阅读(60) 评论(0) 推荐(0)
摘要:jennie 怎样处理呢 $O(n^2)$肯定不行 不如,二进制拆分一下 这样$do_i$表示第i位为1的最长长度 对于每一个数,如果他的某一个二进制位为1,那么他可以从之前这一位为1的状态转移过来,然后转移这一位为1的状态 #include<iostream> #include<cstdio> # 阅读全文
posted @ 2021-09-13 21:46 Simex 阅读(23) 评论(0) 推荐(0)
摘要:Lisa 情商和智商和,这不就是个背包 怎样保证大于零呢,我们吧一个商作为维度存进去,另外一个商就是我们转移的值了 然后,直接背包 最后检查所有大于零的部分,统计就可以了 \(dp_i=max(dp_i,dp_{i-s[i]+f_i})\) 注意一下负数要反着转移 然后就可以了 #include<i 阅读全文
posted @ 2021-09-13 21:44 Simex 阅读(52) 评论(0) 推荐(0)
摘要:Jennie 一个比较水的动态规划 \(dp[i][j]=max(dp[i][j],dp[i-1][k])+a_i*j\quad k\in [j-1,j-1+s]\) 然后这个玩意可以用有限队列 #include<iostream> #include<cstdio> #include<algorit 阅读全文
posted @ 2021-09-12 21:34 Simex 阅读(126) 评论(0) 推荐(0)
摘要:Jennie 很简单的东西 分左右端点讨论 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; int n; int l[20005],r[20005]; int dp[ 阅读全文
posted @ 2021-09-12 19:13 Simex 阅读(83) 评论(0) 推荐(0)
摘要:Lisa 这个题其实很水 \[ dp_{ij}=max(dp_{i-1,j-1}+a_{i,j},dp_{i-1,j}) \] 这是什么意思呢,到第i行放j盆花,可能上一个花瓶放的是j-1种花,也可能上一个花瓶(或更久)已经有j-1种花了 #include<iostream> #include<cs 阅读全文
posted @ 2021-09-12 15:03 Simex 阅读(48) 评论(0) 推荐(0)
摘要:Jennie 一个贪心 首先应该贪心的处理掉所有的$b_i>0$的东西,但是对于$b_i<0$的怎么办呢 假设这里有$t_1,b_1,t_2,b_2$,并且只能先干1的话,那么有 \[ \left\{ \begin{aligned} T+b_1>t_2 \\ T+b_2<t_1 \end{align 阅读全文
posted @ 2021-09-05 19:08 Simex 阅读(78) 评论(0) 推荐(0)
摘要:一开始写了个傻逼做法 #include<cstdio> #include<algorithm> using namespace std; int n; int a[1000001]; int lim; int ans; int maxx; int po; int main(){ scanf("%d" 阅读全文
posted @ 2021-09-05 15:05 Simex 阅读(170) 评论(0) 推荐(0)
摘要:这是个什么玩意 简单一想,就知道可以从左往右数 把相同的数字“摞”到一块 如果当前格比左边小的话,那么显然从小组到大组分就可以了 如果反之,更显然需要出现只有一个人的组 用优先队列实现这个东西就可以了. #include<iostream> #include<cstdio> #include<alg 阅读全文
posted @ 2021-09-05 11:38 Simex 阅读(89) 评论(0) 推荐(0)
摘要:Lisa 一个疯狂的双向bfs 压缩一状态,用一个8位int,其中每2位表示一个坐标,这样最差情况下开88888888的int数组,太荒谬了,那就换成一个map,存储状态 这四个球没有区别,所以我们保存状态按照一个固定的顺序保存就可以了 然后就是繁琐的步骤 #include<iostream> #i 阅读全文
posted @ 2021-09-05 10:11 Simex 阅读(49) 评论(0) 推荐(0)
摘要:P6560 [SBCOI2020] 时光的流逝 博弈论水题 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> using namespace std; int n,m,q 阅读全文
posted @ 2021-08-20 18:46 Simex 阅读(49) 评论(0) 推荐(0)
摘要:Lisa 这要构建一个什么玩意 K进制haffum树 然后节点数不够咋办 加空节点‘ #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #define int long long using namespa 阅读全文
posted @ 2021-08-17 22:12 Simex 阅读(45) 评论(0) 推荐(0)
摘要:#include #include #include #include #include using namespace std; int n,p; double a[1000001]; int x,y,z; struct e{ int to; int v; int ne; }ed[1000001] 阅读全文
posted @ 2021-08-11 23:07 Simex 阅读(39) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 ··· 21 下一页