随笔分类 - 日拱一卒,功不唐捐
摘要:题目虽然假了,但是正解真的非常的好... 题目链接 首先由于当前选取方案会受后一个字符串的选取方案影响,于是我们考虑倒着选取。 那么我们如何知道当前选取多少是最优的呢?答案就是在已经获得优解的字符串基础上,试探性地加上当前枚举的字符 就拿题目中的 3 bbb aaa ccc 举例 由于我们是倒着枚举
阅读全文
摘要:A - Round decimals 这道题就是让你对输入的数进行四舍五入,但是我一开始用%.0f输出,结果给我WA了。 然后队友告诉我,%.0f并不是四舍五入,而是四舍六入五成双。 也就是说88.5因为是偶数,所以就会变成88;89.5的话就会变成90。 所以输出round(input)就好了 B
阅读全文
摘要:题目链接 题意非常简单,就是在最短路的基础的上加上了可以施魔法(经过这条边的时候,将权值取反,注意只是经过的时候取反,并不是永久的)的操作。 看到n的范围只有100,很快的就能想到floyd或者分层图 首先我们分析,每次使用魔法必然能让最短路变短,那么我们一定会将k次魔法用满,那么题意就转化为,恰好
阅读全文
摘要:题意是给你一个长度为N的数组,你在每个长度大于等于K的连续区间里,取出第K大的数,组成一个新数组。问新数组中第M大的数是什么。 这道题最最重要的就是,尺取法可以求出第k大的数大于等于x的区间数。 为什么可以呢?假设我们尺取法已经取到了K个大于等于x的数的区间,当我们右指针往后移动的时候,新加入的数对
阅读全文
摘要:一般来说棋盘问题都会与二分图或者生成树有关。 一开始我也是往二分图上去想的, 首先考虑行最大值和列最大值的最大值,记为 x,找到最大值需要等于 x 的行和列,设有 n 行和 m 列的最大值需要等于 x。原本是需要在每一行、每一列共 n + m 个位置放置 x,发现如果在他们交叉位置放置 x的话,可以
阅读全文
摘要:题意就是给你一个长度为n的数组,之后有两种操作,第一种是[L, R]都异或上x,第二种是[L, R]异或上x, x+1, x+2, x+3... 对于第一个操作我们非常容易就能操作,即异或差分数组。 但是对于第二个操作我们就比较头疼了,我们要怎么把 + 符号去掉变成 ^ 呢。 (因为异或是不满足分配
阅读全文
摘要:这场貌似是因为贪玩就没打了。 vp了一下发现正好是我薄弱的部分,没打有点可惜。 A (+1) WA2: #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; co
阅读全文
摘要:首先考虑最暴力的做法。那复杂度是q * range的显然会爆。 原本我是想用什么数据结构优化这个过程,但是想了想好像没什么东西处理划分这个操作。 于是考虑观察这个操作的性质,我们发现对于每个范围,一旦L确定那么,在[L, R] 之间的划分数其实是固定的。(但是划分方案可能会有很多种) 这里可以稍稍证
阅读全文
摘要:这题只能说不看题解真写不出来(可能是因为我没有脑子吧... 可以证明一下题解: 1.如果所有数异或起来不为0,则输出NO 首先我们发现三个数里面之后有一个1的时候,会变成三个1。如果有两个1的话,会变成0个1。我们发现其奇偶性是不会改变的。 2. 对于奇数情况,我们先选择 1, 3, 5, ...,
阅读全文
摘要:一开始我还想着用什么数据结构去维护的,想了好久没想出来。 其实看范围就应该想到n根号n能过的。 题意就是说每个点都有自己的颜色,给你q个操作,每次操作将这个点的颜色扩散给相邻点。问你q个操作之后每个点的颜色是什么。 首先我们暴力做复杂度是O(q*m)的这样肯定是不行的,于是我们想到优化。难道我们真的
阅读全文
摘要:题意就是给你一个4*4的网格,之后网格上有一些格子被染色了。问你有多少种选择方案,使得选的所有格子包括所有被染色的格子,之后你选的格子要是一个连通块。 attention: 不能是空心的连通块(出现回这种形状) 首先我们看之后16个格子,自然就想到2^16次暴力枚举。之后check可不可行就行了。
阅读全文
摘要:对抗搜索也叫极大极小值搜索,其核心思想就是先搜到底部,将叶子节点的值返回上去,之后极大节点选择所有分支里的极大值返回,极小节点选择所有分支里的极小值返回。 对顶堆维护中位数。emmm其实对顶堆维护中位数是一个板子,不过注意这里会有奇偶中位数。 注意一下就行了 #include <bits/stdc+
阅读全文
摘要:给你n物品,每个物品有a和b两个属性。你现在要挑选出一个集合S。 使得max ai >= sum(bi) {i ∈ S} (中文意思就是选一个集合,集合中所有物品属性a的最大值 大于等于 集合中所有物品b属性的和) 问你有多少种挑选方案。S不为空 模上998244353 首先对于模型 求挑选方案数,
阅读全文
摘要:题目要求每一个长度为偶数的正方形里,1的个数都是奇数。 于是我们发现,一旦n >= 4同时 m >= 4那么一定是-1,奇+奇+奇+奇=偶 之后就剩下了三种可能性,n=1,n=2,n=3 于是考虑状压dp。 #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:差点AKdiv3www 首先这道题肯定不能暴力了啦。之后我们发现这道题其实跟数位dp非常的相像。那么数位dp的时候,一旦某一位变大了,那么后面的数字其实是随便选的,因为不管怎么选,这个数字肯定是大于之前的数的。 比如122245与123***肯定不管怎么取*的数字肯定是比122245大的。 之后这道
阅读全文
摘要:这场区分度比较低完全就是手速场嘛...趁机上了波分。 感觉这场最有思维量的就是这道D2了(D1直接n2并查集水过去了) 从D1我们就有一种感觉,题目给我们的其实是两个森林,我们每次肯定是将森林中的两棵树连接在一起。 那么我们不妨设置1号节点所在的树为主树,让森林中其他树都尽可能连接到主树上去。 所以
阅读全文
摘要:A.好哥哥 题目的意思就是:从第一层开始往后起跳,每次可以跳到该层层数减一或者加一的层数,询问跳m次后最多可以经过多少对不重复的括号。 首先我们发现这个其实是一个树形结构。 那么我们很容易就能得到一个想法,如果钱不够的话,那一定是跳到树的最长链上。 但是如果钱够呢?那么我们就需要考虑来回走的情况,我
阅读全文
摘要:给定n个数字,m个操作 操作1是往数组最后添加一个数字x 操作2是给出[L, R],与数字x,输出在[L, R]中选一个数字p使得,a[p]^a[p+1]^...^a[n]^x的值最大 首先,考虑题目要求的是【1,R】的话,那么其实这道题无非就是可持久化trie + 前缀和异或而已。 但是问题就是有
阅读全文
摘要:首先我们看到题目其实挺懵的。 对于(a1 + a2) ^ (a1 + a3) ^ ... ^ (an-1 + an),感觉除了暴力一点办法都没有。 其实我们可以看到。所有的括号外面其实都是异或符号。那么我们最后求的是一个异或的值。 那么[0 - 1e7]异或的值必然不会超过2e7。于是我们可以考虑按
阅读全文