10 2020 档案

摘要:一道有意思的题答构造题。题目是要你卡掉一个算法,给另一个算法过。前 6 个点是最短路的三种解法,后面 2 个点是一个染色问题。 最短路部分 一些需要了解的东西: FloydWarshall 就是 O(V3),和边无关。 ModifiedDijkstra 堆优化的 Dijkstra,正权图里 阅读全文
posted @ 2020-10-31 19:56 Little09 阅读(138) 评论(0) 推荐(0) 编辑
摘要:一个一个加球。 对于每个局面,把所有加和为完全平方数的球对先拆点,再连边。 拆点就是为了变成二分图。 根据二分图相关定理:最小路径覆盖数=总点数-最大匹配数。计算出每个局面的最大匹配数,然后得出最小路径覆盖。和 n 比较,然后输出就可以了。 怎么看都比网络流简单。 #include<bits 阅读全文
posted @ 2020-10-30 23:01 Little09 阅读(99) 评论(0) 推荐(0) 编辑
摘要:这种题是经典的二分图套路题,做法也非常经典。 对于在棋盘上的和一行、一列有关的题目,应当把每行、每列作为二分图上的点跑最大匹配,就是把每行和每列匹配起来。 这道题存在“硬石头”的情况,我们应当换个角度。考虑“行段”和“列段”。一个行段即在同一行的连续的没有硬石头的段,列段同理。显然应当满足每个行段和 阅读全文
posted @ 2020-10-30 23:00 Little09 阅读(86) 评论(0) 推荐(0) 编辑
摘要:对于这类和全排列有关的 dp 题,我们第一时间应该想到的套路是用 f[i][j] 表示从 1i 的全排列,存在 j 个逆序对的情况数。和这题类似的题是 P2401 不等数列。 然后这题的转移也比较容易,只要枚举一下第 i 个数插入的位置是哪个,用 \(i-1 阅读全文
posted @ 2020-10-29 21:50 Little09 阅读(169) 评论(0) 推荐(0) 编辑
摘要:莫比乌斯反演 一、线性筛 void init() { v[1]=mu[1]=phi[1]=1; int cnt=0; for (int i=2;i<=MAXN;++i) { if (!v[i]) p[++cnt]=i,mu[i]=-1,phi[i]=i-1; for (int j=1;j<=cnt& 阅读全文
posted @ 2020-10-24 23:16 Little09 阅读(104) 评论(0) 推荐(0) 编辑
摘要:奇怪的搜索技巧:优化搜索 零、bfs有关 双端队列bfs 解决问题:边权只有0与1的最短路 时间:O(n) 算法的整体框架与一般的广搜类似,只是在每个节点沿分支拓展时稍作改变。如果这条分支边权为0,则从队首入队,否则从队尾入队。这样我们能保证,任意时刻广搜队列中节点对应的距离值都有“两端性” 阅读全文
posted @ 2020-10-24 23:15 Little09 阅读(148) 评论(0) 推荐(0) 编辑
摘要:离线分治:整体二分与CDQ分治 这两个算法都是离线的分治算法。其中CDQ分治是基于时间的分治算法。整体二分是基于值域的分治算法。先讲讲整体二分吧。 我们拿[ZJOI2013]K大数查询作为例子。 一、原理:将所有的修改和查询操作离线存下来。每次二分所有修改和询问操作,分成两部分解决。 二、每个子问题 阅读全文
posted @ 2020-10-24 23:13 Little09 阅读(142) 评论(0) 推荐(0) 编辑
摘要:凸壳上的单调队列:斜率优化 一、性质:一种动态规划的优化。 二、前置:dp、单调队列。 三、适用:dp[i]=a[i]b[j]+c[i]+d[j]a[i]单调递增。 四、方法: 移项:a[i]b[j]+dp[i]a[i]=d[j],把b[j]看作x,把d[j] 阅读全文
posted @ 2020-10-24 23:12 Little09 阅读(119) 评论(0) 推荐(0) 编辑
摘要:广度优先搜索(水的一波~) 每次交换数组里连续两个数 找到第一个合法答案时不要停,继续 找到第二个时输出就好了 上代码 #include<bits/stdc++.h> using namespace std; int n,f[7]; bool flag;//flag表示是否找到了第一个合法答案 st 阅读全文
posted @ 2020-10-24 20:32 Little09 阅读(65) 评论(0) 推荐(0) 编辑
摘要:零、前言 我这个数学菜鸡决定写一下这道变态的巧妙的数学题的题解。 一、题目 链接:years 题目大意:求12mCmkCnk 二、前置知识 比较简单的几个组合数公式,不过多赘述。 ·公式1:Cnm=n!m!(nm)! 阅读全文
posted @ 2020-10-24 20:30 Little09 阅读(97) 评论(0) 推荐(0) 编辑
摘要:这是一篇早期题解,当时不会 LATEX 请见谅。 因为我实在太蒻,写的有点啰嗦了,大佬请见谅谢谢 Part1 前置知识 1.异或运算 2.前缀和 3.莫队 Part2 转化题意 异或是一个很神奇的运算 当然对于前缀和是同样适用的 因此,很容易想到,维护一个前缀和数组sum sum[i]表示 阅读全文
posted @ 2020-10-24 20:21 Little09 阅读(90) 评论(0) 推荐(0) 编辑
摘要:这是一道挺好的dp题,我的方法会理解起来稍微简单点。 题目大意就不赘述了,我们直接考虑状态。 令f[i][j][k][l]表示选i组,j组[],k组()且深度为l的组合有几种。但是我们发现这样对于S=AB的状态转移是很难实现的。因为AB的深度都不知道,需要依次枚举。 我们可以考虑 阅读全文
posted @ 2020-10-24 20:20 Little09 阅读(96) 评论(0) 推荐(0) 编辑
摘要:Day1 进考场。开题。 密码一次对。 T1看了一眼。sb类型的模拟。我用了递归(二分当然也可)5min切了(虽然结束后才后悔) 剩下的时间基本在乱搞T2.想了半天只打了个n2的算法。一直在搞链的15分,推式子就是推不出来。看来还是我太菜了啊 T3还是花了大约20min时间打了个暴力的。10pts 阅读全文
posted @ 2020-10-24 20:19 Little09 阅读(126) 评论(0) 推荐(0) 编辑
摘要:计算机科学 计算机发展史 第一代电子管计算机(1946-1958) 第二代晶体管计算机 (1959-1964) 第三代集成电路计算机 (1965-1970) 第四代超大规模电路计算机 (1971至今) 计算机名人名士 申农(克劳德·艾尔伍·申农 美国人)被称为“数字时代之父”,第一次提出了 bit( 阅读全文
posted @ 2020-10-24 20:18 Little09 阅读(425) 评论(0) 推荐(1) 编辑
摘要:一道区间dp。 状态很好设,我们可以设 dp(i,j,k) 表示在 a 的第 i 位前取出 k 个子串与 b 的前 j 位一样的方案数。然后发现不是很好转移。 这个时候很容易就想到,我们再设一维0/1,即 dp(i,j,k,t)t表示 \ 阅读全文
posted @ 2020-10-24 20:08 Little09 阅读(133) 评论(0) 推荐(0) 编辑
摘要:先说点闲话。考场上我只有大概半小时时间做题目,A了前两题后大概就五分钟在这题,乱骗 5 分就被叫走去上物理课去了。主要原因是我觉得以我的水平是完全能A掉这题的,但在考场上因为上课没时间,感到很遗憾,所以就有了这篇题解。 我讲讲我的思路。我们看到这个“旋转180度”很恶心,仔细想后就会发现左上角和右下 阅读全文
posted @ 2020-10-24 20:04 Little09 阅读(119) 评论(0) 推荐(0) 编辑
摘要:这题是一道小思维题,放在 C 的话难度还是比较低的。 我看有些题解只给了做法没有给证明,所以来说一下。 题意是说如果两个数最大公约数是序列最小值就可以交换。问最小交换次数使得单调不下降。 先给结论:我们先对 a 数组排序,得到最终数列。考虑每个数,如果这个数不等于最终数列的数并且不能被数列最 阅读全文
posted @ 2020-10-24 20:03 Little09 阅读(106) 评论(0) 推荐(0) 编辑
摘要:一整棵树的答案很显然是一样的,所以我们可以考虑并查集维护。 我们可以用 sizei 表示以 i 为根的子树大小。注意这里,如果 i 已经是一棵树上的节点,那么就不用维护了。这个显然可以维护:在合并的时候相加即可。 再用 ansi 表示以 i 为根的答案。考 阅读全文
posted @ 2020-10-24 20:01 Little09 阅读(318) 评论(0) 推荐(0) 编辑
摘要:二分图判定模板题(不知道为什么蓝)。 如果没有同性恋,那么很显然是一张二分图,否则不是。那么只要判定这张图是不是二分图即可。 一个图是二分图,当且仅当图中没有奇环。所以黑白染色即可。 多测记得清空。 #include<bits/stdc++.h> using namespace std; int T 阅读全文
posted @ 2020-10-24 19:59 Little09 阅读(105) 评论(0) 推荐(0) 编辑
摘要:听说这道题在赛时难倒了好多神仙。其实这只是一个暴力枚举。 首先肯定不能直接贪心做,如果对于某个人去最优的方案,第二个人就不一定最优了。 注意到 cnt 值很小。所以可以考虑枚举第一个人拿了多少把剑,剩余的肯定尽可能拿战斧。第二个人就可以贪心拿重量小的武器知道拿光,然后拿另外一个。 #incl 阅读全文
posted @ 2020-10-24 19:57 Little09 阅读(134) 评论(0) 推荐(0) 编辑
摘要:这题其实重题了,但是我没有发现。 考虑怎么弄掉一个区间。要么用操作 2 把它们一次切光,要么用操作 1 把它们切到一个为 0,再递归下去。 由于区间不重复,所以不用记忆化,直接做就可以了。 #include<bits/stdc++.h> using namespace std; int 阅读全文
posted @ 2020-10-24 19:54 Little09 阅读(104) 评论(0) 推荐(0) 编辑
摘要:感觉这道题好像出的水了点,像我这种对期望一窍不通的菜鸡也可以推出来。我的思路好像和大家不太一样(更简单一点吧)……但是好歹过了,大家可以参考一下。 我们设要通过第 x 个点需要的期望步数为 E(x)。那么我们可以根据定义推出 E(x) 的表达式: \(E(x)=\dfrac{ 阅读全文
posted @ 2020-10-24 19:49 Little09 阅读(94) 评论(0) 推荐(0) 编辑
摘要:先说一句,我 FST 了。 题意就不说了。可以想到,对于一个 ai+1 相对于 ai 来说 (aiai+1),在 mb 数组中只需要有一个的 bi+1bi 不同。这是很显然的。 举个例子: 7 = 2 + 阅读全文
posted @ 2020-10-24 19:40 Little09 阅读(123) 评论(0) 推荐(0) 编辑
摘要:一个奇怪的做法。先算出两个人到达每个标志用的时间,然后枚举所有两个相邻标志之间,检查两车是否在此之间相遇。如果找到了,计算出时间就可以了。 注意一下精度。 #include<bits/stdc++.h> using namespace std; int n,l; int a[100005]; lon 阅读全文
posted @ 2020-10-24 19:39 Little09 阅读(110) 评论(0) 推荐(0) 编辑
摘要:根据题意,对于每个强盗和每盏灯的关系,我们列出 nm 个条件,第 i 个条件是满足 x>aiy>bi。我们列出所有条件,按 ai 排个序,枚举一下可以满足哪几个条件,然后更新答案就可以了。 #include<bits/stdc++.h> usin 阅读全文
posted @ 2020-10-24 19:38 Little09 阅读(65) 评论(0) 推荐(0) 编辑
摘要:这题有的唯一的题解是尺取法做的,其实这题也可以简单地二分查找。(然而其实不比尺取法实现容易) 先说明,洛谷题面里翻译有误:两两工资差不超过d 应为 工资差值小于d。 两两的差其实转化为最大和最小的差。那么我们先对所有人按工资排序,然后枚举最小的人是谁,在他工资上加 d,然后找到小于这个值的人 阅读全文
posted @ 2020-10-24 19:36 Little09 阅读(78) 评论(0) 推荐(0) 编辑
摘要:贪心地想,肯定是给询问多的位置更大的数。所以先把数排序,对于每个问题差分一下,最后求前缀和,得到每个位置的询问次数。再把询问次数排序,一一对应即可。 #include<bits/stdc++.h> using namespace std; int n,m; long long a[200005]; 阅读全文
posted @ 2020-10-24 19:35 Little09 阅读(82) 评论(0) 推荐(0) 编辑
摘要:单调性优化:单调栈与单调队列 一、单调栈 单调栈,就是要维护一个栈,单调递增或递减。一般地,放入元素时,如果栈顶的元素不符合单调递增(或递减),那就把它弹出,再查栈顶。直到符合或栈空了,再把元素放入。 适用于快速求每个数两侧比它大(或小)的数的位置。 例题-柱状图中最大的矩形 算法 ·其实很简单 · 阅读全文
posted @ 2020-10-24 19:20 Little09 阅读(82) 评论(0) 推荐(0) 编辑
摘要:这题的加强版的我们 PJ 模拟赛的 T4,个人感觉还有点意思的。 先把题目转化一下,就是每个询问给你一个 K 值和 v 值,把所有小于 K 的边都删掉,然后从 v 能走到几个节点。 可以离线,所以选择离线。把问题按 K 从大到小排序,把边按权值从大到小排序。然 阅读全文
posted @ 2020-10-24 19:11 Little09 阅读(147) 评论(0) 推荐(0) 编辑
摘要:一个很显然的做法是求二维前缀和,然后枚举每个子矩形判断,这样的话是 O(n2m2) 的。但是这只能拿到 60 分。 那么我们可以考虑,对于两个矩形 (1,y1,x1,y2)(1,y1,x2,y2)(x1<x2),若它们内部的和对 k 求余 阅读全文
posted @ 2020-10-24 19:09 Little09 阅读(62) 评论(0) 推荐(0) 编辑
摘要:直接考虑 dp。令 dp[i][j] 表示到第 i 棵樱花树,摘了 j 片樱花的可能方案数。转移方程很显然,就是枚举在每个树下摘的几片樱花: dp[i][j]=k=0min(a[i],j)dp[i1][jk] 发现只有上一次会产生影响,所以把 阅读全文
posted @ 2020-10-24 18:44 Little09 阅读(107) 评论(0) 推荐(0) 编辑
摘要:每次选择一个 kk 的矩形,显然对于 (1,1) 这个点,只有唯一的矩形选择。那么要是 (1,1) 变成 0,也只有唯一的操作。操作后再观察 (1,2),发现只有两个矩形,其中一个刚才已经操作过了,那么这种操作还是唯一的。这样递推下去就可以了。而对于有些放个的矩 阅读全文
posted @ 2020-10-24 18:40 Little09 阅读(101) 评论(0) 推荐(0) 编辑
摘要:现在题解里 Isaunoya 神仙的题解太简洁了,另外两个神仙方法和我不一样,所以我来写一句。 题意是求一个集合中所有子集异或和之和。 因为是异或运算,所以先拆位。考虑每一位,可以想到,要使贡献为 1,那么肯定是选奇数个 1 和偶数个 0。我们分两种情况看一下: 所有的 n 个数 阅读全文
posted @ 2020-10-24 18:39 Little09 阅读(135) 评论(0) 推荐(0) 编辑
摘要:前言 一个初二彩笔的游记。停更。 点击将网页转换为AC_WA自动机太菜了模式 引申作品 考 csp 的笨蛋机 result: J 400 S 215 DAY -24 初赛那天没来得及写东西,然后昨天在whk,今天人不舒服在家里,给它补上。 上午考了提高级,本以为要 90+,结果挂成屎。 来看 阅读全文
posted @ 2020-10-24 18:35 Little09 阅读(184) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2020-10-24 18:31 Little09 阅读(73) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示