摘要: 链接:Miku 这道题可以帮你深入了解懒标记的意义 蒟蒻本来想通过蒟蒻做法做的,就是种树就在位置+1,砍了-1,然而发现这样做会砍掉不存在的树 然而懒标记这个东西,为什么一定要是加或减呢?标记成这个区间需要修改成什么也可以呀 一开始的种树,就相当于把整个区间赋值为1,而砍树,就相当于把这个区间赋值为 阅读全文
posted @ 2020-02-22 20:00 Simex 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 线段是是一个很好用的数据结构,特别是在于长长的板子 链接:Miku 先来一份线段树1的代码 #include<iostream> #include<cstdio> #include<algorithm> int n,m; long long sum[400005], lazy[400005]; in 阅读全文
posted @ 2020-02-22 18:28 Simex 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 一道非常水的静态区间查询的问题。 为什么说他水呢,在洛谷上的数据实在太弱,直接n^2暴力预处理都行 然而我是不会那么干的,我选择了st表 在这道题中,只要加上一个gcd函数,然后把转移的和询问的方式改成两个区间gcd的方式就可以了 #include<iostream> #includ 阅读全文
posted @ 2020-02-22 08:14 Simex 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 我讲一下我自己的解决方法 这个错误还是很明显的,没事干,如果不是kms的锅的话,那么就是字面上的问题了 为什么没事干?要不就是你已经激活了,激活了自然没事了。 要不就是你的电脑上的软件不在它的工作范围内,它没找到可以激活的东西,也没事干。 可能恰好您的版本和它工作范围内的版本不包括吧,可以试试重装另 阅读全文
posted @ 2020-02-22 07:54 Simex 阅读(7046) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 非常水,套公式 #include<iostream> using namespace std; int n,m; int ans1; int ans2; int a; int b; int main(){ cin>>n>>m; if(n>m) swap(n,m); for(int i 阅读全文
posted @ 2020-02-17 21:57 Simex 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 对于这个题,我们对于每一个数i,分别求出所有比它小的,在它前面的和 比它大的,在它后面的,然后把这两个乘起来,然后再把这些积加起来就可以了 然而这样直接做复杂度太高了,我们要优化,仿照树状数组求逆序对的方法,我们就可以在可以接受的时间内求出并且解决问题了 #include<iostr 阅读全文
posted @ 2020-02-15 19:05 Simex 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 这道题虽说是要偶数个数的数的异或和,但是这就是等于区间奇数个数的数的异或和异或上数的种类的异或和 然后奇数这部分可以用前缀异或和来解决,至于种类的问题,就和HH的项链方法一样了 #include<iostream> #include<cstdio> #include<algorith 阅读全文
posted @ 2020-02-15 18:57 Simex 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku %%%ljx巨佬会莫队 这道题可以用树状数组过 首先,把所有询问按照右端点从小到大排序,这个很容易想到,然后非常容易想到,建立一个数组f, 如果数字a在i出现了,就再f[i]=1,然后统计一下区间和就可以了,当然,用树状数组优化 然而考虑一下这样的问题:区间不包含这个数了,这个数重复 阅读全文
posted @ 2020-02-15 18:34 Simex 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 蒟蒻在线%lmk,ljx,lpy,yyq大佬们 Good Night Good luck 这是一道巨大的模拟题,我的做法是创建一块大画布,然后从后往前覆盖即可,具体实现,离不开代码 #include<iostream> #include<cstdio> using namespace 阅读全文
posted @ 2020-02-14 23:00 Simex 阅读(180) 评论(2) 推荐(0) 编辑
摘要: 链接:Miku 这一个问题考虑为两种问题 1:剩下的砝码有什么情况? 2:能拼出多少种? 对于1:没有办法,只能爆搜所有情况 对于2:用一个改良的01背包就可以解决 #include<iostream> #include<cstdio> #include<cstring> using namespa 阅读全文
posted @ 2020-02-08 15:29 Simex 阅读(144) 评论(1) 推荐(1) 编辑
摘要: 链接:Miku 这是一道背包,但是对于放东西有条件限制 首先思考,对于每一个物品,除非放不了,否则就要放,不放上就吃掉,肯定不能扔那不管 我们定义dp[i][j]为第i个物品,高度为j的时候能活的最长时间,那么整个转移过程就是 for(int i=1;i<=g;++i){ for(int j=0;j 阅读全文
posted @ 2020-02-07 21:04 Simex 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 题目描述一脸懵逼 这道题本质上是两个完全背包而已。首先,对于每个船,他所能装的最大货物价值是一定的, 我们可以跑完全背包求出每艘船能装的最大价值 然后考虑需求,虽然说题目是把一块大石头分割成小石头,不过我们倒着想,把许多小石头拼成一个大石头不也是一样吗?并且如果石头的体积大于1,那么 阅读全文
posted @ 2020-02-07 19:59 Simex 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 这道题还是个背包 首先看一下声音的组成,对于每一个农场的声音,它是由两部分组成的 :上一个农场的声音-1(如果有的话)+这个农场的声音(如果有的话) ,并且声音也之和上个农场的总声音有关(注意,总声音,上个)和这个农场,所以我们可以递推出每一个农场的声音。 那么每一个声音代表多少牛呢 阅读全文
posted @ 2020-02-07 18:44 Simex 阅读(163) 评论(2) 推荐(0) 编辑
摘要: 链接:Miku 这就是一个完全背包的板子题 我们把重量当作重量,开销当作价值,那么这个题就是个求价值最小的完全背包 然而题目上说了是不少于,也就是说最优解不一定恰好就是买h磅的时候,怎么办呢? 只要多余h就行了的话,我们就在h+x的范围内找一个最小值不就可以了? 1 #include<iostrea 阅读全文
posted @ 2020-02-04 18:29 Simex 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 这题没边界,用bfs比较好 与处理完了就没什么好说的特别之处 #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; int safe[305][305]; 阅读全文
posted @ 2020-02-02 16:41 Simex 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 这道题给了我一个惨痛的教训 虽然说我是被学信息学不用写字吸引的,但是做题必须证明,必须动笔证明! 本蒟蒻被绿题卡了3个小时有感 这道题最后写出来发现并不是怎么很难啊,为了无后效性,我们倒着搜索每一个任务,因为任务的特殊要求,我们开一个数组记录这个时候的 开始的任务数。对于每一个时间, 阅读全文
posted @ 2020-02-02 16:39 Simex 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 这道题的dp还是先更新子节点,在更新父节点,不过问题就是怎样更新他们 我们定义ff[i][j]为第i个节点字数上共保留j条边的情况下最多的苹果数,对于每一个点,他保留的边必然是他直接保留的之前保留的边和他当前儿子保留的边的值的和加上这一条边的 边权,即ff[u][i]=max(ff[ 阅读全文
posted @ 2020-01-20 22:18 Simex 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 此文不是正解,而且主要内容都在代码和注释上 这是暴力分组背包做法 对于每一个主件及其附件,我们的选择是有限的,而且这道题中说了最多两个附件,那么 我们完全可以枚举每一种组合,然后组合成一件新的物品,并且属于同一个集合,然后对处理后的新物品们 跑分组背包就行了 #include<ios 阅读全文
posted @ 2020-01-20 21:59 Simex 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 分组背包,我们只需要在01背包的基础上稍加修改,把同一类的物品同时枚举即可。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,m; 阅读全文
posted @ 2020-01-20 21:41 Simex 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 链接:Miku 很入门的树形dp,首先,在这个题中,我们要做的就是求出来每一个子节点,然后用他们去更新父亲节点。 对于每一个节点,他有两种状态,去,或者不去,我们定义dp[i][0]为第i个节点也去的状态,而dp[i][1]为它不去,那么很显然 如果这个点去了,它的子节点肯定不去,那么dp[i][1 阅读全文
posted @ 2020-01-20 21:34 Simex 阅读(137) 评论(0) 推荐(0) 编辑