01 2020 档案

摘要:莫队算法,进行组合数转换,就能发现贡献度只要维护平方和就行 网上有很多好题解,我只是记录一下我的代码 注意本题两个int数相乘会爆int,所以要养成开long long的好习惯,不然螺旋升天 #include<iostream> #include<algorithm> #include<cstdio 阅读全文
posted @ 2020-01-31 17:17 朝暮不思 阅读(143) 评论(0) 推荐(0)
摘要:本题是状态压缩的dp题目,具体注释在代码当中,有挺多细节 #include<iostream> #include<string> #include<vector> #include<cstdio> #include<queue> #include<algorithm> #include<cstrin 阅读全文
posted @ 2020-01-31 17:10 朝暮不思 阅读(176) 评论(0) 推荐(0)
摘要:这道题是一道区间dp的题目 我们如何看出他是区间dp? 因为他是在一条线上从小区间不断向大区间扩散,长度不断增加,所以大区间的答案一定是从小区间的答案更新而来 题目已知的信息有区间位置,和功率和米数,所以我们要从这些信息入手。 如何设计dp状态? 我们观察到我们需要保存小区间的答案,所以我们前两维可 阅读全文
posted @ 2020-01-30 10:39 朝暮不思 阅读(165) 评论(0) 推荐(0)
摘要:本题是经典的莫队算法 莫队算法是离线查询的一种复杂度优秀的暴力算法。 首先我们需要注意异或的几个性质,相同数字异或等于0,所以我们考虑前缀和,因为从ai-aj的异或值就等于pre[i-1]^pre[j] 前缀和的异或,因为相同部分会抵消。 莫队一般和分块相结合,我们需要维护一个cnt数组,cnt[a 阅读全文
posted @ 2020-01-29 19:17 朝暮不思 阅读(167) 评论(0) 推荐(0)
摘要:反悔贪心,思维量非常大,重点如下: 1.d[i]存区间,表示i-i+1的长度。 2.二叉堆来维护最小值 3.每次只有两种可能,一种是取不相邻的边,另一种是取相邻的边,如果取相邻的边,那么必定是破坏之间的集合重组,在代码上显示的就是差值 4.合边操作并不是真的合边,而是差值刚好就能代表重组集合,在数学 阅读全文
posted @ 2020-01-28 19:11 朝暮不思 阅读(113) 评论(0) 推荐(0)
摘要:A题 签到题 B题 只需要贪心的调换成只能经过一次调换的最小字符串,再与目标串比较 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace st 阅读全文
posted @ 2020-01-28 11:09 朝暮不思 阅读(111) 评论(0) 推荐(0)
摘要:A题 水题,但是我做麻烦了,因为我不知道字符串内部也可以排序,学到一招 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; con 阅读全文
posted @ 2020-01-27 11:12 朝暮不思 阅读(184) 评论(0) 推荐(0)
摘要:本题是树形dp+分组背包问题 根据本题的条件,我们自然可以设计二维dp状态 f[i][j],显然第一维表示的是以i为根节点的树,那么考虑第二维 第二维有两种可能,一种是总价值,一种是总人数,我们可以想到控制价值并不好做,因为价值可以很大,导致数组开不起来,还有就是价值可能为负,所以我们控制第二维是以 阅读全文
posted @ 2020-01-25 17:06 朝暮不思 阅读(183) 评论(0) 推荐(0)
摘要:AcWing247 线段树+扫描线 Codeforces617 E . XOR and Favorite Number(莫队算法) P1494 [国家集训队]小Z的袜子 题解 洛谷P1533 可怜的狗狗题解 (莫队算法+离散化+权值线段树) P4735 最大异或和 /【模板】可持久化Trie AcW 阅读全文
posted @ 2020-01-24 10:15 朝暮不思 阅读(168) 评论(0) 推荐(0)
摘要:在这篇题解中我不打算介绍线段树扫描线原理,因为网上有更多的人介绍的更好,我打算和大家分享一些扫描线操作的细节问题。 1.首先本题是特殊的线段树操作,因为根据我们对题目的了解,可以不用写pushdown操作(仅对矩形有效),原因如下: 在线段树中,有两个地方需要pushdown操作,第一个是修改时,第 阅读全文
posted @ 2020-01-24 10:14 朝暮不思 阅读(395) 评论(0) 推荐(1)
摘要:G - 小明系列故事——买年货 HDU4501 三维费用背包,枚举积分,钱数和免费个数 多维费用背包要在循环体内设计比较,而不能直接在for循环语句中设置类似普通01背包的语句j>=a[i]这样的语句,因为即使有一维不能满足,不代表其他维不能满足,这样会丢弃部分情况 #include<iostrea 阅读全文
posted @ 2020-01-22 11:41 朝暮不思 阅读(376) 评论(0) 推荐(0)
摘要:A题 大水题,从2枚举判断素数找到一组答案即可 B题 思维题,先对b数组排序,因为我们知道肯定存在答案,所以我们只要枚举每个a[i],使得x=b[1]-a[i](在同余的情况下,具体表达看代码),然后枚举x看看哪个是符合条件并且是最小的 #include<iostream> #include<cst 阅读全文
posted @ 2020-01-22 11:22 朝暮不思 阅读(125) 评论(0) 推荐(0)
摘要:借鉴自洛谷题解 本题是一个背包问题。是一类求两集合之间的差关系的动规问题。可以将求最值转变为求可行性 背包问题是要建立起体积和重量之间的关系 我们尝试根据题目所给条件转化为背包问题,首先统一将大的放在上面,那么势必会进行几次翻转,我们记录这些翻转的数量,作为背包的初始重量。 因为我们所要求的是最小翻 阅读全文
posted @ 2020-01-21 18:24 朝暮不思 阅读(255) 评论(0) 推荐(0)
摘要:洛谷P1169 棋盘制作题解与悬线法的作用 (悬线法) 洛谷P1182 多米诺骨牌(不容易看出来的背包好题) 背包系列练习 洛谷P1273 有限电视网(树形dp+分组背包) 洛谷P1220 关电灯 区间dp 洛谷P1283 平板涂色 状态压缩 洛谷P1437 [HNOI2004]敲砖块 POJ 30 阅读全文
posted @ 2020-01-21 17:56 朝暮不思 阅读(264) 评论(0) 推荐(0)
摘要:A题 本题只需按题目所给条件实现就可,分类讨论也很快,注意a有可能小于b #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<map> #include<alg 阅读全文
posted @ 2020-01-21 14:10 朝暮不思 阅读(114) 评论(0) 推荐(0)
摘要:A题 关注到本题的数据量不大但是数据很大,可以使用暴力+哈希的方法 将关闭的餐厅放到map遍历 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<map> # 阅读全文
posted @ 2020-01-20 11:42 朝暮不思 阅读(186) 评论(0) 推荐(0)
摘要:A题 此类直线排列问题都可以先对输入排序,把最大的用光再看,一般都考虑插入。 如果C>A+B+1,那么必定不行。 考虑C<=A+B+1,我们可以贪心的想,肯定是要将AB插完后尽量使AB的差距小,这样才可以对剩下的AB进行排 我们可以发现,在人为操作下,可以最终使得B=A+1或B=A,可以先插B,插到 阅读全文
posted @ 2020-01-19 11:20 朝暮不思 阅读(273) 评论(2) 推荐(0)
摘要:A题 本题只需要对e,f进行大小比较,决定先买哪个即可,因为jacket对于每类都需要一个,所以以jacket为指标。 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> 阅读全文
posted @ 2020-01-18 22:23 朝暮不思 阅读(129) 评论(0) 推荐(0)
摘要:C题 本题是个思维暴力题 因为受到的伤害是固定的,所以问题不在于哪个时机 Cuber QQ 打出最后一击,而是是否能在每次外界攻击前配合之前的攻击打死小兵,我们只需要在这次攻击结算前一秒打出最后一击就行了。 而要求第一下最晚,就恰好是从 ans 到 ai−1 (也就是这次攻击结算前一秒) 恰好一直连 阅读全文
posted @ 2020-01-17 10:19 朝暮不思 阅读(270) 评论(1) 推荐(0)
摘要:1.简介 树状数组是一种初级数据结构,凡是他能做的事情,都可以交给线段树来完成,但是树状数组的书写十分容易,所以很多情况我们都用树状数组来写。 Q:我们为什么要引入树状数组的概念? A:因为查询区间和,如果用数组的话,那么查询的时候是O(N),修改可以是O(1)。用前缀和查询是O(1),但是修改是O 阅读全文
posted @ 2020-01-16 19:33 朝暮不思 阅读(203) 评论(0) 推荐(0)
摘要:A题 div2的A题一般都是思维题或者暴力题,显然本题暴力不可解,但是观察式子,可以得出我们需要求的是y=x+d/(x+1)的最小值,可以求导数,也可以直接构造成初中学习过的不等式 得到ymin=2√d -1,即可求出答案。 #include<iostream> #include<cstring> 阅读全文
posted @ 2020-01-16 16:56 朝暮不思 阅读(204) 评论(0) 推荐(0)
摘要:A题 本题虽然是签到题,但是思路十分精巧,提醒我以后思考的时候可以多考虑进制转化的思路 因为本题要求第x个单词,又注意到备选单词的长度是相同的,可以想到用k进制的转化来思考 第x个即求x-1的k进制数,然后按照前后顺序来逐个遍历#号并替换,注意的是,不够要添0 #include<iostream> 阅读全文
posted @ 2020-01-13 20:32 朝暮不思 阅读(161) 评论(0) 推荐(0)
摘要:本题是带权并查集的简单题,考虑3点 1.合并用普通并查集。 2.维护d数组表示两者之间的舰队数量 3.维护size数组表示舰队的大小 #include<iostream> #include<cstring> #include<string> #include<cmath> #include<algo 阅读全文
posted @ 2020-01-13 15:11 朝暮不思 阅读(244) 评论(0) 推荐(0)
摘要:A题 签到水题 #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<map> #include<vector> #include<cstdio> using namespace std; 阅读全文
posted @ 2020-01-13 10:46 朝暮不思 阅读(213) 评论(0) 推荐(0)
摘要:A题 只需要找到A中后面跟的最长的p串是几个即可 #include<iostream> #include<cstring> #include<string> #include<map> #include<vector> #include<cstdio> using namespace std; in 阅读全文
posted @ 2020-01-12 21:28 朝暮不思 阅读(187) 评论(0) 推荐(0)