03 2020 档案
摘要:"题目链接" 题目大意:给你货币种类、交换点数量、最开始的货币种类和拥有的数量,问你有没有一种货币交换手段可以使货币越换越多。 最短路求负环的变形,最长路求正环。
阅读全文
摘要:"题目链接" 题目大意:给你一个邻接矩阵和每个点的权值,问你任意两点的最短路的花费以及路径。 这个题途中经过某个点收费很好处理,只要在松弛的时候加上中间点的权值即可,但是打印路径就有些麻烦了。因为是多源最短路问题,所以我们不能像单源最短路那样用一维的数组来存前驱/后驱来打印路径了。 我们可以用一个二
阅读全文
摘要:[题目链接](https://vjudge.net/contest/364766 problem/C) 题目大意:每两个点之间只有一条边表示两点关系,关系具有传递性,问有多少点对之间没有关系。 这题利用了传递闭包来解。我们根据题目输入可以得到一条a b的边,表示a赢b,那么反过来我们也可
阅读全文
摘要:"题目链接" 题目大意:给你一个加权图,里面有m个无向正权边和w个单向负边,判断有没有负环。 floyd可以求两点之间的最短路,如果两个点一样,即是一个环,判断图中环的大小是不是负即可。
阅读全文
摘要:"题目链接" 在普通的floyd的第一重循环内加上的一段代码,求3点形成的最小环,这题有个坑点是因为会加三个变量, INF小心开太大爆int。
阅读全文
摘要:"题目链接" 根据题意照做就行了,不过需要注意的一点是,当栈为空时(不论是初始状态还是经过pre),当前列表的歌曲是歌曲1,所以在摁next的时候会播放第二首歌曲。
阅读全文
摘要:"题目链接" 题目大意:让你找出一列数,他们中相邻的两个数的下标之差等于数值之差。求这列数的最大值 思路很简单,因为所得数列满足相邻的两个数的下标之差等于数值之差。所以只要让每个输入的数减去对应的下标所得到的下标指向的数加上这个数即可,如果两个数的下标之差等于数值之差,那么它们各自的数减去下标所得到
阅读全文
摘要:"题目链接" 题目大意:让你从m个数里面挑出来若干个数构成一个n个数的序列,且这个序列有且仅有一对相等的数。并且,这个序列在一个数字之前严格单调递增,在同一个数字之后严格单调递减。问你最多能组成多少个这样的序列。 首先,题目已经告诉我们了,我们要求的序列是一个单峰序列,所以如果n=2的话
阅读全文
摘要:"题目链接" 题目大意:给你俩数u和v,问你是否能找出来最短的一列数,使它们的和为v,异或值为u。 这题主要是考察对位运算的理解。 1.首先,位运算是不存在进位的,所以位运算的结果只会比原来的和小,也就是说u绝对不会大于v。 2.如果异或后的结果是奇数的话,那么这列数里面奇数
阅读全文
摘要:"题目链接" 题目大意:让你找出所有ai+aj bi+bj(i j) 其实这题不用在意i j只要把i\neq j并且符合条件的一对数记做一个答案就行了。。。(显然通过i和j交换必有i j)。然后我们把ai+aj bi+bj变形可得(ai bi)+(aj aj) 0所以我们
阅读全文
摘要:"题目链接" 题目大意:给你一个数字n,问你在000...000到999...999(10^{n 1}位)里面长度为1,2...n里的块有多少(相等的连续子段算一块)。 我们可以尝试构造出长度为i的块,对于一个长度为i的块来说: 1.若它在数字的边缘,那么它右边(或左边)的第一个
阅读全文
摘要:"题目链接" 题目大意:给你一串数让你求他们冒泡排序的总交换次数。 假设我们要让一串数从小到大排序,那么对于其中的一个数ai,它前面有多少个大于它的数,那么它需要交换的次数就是多少,换句话说,就是求逆序数。归并排序求逆序数就是在归并排序的基础上加入一行代码来统计排序过程中一个数从原来的位置到现在
阅读全文
摘要:题目链接 没什么好说的,就照着题意做就行了,不过要最后输出的编号是电影在c或者d数组里的下标而不是值。之前用unordered_map跑了1500ms,这个跑了350ms,常数真是个可怕的东西 const int maxn = 2e5+10; int a[maxn], b[maxn], c[maxn
阅读全文
摘要:"题目链接" 题目大意:给你一棵树让你给每个结点编一个号,使得每一条从一个结点到另一个结点的路径中没有出现过的最小的数字最小。 1.如果一棵树是一条链的话,那么无论怎么编号,结果都是一样的。 2.如果一棵树不是一条链,那么必定存在一个结点的度数大于3,那么通过这个结点的路径只能走所有与他相连的若
阅读全文
摘要:"题目链接" "官方题解" 这次只是对官方题解做一下简化... 我们首先先看一下dalao画的图: 其实如果能画出来这张图那么思路已经很清晰了... 1.因为每一个'('都要有一个')'来匹配,所以说无论是对于一个正确的区间,还是对于一个错误的、但是可以重新排序的区间,它的左右端点都应该是0,如果不
阅读全文
摘要:"题目链接" 题目要求我们求出满足条件的最大值,因为f的长度不是固定的,所以如果直接求解的话,非常麻烦。但是,如果我们用二分判定答案的话,问题就变得简单了。但是二分必须要区间具有单调性,我们怎么让区间具有单调性呢?对于一个平均值,如果它偏大的话,那么这个区间里面任意长度的序列的平均值都取不到这个
阅读全文
摘要:"题目链接" 既然当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方。那么我们可以假设这两头可以互相看到的牛身高相等,而他们中间的牛最少要比他们两个的身高少1,所以我们每次让他们之间的所有数减1就行了,但是如果是直接修改的话,显然复杂度会到n^2级别,但是因为询问只有一次,所以说不需
阅读全文
摘要:"题目链接" 首先我们要知道差分数组的第一个元素等于原数组的第一个数,而其他的数等于他和他前一个数的差,那么如果一个数列中的所有数都相等,那么他的差分数列除了第一个数外,别的数肯定都是0。那么我们现在有一个差分数组B,我们要让区间[l, r]中所有数加1或者减1可能有一下情况: 1.
阅读全文
摘要:"题目链接" 二维前缀和模板题,首先我们得先了解一下二维前缀和怎么求。 1.首先我们先对第一行与第一列做一下处理,显然,对于第一行g[0][i] = g[0][i] + g[0][i 1],对于第一列g[i][0] = g[i][0] + g[i 1][0]。 2.然后我们考虑位于其他位置的
阅读全文
摘要:"题目链接" 分析 首先,由唯一分解定理的推论可以得到下面的式子: F(A) = (q_1^0+q_1^1+...+q_1^{k_1})\times (q_2^0+q_2^1+...+q_2^{k_2})...\times (q_n^0 + q_n^1 + ... + q_n^{k_n}) 然后
阅读全文
摘要:"题目链接" 大致看了一下,网上的题解大多数是用的逆元做的,今天受lyd蓝书的启发,发现用分治也可以做这个。 首先,我们设F(n) = 3^0 + 3^1 + 3^2 + ... + 3^n。 1.如果n为奇数: $F(n) = (3^0 + 3^1 + 3^2 ... + 3^{\frac{n
阅读全文
摘要:"原题" 汉诺塔的变形,首先我们要知道如果要三根柱子的话,我们怎么来递推得到答案。如果是三根柱子的话,我们首先要把n 1个塔盘移动到第二根柱子上,然后再把最底下的塔盘放到第三根柱子上, 然后再把n 1个塔盘移动到第三根柱子上,所以递推式就是F(n) = F(n 1) x 2 + 1 那么,如果再加一
阅读全文
摘要:"题目链接点我" 题目大意:给你一个nxm行的01矩阵,你每次可以点一个位置然后反转这个位置上下左右以及自己的状态,问你是否可以把它全置为0,如果可以,把字典序最小的情况输出出来。 这题和我上一篇博文类似 "传送门←_←" 不同的是,题目要把变换次数最小的情况下字典序最小的结果输出出来。其实字典序不
阅读全文
摘要:"题目链接_(:з」∠)_" 题目大意:每次点击一个地方周围4个点和自己的布尔值都会变成相反的数,问你没有办法在6步之内把一个5X5的方格全部变成1 这是lyd蓝书的一个递推的题目,那么自然与递推有关系啦!首先我们要明白两点: 1:每个地方只有点击奇数次有效,因为点偶数次相当于没点,当然最小的奇数次
阅读全文
摘要:"题目链接点我OvO" 全排列的模板....之前也学过一种全排列但是那个并不能按字典序从小到大输出
阅读全文
摘要:"题目点我OvO" 题目大意 让你从[0, m]里面选一个数,问他经过n次位运算之后的数最大是多少。 思路 这里我们要清楚位运算的一个性质,与、或、异或这些位运算都是没有进位的,也就是说对于一个二进制数,它经过若干次位运算之后第k位是0还是1只和这个二进制数的第k位有关。知道这条性质之后我们只要枚举
阅读全文
摘要:"题目链接" 今天学习lyd的蓝书学到一种新的解法,以前只会用龟速乘做,没想到还可以利用整型溢出来做,真是太妙了! 1.首先是龟速乘的做法,和快速幂思想差不多,就不多说了 2.然后就是另一种解法了,首先,我们假设a\times b\pmod p不会溢出,那么这个公式等价于$a\times b \
阅读全文
摘要:题目链接:https://vjudge.net/contest/358908#problem/H 题目大意:给你一个序列,问你这个序列经过冒泡排序形成的非递减序列所需要的次数 很经典的线段树求逆序数的题,对于序列中的一个数字来说,把他移动到在非递减序列中的位置的交换次数就是他前面比他大的数字的数目,
阅读全文
摘要:题目链接:https://vjudge.net/problem/POJ-2777 题目大意:给你一个长度为l的木板,有两个操作,一个是将一个区间染色,一个是询问区间有多少种颜色 很显然的线段树裸题,但是统计区间的颜色种类确实是一个难点,因为颜色很少,最多也就30种,所以我们可以用二进制位来存储这种颜
阅读全文
摘要:题目链接:https://vjudge.net/problem/AtCoder-4276 题目大意:给你一个数,让你找比他小而且只有3,5,7三个数字组成且每种数字都大于1的数的数量 本题的数据范围不大,最多只有1e9,所以真男人就要大力搜(, 枚举每一位的所有情况就行了,最慢也就O(3^10) #
阅读全文
摘要:题目链接:https://vjudge.net/problem/HRBUST-2239 题目大意:和最基础的搜索差不多,只不过在lw移动的同时,pz会向相反方向移动(如果pz可以移动的话) 很有意思的搜索题,需要注意的是标记访问过的状态的时候要同时标记两个人的位置,因为lw移动的时候pz也可能会移动
阅读全文
摘要:题目链接:https://vjudge.net/problem/CodeForces-617E 题目大意:问题就是给你一个序列,问你询问的区间之内异或和为k的连续区间的数量 如果给的n不大的话,我们可以先考虑前缀和,设a[ ]为区间异或和,如果a[l, r]的异或和等于k,那么a[r]^a[l-1]
阅读全文
摘要:题目链接:https://vjudge.net/contest/361581#problem/A 题目大意:问你一个区间内选两个数,有多大的概率选到两个同样的数 算概率的方法很简单,设区间内相同的数的数量分别为n1, n2....,那么概率就是(C(n1,2) + C(n2,2) + .....)
阅读全文
摘要:题目链接:https://vjudge.net/problem/HDU-2058 题目大意:给你1~n的所有数,问你所有的和为m的连续序列 因为n,m比较大,所以尺取肯定是不行的,因为是自然数组成的序列,所以可以用等差数列求和公式,因为d为1,所以公式可以写成(2*a1 + k-1)*k/2 = m
阅读全文
摘要:题目链接:https://vjudge.net/problem/HDU-2112 题目大意:就是找一条从起点到终点的最短路 最短路裸题,要注意的一点是起点可能和终点在同一个地方一段时间没写最短路忘得差不多了,顺便也有熟悉了一下链式前向星 #include<set> #include<map> #in
阅读全文
摘要:题目链接:https://vjudge.net/problem/CodeForces-1237B 题目大意:给你两个长度为n的数列,看看第二个数列有多少数在原数列数字的前面 从原数列的角度出发,第二个数列中和原数列相等的数前面多出来的数就是移动后的数 #include<set> #include<m
阅读全文
摘要:题目链接:https://vjudge.net/problem/CodeForces-1251B 题目大意:给你若干个01串,你可以交换任意一对字符,可以在同一个串,也可以在不同串 因为题目的限制很自由,所有我们只要判断奇偶就行了.注释应该写的很详细了 #include<set> #include<
阅读全文
摘要:题目链接:https://vjudge.net/problem/CodeForces-1221B 可以行列间隔开选一个蓝色棋子,然后让他四个角可以放红色棋子的地方放上红色棋子,最后剩下的地方全都填上蓝色棋子 #include<set> #include<map> #include<list> #in
阅读全文
摘要:题目链接:https://vjudge.net/problem/%E8%AE%A1%E8%92%9C%E5%AE%A2-A1011 题目大意:w和x节目的拍摄场地是固定的,问你怎么分配x和y节目的时间从而使得他们在两个场地拍摄时间的最大值最小。 如果y和z同时处理情况会变得很复杂,所以我们可以暴力枚
阅读全文
摘要:题目链接:https://vjudge.net/problem/CodeForces-1205A 题目大意:给你一个n,问你能不能用1~2*n这2*n个数组成一个环,在环上每个相邻的n个数的和相差不大于1 (数学不好只能找规律了QAQ)首先两个相邻的n个数和肯定不会相等的,因为两个相邻的n个数中只有
阅读全文
摘要:题目链接:https://vjudge.net/problem/POJ-1077 题目大意:八数码,问你能不能把当前状态转换成12345678x,可以就输出转换步骤,不行就输出unsolvable。 经典的八数码题,只是在普通的bfs基础上用上了康托展开,用map,string的可能会t #incl
阅读全文
摘要:题目链接:https://vjudge.net/problem/CodeForces-1059B 题目大意:你有一个可以盖出一个3*3 ‘#’中心为‘.’的章,问你能不能盖出图中的形状 其实简单模拟一下就行了.....如果盖下一个章,那么这个章的中心8个方向一定是'#',那我们反过来做一个'.'图,
阅读全文
摘要:题目链接:https://vjudge.net/problem/CodeForces-375A 题目大意:给你一串数,必定包含1,6,8,9,让你输出一个能被7整除的数 因为必定包含1689四个数,我们可以发现1689组成的全排列刚好对7取模得到0~6,所以我们就根据前面(瞎搞)出来的数的余数选择出
阅读全文