05 2022 档案
摘要:F2. Promising String (hard version)_BIT正序对+离散化+同余分组 题目大意: 给一串由+-构成的序列,两个-可以合并成一个+。一个串+-数量相等就称其为好串,若一个串可以通过若干次合并变成好串那么我们称其为P串。现在给定一个串,问其中有多少的子串是P串。 思路和
阅读全文
摘要:D. Toss a Coin to Your Graph_二分+拓扑 题目大意 在图中找一个长度大于等于k的链使得其中的最大值最小。 思路和代码 很好的题目 首先,最大值的最小很容易就可以想到二分 每次在值小于等于mid的图里面做拓扑序bfs,维护ds数组,dsi表示从拓扑序起点到点i的最多点数。
阅读全文
摘要:C. Rooks Defenders_BIT 题目大意 有n*n的棋盘,每次可以在任意位置放下或者拿走一个车。每个车可以攻击到他所在的一整行和一整列。每次查询给一个矩形区间,问区间内的每一个格子是否都能被攻击到。 思路和代码 首先x轴y轴分开考虑是好想的。 对两个轴维护BIT即可 要注意的是,BIT
阅读全文
摘要:B. Stone Age Problem_思维 题目大意: 给定一个序列a和q次询问。第一种询问要将ai换成x,第二次询问将整个序列换成x。每次询问要给出整个序列的和。 思路和代码: 乍一看是一个区间查询问题,用线段树可能会T,我毛姑姑这个懒标记应该会很慢。 仔细想一下可以发现不论单点修改了几次,只
阅读全文
摘要:最近公共祖先 LCA dfs向上标记-O(n) 点A先向根搜索并标记,点B再向上搜索,第一次碰到的标记即是lca。 复杂度On,不常用 倍增法-O(logn) dep[i]表示点i的深度 up[i,j]表示从i开始向root方向走2j步数能走到的位置 若从i开始向根跳2j次会跳出根则up[i,j]=
阅读全文
摘要:E. Moving Chips 题目大意: 2*n的棋盘上有若干棋子,每次可以选择任意一颗移动。问吃掉棋盘上所有棋子的最小步数是多少。 思路和代码: 麻了,最后剩十分钟做这个,还理解错题意了 首先,贪心去想肯定不把把两边全空的格子计入考虑。 我一开始理解成只能移动其中一颗棋子了,但是是每次都可以随意
阅读全文
摘要:C. Tokitsukaze and Two Colorful Tapes_并查集+环 题目大意 给ab两个数组,他们均是n的排列。现在要在满足原来ai==bj的仍旧相等的条件下,重新排列ab,使得sum(abs(ai-bi))最大。 思路和代码 比较好看的就是这是一堆环。我们贪心的去给每个环一大一
阅读全文
摘要:B. Tokitsukaze and Meeting_思维 题目大意: n*m的座位。班级里有0有1,给01串表示大家进入班级就坐的次序,每一时刻进一个人。每个人都会坐在(1,1)座位,其他所有人右移一位。一行或一列在其中有1的情况下被认为是好的。现在要求出对于每一个时刻,好行和好列的和。 思路和代
阅读全文
摘要:A. Parsa's Humongous Tree_基础树形dp 题目大意 每一个点可以选择[li,ri]中任意整数作为权值,一条边的权值是两点权值之差的绝对值。问整棵树的权值和最大是多少。 思路和代码 哎,当时转移方程我都写好了,脑袋没转过弯来。 首先,做几个样例可以得出每个点的权值必取最大或者最
阅读全文
摘要:H2. Maximum Crossings (Hard Version) 题目大意: 有两条平行的线段,点line1[i]和line2[ai]相连。问最多有几个交点。 思路和代码: 今天吃午饭的时候队里的神犇杰锅来跟我炫耀,吹水间跟我说了这个题目。我来补一下。 首先把题目转化成,[1,i-1]中有多
阅读全文
摘要:E. Nearest Opposite Parity_反向建图+超级源点 题目大意 给数列a,ai表示存在(i,i-ai)和(i,i+ai)两条边。每条边边权为1。现在要求出以ai出发到aj(ai和aj满足奇偶性不同的条件)的所有路径中最短的长度。 思路和代码 超级源点模板题 首先建立两个超级源点。
阅读全文
摘要:D. Cycle in Graph_找环 题目大意 给一个图,每个点至少和其他k个点连接,现要求找出一个含有至少k+1个点的环。 思路和代码 每个点都和其他至少k个点连接,图十分稠密。所以从任意点出发都可以搜索到题目要求的环。 int n , m , k ; int path[N] , cnt ;
阅读全文
摘要:A. Timofey and a tree_思维 题目大意: 给一颗无根树,现要选出一个节点作为根,使得其所有子树的节点颜色分别相同。问是否可能。 思路和代码: 一开始看到只有单组数据,试了试暴力做法,即将每个点都试做根,跑一遍搜索。但是这样做会T。 bool dfs(int now , int p
阅读全文
摘要:E. Cover it!_ 黑白染色 题目大意 给一个n点m边的图,现在要挑出floor(n/2)个点,使得未选择点到被选择点的路径中至少有一条长度为1 。 思路和代码 简单的黑白染色 vct<int> eg[N] ; int clr[N] ; void dfs(int now , int pre)
阅读全文
摘要:C. Longest Simple Cycle 1600 题目大意 给n条链,每条链有ci个节点,每条边长度是1。现在对除了第一条链以外的每一条链,其两个端点都和前一条链的ai点bi点相连。问该图的最长环长度。 思路和代码 一拿到题,这不就dfs一下O(n)解决嘛。 再看数据范围,好家伙1e14个点
阅读全文
摘要:B. Glass Half Spilled_思维+背包 2000 题目大意 给n个水杯,每个杯子有不同的最大容量ai和现在的水量bi 。每次可以选择任意一个杯子,把该杯子里的水倒x单位到另外一个杯子里。但是这些杯子很奇怪,倒出x单位的水,倒到另外一个杯子里只有x/2单位(浮点数)。现问经过若干次操作
阅读全文
摘要:D. Sequence and Swaps_贪心排序思维 题目大意 给一个序列,问是否有可能通过一系列操作使得该序列有序。每次操作可以使得满足选择任意的i满足ai大于x,然后swap(ai,x)。问最小操作次数。 思路和代码 考虑如下样例: x=1 a={3,2,4,4,5,2} 因为最后要有序,所
阅读全文
摘要:C. Tokitsukaze and Strange Inequality 题目大意 给一个数列,找四个下标[a,b,c,d],满足a<b<c<d。找出满足以下条件的种数。 a_a<a_c && a_b>a_d 思路和代码 我一开始做了一个O(n3 logn)的方法,有点笨。 具体就是枚举ac和b再
阅读全文
摘要:F. Vlad and Unfinished Business 题目大意: 在一棵树上,给出起点终点,和若干个标记点。现在要从起点开始,经过所有标记点后回到终点。问最短路程。 思路和代码: 一开始看到题目没什么想法就搁置了,仔细想想发现能做。下面给出我的想法。 先找出起点到终点的路径,因为这是一棵树
阅读全文
摘要:C. Where is the Pizza? 题目大意: 给a,b两个数列,他们均是n的排列。ci=ai/bi(ci是ai bi中的一个)现在给出部分c数列,问c数列又多少种可能性。 思路和代码: 题目样例给的比较好啊 首先对在aibi之间建边,可以明确的是所得的图一定是若干个环。 一个环中只要有一
阅读全文
摘要:A. Prof. Slim 题目大意: 是否可能通过交换任意两个数的正负号,使得整个序列非降序。 思路和代码: 把所有负号放到前面即可。 string solve(){ int n ; cin >> n ; vct<int> a(n + 1 , 0) ; rep( i , 1 , n) cin >>
阅读全文
摘要:B. Dorms War 题目大意: 给一个字符串,和若干个特殊字符。每次操作可以删掉所有特殊字符前面的一个字符。问最多操作几次 思路和代码: 考虑这个例子:axxaxxxxxxaxxa,其中a是特殊字符。不难发现最后的答案就是最长的以特殊字符结尾的区间长度。 这题我一不小心又陷入了奇怪的地方,整理
阅读全文
摘要:C. Palindrome Basis_完全背包 题目大意: 给若干个数字,问每个数字可以被多少种回文数字的组合相加得到。 思路和代码: 一开始想到了dp:fi表示构成i的种类然后做一个区间dp,但是转移过程中会有很多的重复,我不会处理... 但是可以用完全背包处理每一个数字。因为每个回文数在构造某
阅读全文
摘要:Codeforces Round #787 (Div. 3) E rank(2448) E. Replace With the Previous, Minimize 题目大意: 给一个小写字母构成的字符串,每次操作可以使其中所有相同的字符减小1 。问k次操作内能得到的字典序最小是多少。 思路和代码:
阅读全文