
思维
Wuliwuliii
谁无暴风劲雨时,守得云开见日明!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Three Occurrences【CF-1418G】【线段树】
题目链接 题意:有一个长度为N的数组,现在我们要查询合法区间的数量,合法区间定义为“在区间中出现的数值都是刚好只出现3次的区间”。譬如“1 1 2 2 1 2”是一个合法区间,每个数值都恰好出现三次。 那么,我们可以知道一点,我们定义为值为i的数在此之前第j次出现的位置(倒叙的),我们只需要知道前面三个的位置,就可以确定我们想知道的东西了,因为合法区间就在之间,此时保证了价值为i的这个数取了刚好三次。 所以我们不妨做一个“滑动”一样的操作,现在我们知道,那么我们来做这样的一个东西:给定...原创 2020-09-16 10:17:44 · 613 阅读 · 0 评论 -
Boboniu Walks on Graph【CF-1395E】【哈希】
题目链接 有N个点的,M条有向边组成的图,每个点的出度都小于等于K,现在要求我们求这样的K元组意思是出度为i的点,选择边权第小的边走,最后要求满足所有的点一定是能走回该点。 那么,题意其实也就是每个点最后只有一条出边,并且因为要求形成环,所以每个点最多被进一次(不然就一定是无解的)。 所以,这道题就是去枚举,然后如何记录状态呢?最开始的时候我想了个bitset<maxN>的解法,但是发现其实这样会很多元素会被多次处理,所以这样的做法就浪费了,所以我们不如直接使用哈希,复杂度O(...原创 2020-09-01 16:46:50 · 236 阅读 · 0 评论 -
牛牛的粉丝【循环矩阵】
题目链接【牛客练习赛68】比赛的时候用了一个的做法来解决这个问题,显然是TLE的,显然的,我们没有发现矩阵中隐含的条件。当我们把这个矩阵列写下来的时候,会发现以第一行为初始的,后面一行相当于前一行右移一位,每一行都具有这样的信息,所以可以将第i行,第j列第值看作是,当然,这里的是要取模N的。 所以,我们不妨只用维护一行的信息,就可以完整的表述所有的信息了,时间复杂度就可以降了一个N。#include <iostream>#include <cstdio>#in.原创 2020-08-29 10:20:45 · 194 阅读 · 0 评论 -
Fight【枚举】
题目链接 有三个人,初始都是1000血,现在要让活着的两两相互打架,每个人都有固定伤害,每一回合都是相互受到对方的伤害。问最少几个回合结束游戏(只剩下一个人活着)。 然后,我们枚举两个人打架的回合数,也就是枚举每两个人要打几个回合,然后就可以O(1)贪心的去算出剩下要打的回合。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include &l..原创 2020-07-26 20:33:43 · 220 阅读 · 0 评论 -
In Search of Gold【二分答案+树DP】
题目链接 题意:给一棵N个点的树,每条边有Ai、Bi权值可以选,现在问的是选K条边作为A边,其余N-1-K条边为B边,求最短直径。 一开始的时候,想直接在树上做一个DP,但是写完之后发现不对劲,如果我们直接在树上写DP的话,由于他们的关系是相互制约的,所以确实不大好维护,因为这个dp要考虑从祖先节点的另外的方向的节点。 所以,我二分了一个答案,假定现在直径为,接下去维护点u为根的子树,当选择kk个A边的时候,此时的可行解中的最小链长是多少?只要使得1节点(也就是根节点)存在合法解就可以证明...原创 2020-07-26 11:07:18 · 590 阅读 · 0 评论 -
Points Construction Problem【构造】
2020牛客多校第三场D题 题意:有一个无穷大的平面,原本全是白点,现在给N个黑棋子,然后放入图中,使得黑白搭配对数有M对,问是否有解和方案输出。 首先,我们先把它构造成下限,来判断可行性,然后我们慢慢的把里面的点拆出来,就可以达到接近M的作用,构造下限的方法就是用构造一个近似正方形的方式。 然后我们算出还缺多少个,然后一个个的从里面拆出来。#include <iostream>#include <cstdio>#include <cmath>...原创 2020-07-20 22:15:13 · 340 阅读 · 0 评论 -
Happy Triangle【思维+权值线段树】
2020牛客多校H题题意:给Q次对一个multiset的操作:放进一个权值x; 删除存在于multiset内部的一个权值x; 问一个权值x能否和multiset内的权值构成一个三角形。 于是,这就是一道分类讨论的题了;我们将要取的multiset中的元素定义为a、b(),然后我们考虑x和b的相对位置来进行考虑。 这时候只需要去找x之前两个小于等于x且最接近x的数即可,然后两者之和大于x就是满足条件的了。 这时候,我们可以用一个数据结构来维护大于等于x部分的值,找到一个...原创 2020-07-14 16:56:16 · 249 阅读 · 0 评论 -
Greater and Greater【bitset优化+构造】
2020牛客多校第二场G题题意:给你一个串A,还有一个串B,然后在串A中找长度为|B|的子串S,使得S对应的每一位都大于等于B串的每一位,问这样的|S|串的个数有多少个? 这里有一些细节,主要是对于bitset的运用,我一开始一直wa在了40%,主要还是bitset的操作用的有点问题。 我的做法是:首先我们对于B串离散化一下,确定最多有几种不同的bitset的状态,然后我们可以查询对应的A串可是成为哪一种状态?也就是小于等于a[i]的值的最大状态即可。然后,我们就把每个第一位开始往后推下去,..原创 2020-07-14 10:48:56 · 269 阅读 · 2 评论 -
[USACO14DEC]Cow Jog G【最长反链性质】
题目链接 求的是跑了T分钟之后的情况,要求是每个跑道都没有被超越现象,问最少的跑道需求数量。 很明显的就是求一个反链的偏序问题,我们倒过来看,求最长不降序列,于是就可以用树状数组来进行查询了。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>#i..原创 2020-07-03 15:21:09 · 284 阅读 · 0 评论 -
Plants vs. Zombies【二分答案】
题目链接 题意:有N盆花,现在有一个浇花机器人,当它走到一个花盆面前的时候,可以给该花浇对应的a[i]的权值的防御值(植物大战僵尸嘛),然后呢,机器人一共可以走M步,问最后防御权值最小的花的最大权是多少,最小值最大问题。(机器人一开始处于位置0,花是1~N) 首先,二分答案是比较好想到的,就是check的时候,条件是真的多,譬如说,我们走到一个花,它还需要浇水,那么可以i、i+1、i、i+1、……这样来回的走,但是如果最后一个花,花N的时候,那么就有可能它不需要浇了,这里需要判断一下,再者,如果..原创 2020-06-17 09:20:33 · 868 阅读 · 0 评论 -
Swaps Again【CF 1365 F】【思维+贪心】
题目链接 题意:有长度为N的2个数组a、b,我们可以对a数组进行无数次操作,问a数组最后可不可以等于b数组?对a数组的操作是,我们可以选择前K个和后K个交换位置,要求是。 思路:因为是前K个和后K个的交换位置,我们想先从对称轴开始向两边做“是否满足a数组等于b数组”的这样的一个操作,也就是贪心的先满足中间的,然后用剩下的去满足边上的,但是这样的条件是否成立?我们首先假设的这个区间是已经排好了的。那么,我们现在要确定的是第i和第N - i + 1这两个的满足情况。 前K的挪动,会使得第i个是...原创 2020-06-11 10:31:23 · 311 阅读 · 0 评论 -
图的遍历【奇数环存在性】
题目链接 其实就是让我们找奇数环和联通块,如果存在一个奇数环的话,那么只需要把联通块连起来就可以了,如果不存在奇数环,除了把联通块连起来,还需要再多一条边来增添一个奇数环。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>#include <.原创 2020-05-22 14:04:32 · 962 阅读 · 0 评论 -
储物点的距离【前缀和】
题目链接 我采取了分别考虑的方式来解该问题,也就是将x和l、r的位置进行考虑了进去。 于是,我定义了如下几个数组,分别表示:pre[x]包括x的前面的所有的货物都运送到x所需的花费 suff[x]包括x的后面的所有的货都运送到x所需的花费 ans[x]所有点的货物都运送到x所需的花费 dis[x]表示x点到1号点的距离 psiz[x]包括x的前面的所有的货物的前缀和 ssiz[x]包括x的后面的所有的货物的后缀和x < l时候 这时候,答案其实可以考虑称用l的...原创 2020-05-14 21:00:04 · 458 阅读 · 0 评论 -
多彩的树【点分治+抽屉定理】
链接:https://ac.nowcoder.com/acm/contest/5556/A来源:牛客网有一棵树包含 N 个节点,节点编号从 1 到 N。节点总共有 K 种颜色,颜色编号从 1 到 K。第 i 个节点的颜色为 Ai。Fi 表示恰好包含 i 种颜色的路径数量。请计算: 其中, 很明显的一个二进制维护,因为K真的很小,我们可以利用二进制来做。 但是,我们不能的去枚...原创 2020-05-05 22:33:12 · 282 阅读 · 0 评论 -
4 Values whose Sum is 0【卡常题】
题意:有N*4个数,有N行,每行四个数,我们要求一个四元组,每一列选一个数,使得最后的和为0,求这样的方案数。 这道题的解法的时间复杂度一定是的,但是却卡了常数。 这道题,首先拒绝了使用unordered_map这样的哈希去log的做法,POJ吧,就是这么神奇。 然后我就想到了枚举,再加上log的查询的方式,那么就想到了map来维护,很好,TLE,被卡了常。 那么,想办...原创 2020-05-04 11:22:26 · 546 阅读 · 0 评论 -
Paths on the Tree【ZOJ - 3863】【点分治+推理过程】
题目链接 大致题意:有一棵N个点的树,现在取两条边,使得两条边共同都有的点的数量小于等于K,问这样的取法的种类数。第一条边:{1, 2, 3},第二条边:{2, 3, 4}第一条边:{2, 3, 4},第二条边:{1, 2, 3}算两种方案数,同时一个点也被算作是一条边但是{1, 2, 3}和{3, 2, 1}是一样的边(边没有方向性,无向) 解这道题,让我们先去想想看高复杂度...原创 2020-04-25 22:10:08 · 469 阅读 · 0 评论 -
边的染色【思维+dfs】
题目链接 N个点,M条边的无向图,有的边已经被“0、1”染色了,有的边还没有被染色(“-1”),现在要使得每个环的所有的边的权值的异或和为0,问这样的方案数为多少? 对于一个环,一个n个点、n条边的环,我们可以去任意处理前n-1条边,可以唯一确定第n条边的权值,所以对于n个点、n条边的环的答案就是。这个是为什么呢? 我们考虑环上的点,假设一个环有n个点,假设点权为它的相邻边的异或...原创 2020-04-24 09:46:54 · 295 阅读 · 0 评论 -
1830 路径交【LCA+线段树】
题目链接 51 nod 1830 路径交 首先,理解一下题意,题目是给出一棵N个点的树,然后给出M条边,接着Q次询问,每次询问M条边中的第L条边到第R条边中有多长的边是与每条边都有交集的,记住是第L条到第R条的每一条都要交,而不是只要两两有交集就可以了。 理清楚题意之后,我们先来看一下两条边相交得到的边是哪条边? 譬如说我们有两条边。我们想知道和的交边长度,如图可以很清楚...原创 2020-04-16 09:47:26 · 295 阅读 · 0 评论 -
Facer帮父亲
题目链接 如果只有一个人买票的话,那么收益为; 如果两个人买票的话,那么总收益为; 以此类推,如果有x个人买票的话,总收益为; 那么,第x个人买票的额外收益额为 这道题的K比较的小,只有1e5,所以我们可以用堆维护这个的最大值,表示第x人去买票,当然,如果收益额小于等于0了,就没必要卖票了。#include <iostream>#include &...原创 2020-04-15 10:23:13 · 167 阅读 · 0 评论 -
丑数【思维题】
Description 丑数就是这个数的质因子只有2,3,5,7这四个,除此之外不再含有其它 别的质因子。 注意1也被认为是丑数.丑数的前20个为 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... ;Input 每行输入一个N,1 <= N <= 5842,N为0时输...原创 2020-03-29 20:32:10 · 528 阅读 · 0 评论 -
【NOI2017】蔬菜【哈希表+并查集+贪心】
题目链接 LOJ 2306 这道题,说难不难——是假的,总之不简单,做了真的好久了。(大雾 首先,分析这道题的输出时间,也就是说明了它是没有线性关系的这么一件事。这点倒是显而易见的,虽然说随着天数的增长,收益也是单调不减的,但是增长曲线绝非线性。 所以,这里先去考虑如何处理给出来的几个值的问题了。 首先是和,首次销售有额外的收益,于是不妨看成只有一个物品,并且这个物品的收益...原创 2020-02-29 21:12:00 · 311 阅读 · 0 评论 -
[SDOI2015]寻宝游戏【树的性质+dfs序相关性质】
题目链接 这道题教会了我一个道理,如果不开long long就容易获得0分,而且还是在其他都写对的情况下,只有函数没开long long。。。 然后,这道题有个很有趣的性质,我大致想了三个多小时…… 树上的所有边的边权之和乘以两倍,实际上就是我们将dfs序排列之后的结点每个点和下一个点的距离和,最后和还要再算一遍,这个原理是什么? 很容易想到树上的非叶子结点和下一个点的关...原创 2020-02-16 22:14:22 · 202 阅读 · 0 评论 -
建通道【思维异或lowbit最小生成树XOR_MST】【2020牛客寒假算法基础集训营2】
也就是说,我们贪心的来想,肯定是先要让相同值的元素先建边,然后再是选择lowbit(x) == 1的,然后再是2的,再是4的以此类推,那么贪心的思维就出来了。然后咋一看,是的做法啊!怎么优化?我们肯定是要0和1进行合并的,每一位的0、1进行合并,是为了贪心的考虑,所以说,我们从并查集的角度来看,不妨先是0中的第一个元素去合并完1中的所有元素,然后保留一个1中的元素,继续,把0后面的所有...原创 2020-02-06 19:42:07 · 321 阅读 · 0 评论 -
纸飞机【最小链覆盖等于最长反链】
牛客挑战赛36 C 题目链接 题目想知道的是最长严格下降子序列的最少个数用以覆盖完N个数。也就是最小链覆盖问题了。 那么,我们反过来想,最长反链,我们求得最长不递减序列的个数,如题,“2 4 3 1 5”中“2 4 5”就是最长的不递减系列了,那么,从2、4、5中各个点起飞是不是就可以覆盖完整个链了,所以这就是最长反链了。 然后,现在就是想知道,我们删除一个元素会不会使得最长反链...原创 2020-01-18 11:13:36 · 1983 阅读 · 5 评论 -
Assignment 【HDU - 2853】【KM算法+思维】
题目链接 这个思维,当真是有点想不到,一开始净是往link_x[]这个角度去想了,但是这样的话,又会影响KM形成的交错树,显然不是这么解的。 题意:有N个公司,还有M个任务,任务数大于等于公司数,然后每家公司做每个任务都有对应的贡献,于是乎,初始在加上每个公司有原本应该做的任务,就有一个初始贡献,现在我们想要最少的改变公司和对应的做的任务,想知道最大可以改变的值是多少? 思路:首...原创 2020-01-01 20:53:29 · 205 阅读 · 0 评论 -
Spaceship Solitaire【Codeforces 1266 E】【思维】
Codeforces Global Round 6 E 题意:主人公想要造宇宙飞船,所以需要N种物资,每种物资的需求量是a[i]个。然后呢,如果我们没有任何加速器的话,总的时间需求是,但是现在我们有“里程碑”加速器! 里程碑加速器是这样的「S,T,U」我们如果有T个S物资的话,我们可以免费获得一个U物资。 思路:那么,不难发现,如果U这个物资的数量不足a[U],那么就是可以减少一...原创 2019-12-18 16:05:02 · 489 阅读 · 0 评论 -
Decreasing Debts【Codeforces 1266 D】【流入、流出量 + 思维】
Codeforces Global Round 6 D 一道思维题,也不知道为什么总是想建图,可能是想到最终的状态一定是多个菊花图的形式了吧。 我们可以知道最终的状态是可以变成:或者是指针朝内的形式。 但是,事实上,并没有那么的复杂。 我们可以看到每个点的流出和流入的量,我们把每个点设置一个流的值,是由流入的值减去流出的值。 然后呢,我们可以肯定的是,所有负的权...原创 2019-12-18 15:43:28 · 516 阅读 · 0 评论 -
Guess the Path【交互题】
2019-2020 Russia Team Open, High School Programming Contest (VKOSHP 19) D题 题意:给你一个N*M的图,起点是(1,1),终点是(N,M),然后每次我们可以选择往下走或者是往右走,每次你自己输入一种走法之后,测评机会告诉你,你有Q个点是走的正确的,并且告诉你这Q个点,然后要求的是你10次以内找到正确的答案,并且输出。...原创 2019-12-11 09:29:25 · 607 阅读 · 0 评论 -
Graph and Cycles【SEER 2019】【思维】
2019-2020 ICPC Southeastern European Regional Programming Contest (SEERC 2019) J 不知道说什么,只能说想了大概有三个小时吧,昨晚前两个签到题,然后开了这个第三题,一直想不到,想了个将点看成边,边看成点的做法,然后去跑最小生成树,但是最后值会偏小,因为还有几条边没有放进来,而且还是会RE以及会TLE的,所以,还是不...原创 2019-12-09 22:49:34 · 669 阅读 · 0 评论