02 2023 档案

摘要:给你一个笛卡尔坐标系,现在要支持三种操作,第一种操作是添加一个点(x,y),第二种操作是删除一个点(x,y), 第三种操作是查询严格在点(x,y)右上角的点中,横坐标最小的点,如果有多个点,选择纵坐标最小的那个。 首先肯定离散化 然后考虑怎么用线段树表示二维的信息,觉得树套树也可以写,但是线段树套s 阅读全文
posted @ 2023-02-28 09:27 liyishui 阅读(42) 评论(0) 推荐(0) 编辑
摘要:让你构造一个数列,满足m种限制条件,每种限制条件是l,r,x,要求构造的序列区间[l,r] 与运算的值结果为x。 注意到如果某一位上&运算的结果为1的话,该区间内所有元素都要是1 先把需要是1的地方拎出来处理,相当于区间操作,写个lazytag; 然后再考虑0,显然如果为0,区间内只要有1个0就可以 阅读全文
posted @ 2023-02-28 09:21 liyishui 阅读(30) 评论(0) 推荐(0) 编辑
摘要:一看发现要求满足3个条件,有点头大 可以先把所有的bus和people拎出来,用bus的s和people的l去排序,这样能保证对于当前的people,si都合法。 然后考虑如何满足ti最小的情况下,使得fi>=bj,且ti>=rj 思想有点像dp,dp里解决二维问题,一问是拿下标做状态,然后搞偏序或 阅读全文
posted @ 2023-02-27 17:21 liyishui 阅读(7) 评论(0) 推荐(0) 编辑
摘要:首先注意到gcd是满足结合率的,所以可以用线段树维护区间gcd 然后简单讨论一下什么时候只要删掉一个就可以 1,如果左区间和右区间的gcd都为x的倍数,直接return true 2,如果都不是,也都直接return false 3,如果有一个是,那么转化为子问题继续递归,出口是l==r(只能删一个 阅读全文
posted @ 2023-02-27 11:25 liyishui 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题意:一颗有根树,树上每一个节点有一个灯,要支持两种操作 第一种操作是统计一颗子树内开着的灯个数。 第二种操作是将一个子树内的所有灯状态改变(开灯->关灯,关灯->开灯)。 解: 经典处理方法是先把树通过dfs序拍成区间,预处理出每个结点u管理的左右端点 然后变成区间改变01状态,求和问题 01状态 阅读全文
posted @ 2023-02-14 12:44 liyishui 阅读(10) 评论(0) 推荐(0) 编辑
摘要:直接用城市建点的话不好表达连边的关系 考虑把每条边看作左部点 右部点的话朴素想法是工人,但是也不好表达工人和材料的关系 发现工人的信息可以整合成一共有多少种材料,每种材料有多少人擅长 所以把材料看成右部点,城市和所需材料之间连容量为1的边,材料和汇点T之间连容量为“擅长该材料人数”的边 那基环树怎么 阅读全文
posted @ 2023-02-11 22:27 liyishui 阅读(21) 评论(0) 推荐(0) 编辑
摘要:观察到n+m最多才2000个点,正解也不是差分约束 但是它能跑:) 建图比较平凡不记述 难得的是用链式前向星T了,改vector过了 T9的话是加了随机化优化,cin读入,链式前向星存边 1513ms的是没加随机化优化,scanf读入,vector存边 857ms的是没加随机化优化,scanf读入, 阅读全文
posted @ 2023-02-10 22:39 liyishui 阅读(27) 评论(0) 推荐(0) 编辑
摘要:考虑怎么处理关系为0的状况 最开始写了一个分类讨论,然后发现这俩等式是矛盾的并不在一起,遂丢进垃圾箱里 但是,其实不关心谁大谁小,只要满足abs|Ai-Aj|==1就可以 根据解绝对值不等式的知识,解得: -1<=Ai-Aj<=1 yeah,现在有不等式了,怎么处理最大化极差的问题?看到不等式想到跑 阅读全文
posted @ 2023-02-10 21:40 liyishui 阅读(17) 评论(0) 推荐(0) 编辑
摘要:正解据说是贪心+dp 可惜我这个人没什么脑子:) (遇到了能用差分约束也能用dp+贪心的第二题了,真是神奇 假设有一组合法的sum就能逆推出di,因为ai+di+1=sumi最小化Σdi就是最小化Σsumi考虑sumi应该满足的条件1.是递增的sumi>=sum(i-1)2.sumi<=sum(i- 阅读全文
posted @ 2023-02-10 18:52 liyishui 阅读(39) 评论(0) 推荐(0) 编辑
摘要:最短路三角形不等式:Xi<=Xj+w(根据最短路的定义,要是不满足的话就不是最短路了) 给出若干个形如Xi-Xj<=w的约束条件,考虑求一组合法的解。 把问题转化成求最短路,对于Xi-Xj<=w,我们从j向i连一条边权为w的边 如果有负环的话即无解。 ...? 但差分约束难搞一点的话还要求最大解、最 阅读全文
posted @ 2023-02-10 00:08 liyishui 阅读(29) 评论(0) 推荐(0) 编辑
摘要:考虑黑白染色,i+j%2==1的为黑格 一块多米诺就要覆盖一黑一白,相当于一个匹配 那全覆盖也就是存在完美匹配 (应该是网络流经典的trick? 讨论选取的点来自同一边和两边 1.同一边 任意挑选两个点去掉后左右两边个数不相等,肯定不存在完美匹配 贡献是cnt*(cnt-1)/2*2=cnt*(cn 阅读全文
posted @ 2023-02-08 12:06 liyishui 阅读(65) 评论(1) 推荐(0) 编辑
摘要:根据线性代数的知识可知邻接矩阵自乘相当于做floyed 把输入转化为01矩阵(显然>1的数和1是等价的)得到邻接矩阵 问是否存在k次后所有数都为正数等价为自乘k次后所有点两两可达 转化为图论,用tarjan缩点判断scc的数目是否只有一个,或者直接bitset优化folyed也可以 #include 阅读全文
posted @ 2023-02-06 00:33 liyishui 阅读(18) 评论(0) 推荐(0) 编辑
摘要:裸的tarjan 依题意有向图上i和j之间能互相到达,i和j肯定在同一个scc内 最小的代价就是Σ每个scc内最小的cost 方案就是每个scc内最小值的数的乘积 #include<bits/stdc++.h> using namespace std; const long long mod=100 阅读全文
posted @ 2023-02-05 21:45 liyishui 阅读(15) 评论(0) 推荐(0) 编辑
摘要:一眼并查集 但是怎么维护,借鉴了别人的思路 如果有重叠的话端点一定要重叠,所以用端点来代表线段就可以了 但是暴力连边复杂度受不了 考虑把线段拆成两点,同色的放入一个集合,更新的时候不断合并直至size()==1(==1不erase是因为要留下r最大的,显然只有r最大的有用) #include<bit 阅读全文
posted @ 2023-02-05 13:47 liyishui 阅读(21) 评论(0) 推荐(0) 编辑
摘要:很好的题 [ 观察样例发现只有0,1,2 大胆猜测是不是也只会有0,1,2 如果不是的话说明某条路径上出现过0,1,2,且是以2,1,0的情况出现的 但是2的末尾是0,和1&不可能得到1,所以假设不成立 ] 然后考虑什么时候有0 有0的充分必要条件是对于二进制的每一位,都有一个地方出现一个0 相反的 阅读全文
posted @ 2023-02-05 13:37 liyishui 阅读(14) 评论(0) 推荐(0) 编辑
摘要:不用真的建图,真的建图两人之间的代价不好算。 等价转化为对给定的ai找出bi,使得bi=k*a[i],且互不相同 k的上界为n,简易证明: [ 若a[i]互不相等,全部选a[i]*n会比a[i]*(n+1)更好; 若存在一对a[i]相等,可以使其中一个数取n-1 若再存在一对,取n-1.. 必能在n 阅读全文
posted @ 2023-02-01 17:49 liyishui 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题意: 有n个学生,m个社团,每个学生只属于一个社团。在接下来的d天内每天会离开一个学生(再也回不来了)。 现要从剩下的每个社团中挑选一个学生组成team,并最大化他们的mex。 题解: 顺着二分图的学习摸到这里,最开始想的是正向直接加边魔改一下匈牙利,但是会超时(因为每次加新边后得到的都是新图,匈 阅读全文
posted @ 2023-02-01 00:47 liyishui 阅读(29) 评论(0) 推荐(0) 编辑

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