01 2019 档案

摘要:题目链接: "传送门" 题目分析: 题意简化:给你一个元素非负的序列,要求支持区间开方,区间求和。 做法很多,洛谷的题解里线段树/树状数组/分块/...都有(基本就是数据结构的群魔乱舞),不过分块能跑过的话分块就好了。 记录区间$i$的元素总和为$sum_i$,如果$sum_i=R[i] L[i]+ 阅读全文
posted @ 2019-01-29 23:17 kma_093 阅读(273) 评论(0) 推荐(0)
摘要:题目链接: "点我" 题目分析: 大模拟,貌似$O(n^2)$也可以卡常过,复杂度正确的做法是用优先队列维护。 代码: include define N (100000+5) using namespace std; struct node{ int a;int t;int num; friend 阅读全文
posted @ 2019-01-28 19:06 kma_093 阅读(130) 评论(0) 推荐(0)
摘要:题目链接: "点我" 题目分析: 带权并查集的题,记一个$d$数组维护每个战舰前面有多少战舰,再在每个树根上记录一个集合大小$sum$,每次进行$get_father$的时候维护一下$d$数组,合并的时候更新集合大小。由于写了路径压缩,每次合并的时候还要把之前集合的$sum$更新到$d$数组上。 代 阅读全文
posted @ 2019-01-28 00:29 kma_093 阅读(258) 评论(0) 推荐(0)
摘要:题目链接: "传送门" 题目分析: 大模拟,先得存操作,然后再处理每个数…… 有一个小优化,在处理操作的时候顺便判一下最后栈里是不是有且仅有一个数,但A完了才想起来,所以就算了…… 总之就是个模拟题……没什么算法,但细节很多~~我就是来水个博客~~ 代码: 阅读全文
posted @ 2019-01-27 17:09 kma_093 阅读(203) 评论(0) 推荐(0)
摘要:题目链接: "点我" 题目分析: 二分图匹配裸题,虽然是网络流24题,但其实我觉得要输出方案的话匈牙利更方便…… 外籍飞行员向皇家飞行员连边,最后输出答案时判一下,如果$match[i] 0$输出$match[i],i$ 代码: 阅读全文
posted @ 2019-01-27 17:01 kma_093 阅读(152) 评论(0) 推荐(0)
摘要:题目链接: "座位安排" 题目分析: 二分图,人为左部点,座位为右部点,由于每个座位可以坐两个人,所以把每个座位拆成两个点$i$和$i+n$,如果一个人想去这个座位则向这两个点连边,跑匈牙利即可。 代码: include define N (100000+5) using namespace std 阅读全文
posted @ 2019-01-27 16:55 kma_093 阅读(213) 评论(0) 推荐(0)
摘要:题目链接: "点我" 题目分析: 二分图最大匹配裸题,跑完匈牙利判断$ans$是否等于教室数即可 多组数据请注意初始化。 代码: include define N 20000 2 define M 5000000 2 inline int read(){ int cnt=0;int f=1;char 阅读全文
posted @ 2019-01-27 16:50 kma_093 阅读(141) 评论(0) 推荐(0)
摘要:题目链接: "传送门点我" 题目分析: 一道建图很巧妙的二分图。把每个装备的两个属性分别连边到它的编号上,这样原问题就转化成了在二分图上找增广路的过程。因为题目要求使用装备的属性的编号连续,所以找增广路时如果找不到则直接break出来即可。 因为数据很大,所以需要加时间戳优化。 代码: includ 阅读全文
posted @ 2019-01-27 16:46 kma_093 阅读(205) 评论(0) 推荐(0)
摘要:题目链接: "传送门走这里" 题目分析: 感觉不是很难啊……不像是蓝题~~(AC量也不像)~~恶意评分? 少打了一个+1调了半天,就这样居然还能过60pts?我思路和题解第一篇高度重合是什么鬼啊,太过分了吧~~本来还想水篇题解的~~ 单调队列分别维护序列最大值和最小值,如果极差$ k$的话就扔掉最大 阅读全文
posted @ 2019-01-27 13:59 kma_093 阅读(184) 评论(0) 推荐(0)
摘要:支持单点修改区间求gcd 因为$gcd$满足交换律和结合律,所以和维护区间和没什么区别…… 支持区间修改区间求gcd 因为求$gcd$有一个辗转相减法,所以有一个$gcd(a,b)=gcd(b a,a)$,推广到多个数也成立。具体证明在 "fsy神仙的博客" 里有写(转载的gsj学长的……) 所以对 阅读全文
posted @ 2019-01-27 10:08 kma_093 阅读(531) 评论(0) 推荐(0)
摘要:题目链接: "传送门" 题意: 给定一颗N个节点的树,定义两点距离为他们之间路径中边权最小值。 Q次询问K,V,询问到V距离 =K的点有多少(不含V) 呃呃呃呃考试的时候直奔了T3,结果公式推挂了(。。)最后5min回来搞T1,看出了正解然而手速跟不上…… 分析: 把所有的询问先离线下来存在一个结构 阅读全文
posted @ 2019-01-26 15:45 kma_093 阅读(229) 评论(0) 推荐(0)
摘要:例题 "洛谷P1894" 分析: 裸题,牛栏作为一个点集,牛作为另一个,牛喜欢牛栏则从牛向牛栏连一条边跑匈牙利就得了,邻接表开大点 代码: include define MAXN (2000+5) using namespace std; inline int read(){ int cnt=0,f 阅读全文
posted @ 2019-01-24 05:08 kma_093 阅读(607) 评论(0) 推荐(0)
摘要:二分图的定义: 二分图的顶点可以被分为两个点集,且相同点集内的顶点之间没有连边 二分图的判定: dfs整个图并对其进行染色,且只能染两种颜色,若与其相邻的顶点与其同色则不是二分图,否则继续dfs。 代码: // 匈牙利算法: // int find(int u){ for(register int 阅读全文
posted @ 2019-01-23 17:23 kma_093 阅读(313) 评论(0) 推荐(0)
摘要:题目描述: 数学中,假如有命题 p 一定能推出命题 q,则称 p 是 q 的充分条件,q 是 p 的必要 条件。 特别的,当 p 既是 q 的充分条件,又是 q 的必要条件时,称 p 和 q 互为 充要条件 现在有 n 个命题,其中一些是另一些的充分条件。请问有多少对命题互为 充要条件? 输入 第一 阅读全文
posted @ 2019-01-23 13:39 kma_093 阅读(160) 评论(0) 推荐(0)
摘要:题目链接: "传送门" 题目分析: 很裸的分块题,最开始在原数组上排序WA掉了,还因此调了很久23333 ~~(不过为什么这样一个全是bug的程序交上去会有90分啊 WOJ上甚至还能玄学A过)~~ 大块打标记,小块暴力改,每次改了小块之后把小块所在的整个大块复制到另外一个数组里排序,询问时用二分找比 阅读全文
posted @ 2019-01-22 13:20 kma_093 阅读(175) 评论(0) 推荐(0)
摘要:题目链接: "点我" 题目分析: tarjan缩点后统计入度为0的连通分量。 代码: include define MAXN 100000+5 define MAXM 500000+5 using namespace std; inline int read(){ int cnt=0,f=1;cha 阅读全文
posted @ 2019-01-22 09:52 kma_093 阅读(129) 评论(0) 推荐(0)
摘要:题目链接: "传送门" 题目: Description 有三个好朋友喜欢在一起玩游戏,A君写下一个字符串S,B君将其复制一遍得到T,C君在T的任意位置(包括首尾)插入一个字符得到U.现在你得到了U,请你找出S. Input 第一行一个数N,表示U的长度. 第二行一个字符串U,保证U由大写字母组成 O 阅读全文
posted @ 2019-01-22 08:51 kma_093 阅读(227) 评论(0) 推荐(0)
摘要:题目链接: "点我" 题目分析: 这是什么,区间dp吗?怎么大佬都在说区间dp的样子 完蛋区间dp都不知道是啥quq 于是使用了玄学的姿势A过了这道题 设 dp[i][j][0] 表示第i天,左边选了 j 个,当前选择了左边的最大价值方案, dp[i][j][1] 表示从右边选 (其实第三维好像不用 阅读全文
posted @ 2019-01-21 10:48 kma_093 阅读(222) 评论(0) 推荐(0)
摘要:$2019/10/3 UPD:$ 我回来填坑了 分块: 联想一下线段树,分块也是一种基于对数据进行~~信仰~~合理分治以提高处理效率的算法 考虑一下线段树是一分为二的树形数据结构,即有从属关系(一个节点的两子节点从属于它) 而分块是一种线性的分治方式,它把数据分成若干个互不影响的块,之后对于一些范围 阅读全文
posted @ 2019-01-20 16:00 kma_093 阅读(203) 评论(0) 推荐(1)
摘要:题目链接: "理想的正方形" 题目分析: 这道题对于我这种菜鸡来说其实有点难……值得一做 核心思想:分别在行和列上维护单调队列 用x_min[i][j]表示以mapp[i][j]为起点向右推n个里的最小值,最大值同理 用y_min[i][j]表示以mapp[i][j]为起点向下推n个里的最小值,最大 阅读全文
posted @ 2019-01-20 01:13 kma_093 阅读(120) 评论(0) 推荐(0)
摘要:题目链接: "WOJ1583" 题目分析: 大水题……我就来水个题解 倒序扫,单调栈维护单减序列,每个对象的答案是栈里它下面那个元素 代码: include define MAXN (1000000+5) using namespace std; inline int read(){ int cnt 阅读全文
posted @ 2019-01-19 21:24 kma_093 阅读(154) 评论(0) 推荐(0)
摘要:题目链接: "WOJ1318" 题目分析: 首先我们要知道当这是一个线性的序列的时候应该怎么做: "最大子序和" 这里是线性的,就把数组复制两遍即可 好像有些细节要处理(也可能是我代码写丑了),具体的都在代码里,挺好理解的 代码: 阅读全文
posted @ 2019-01-19 20:44 kma_093 阅读(183) 评论(0) 推荐(0)
摘要:题目链接: "WOJ1138" 题目分析: 是很经典的一道题,~~乱搞的~~方法应该有不少,这里介绍O(n)的单调队列做法 首先维护一个前缀和,然后枚举每一个位置,维护一个前缀和单增的单调队列,但队列仅储存下标,将下标在当前位置的范围k以外的元素出队 因为对于每一个位置,ans=sum[i] min 阅读全文
posted @ 2019-01-19 20:41 kma_093 阅读(186) 评论(0) 推荐(0)
摘要:题目链接: "WOJ1109" 题目描述: 奶牛在熊大妈的带领下排成了一条直队。 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的B是最高的,且B高于A奶牛,且中间如果存在奶牛,则身高不能和A、B奶牛相同,的这样的一些奶牛最多会有多 阅读全文
posted @ 2019-01-19 18:44 kma_093 阅读(299) 评论(0) 推荐(0)
摘要:题目链接: "最大子段和" 题目分析: 动态规划O(n)求解,设f[i]表示以i为终点的最大子段和 分两种情况: 若f[i 1] 0,则显然f[i]=f[i 1]+a[i](a[i]必须包含在内) 若f[i 1] define MAXN (200000+5) using namespace std; 阅读全文
posted @ 2019-01-19 13:56 kma_093 阅读(203) 评论(0) 推荐(0)
摘要:题目链接: "滑动窗口" 题目分析: 单调队列经典题,~~话说我第一次做这个题的时候是用线段树水的~~ 两个单调队列分别维护最小最大值,因为窗口有k的长度限制所以 维护下标 更方便 又由于是从左往右扫过去的,所以可以保证下标和值都是单调的 读一个维护一个,以 单增队列 为例,每读入一个元素就把前面比 阅读全文
posted @ 2019-01-19 13:32 kma_093 阅读(130) 评论(0) 推荐(0)
摘要:题目链接: "WOJ1019" 题目分析: 单调栈维护,读一个进来,如果前面的比它大就弹出来,然后压栈里(反正它在最右边) 压进栈里输出它前面那个数就好了 O(n)扫一遍就能过 真的水得不能再水的题了……~~我只是水篇博客~~ 代码: 阅读全文
posted @ 2019-01-19 11:41 kma_093 阅读(203) 评论(0) 推荐(0)
摘要:题目链接: "洛谷SP1805" 题意: 如图所示,在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积(图中的阴影部分的面积即所求答案) 输入格式: 有多组测试数据,每组数据占一行。输入零时读入结束。 每行开头为一个数字n(1 define MAXN (100000+5) using 阅读全文
posted @ 2019-01-19 11:25 kma_093 阅读(188) 评论(0) 推荐(0)