摘要:
【题解】 活捉大水题。 这道题并不涉及什么决策。最左边的那一堆纸牌如果与平均数不相等,就必须是第二堆纸牌进行调整,然后第二堆纸牌就变成了第一堆。从左到右进行一遍即可。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #de 阅读全文
摘要:
【题解】 本题要求求出区间内的各个元素通过加减之后能够得出的最小的数,那么根据裴蜀定理可知答案就是区间内各个元素的最大公约数。 那么本题题意化简成了维护一个序列,支持区间加上某个数以及查询区间元素的最大公约数。 我们要证明这样一个定理: 对于一个序列(a,b,c,d,...),gcd(a,b,c,d 阅读全文
摘要:
【题解】 很容易想到暴力做法:对于每个询问暴力查找区间内的最小字母,统计其出现次数。效率O(N^2),无法通过全部数据。 我们可以换一个思路,设f[i][j]为第i个字母(字母‘A'到’Z'分别对应0到25)到第j个位置的出现次数和。 对于每个询问[L,R],我们只要从0到25枚举每个字母,如果满足 阅读全文
摘要:
【题解】 二分答案。check的时候如果ai>A*mid,就把sum加上[(ai-A*mid)/B]上取整,最后判断sum是不是小于二分出来的最小时间mid即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #defi 阅读全文
摘要:
【题解】 我们设原来的数组为a1,a2,a3..., 那么一次操作之后的数组变为a1+a2,a2+a3,a3+a4..., 两次操作之后数组变为a1+2a2+a3,a2+2a3+a4,a3+2a4+a5..., 三次操作之后数组变为a1+3a2+3a3+a4,a2+3a3+3a4+a5..., 有没 阅读全文
摘要:
【题解】 很容易想到DP方程:f[i]+=f[i-a[i]] 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 2 阅读全文
摘要:
【题意概述】 给出三行字符串,前两行代表密码与明文的对应关系,第三行为待翻译的文本。要求按照对应关系翻译文本。 【题解】 直接模拟即可。 注意判断Failed的情况。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #de 阅读全文
摘要:
【题意概述】 给出一个图,点有正点权,边有正边权,通过两点的代价为两点间的最短路加上路径通过的点的点权最大值。 有M个询问,每次询问通过两点的代价。 【题解】 先把点按照点权从小到大排序,然后按照这个顺序跑floyed. 这样的话当前路径i-->k-->j的点权最大值只会在i,j,k中产生,用一个a 阅读全文
摘要:
【题解】 这道题除去根操作就是普通的树链剖分了。但是有换根操作怎么处理呢? 我们可以发现如果现在的根不在查询的点的子树里,那么对本次查询没有影响。如果现在的跟在查询的点x的子树里,那么答案将变为整棵树除去现在的根root所属的x的孩子的子树。 为了快速确定root属于x的哪一个孩子,我们可以写个倍增 阅读全文
摘要:
【题解】 分别做一遍最长上升序列和最长下降序列,再枚举峰的位置计算答案即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #de 阅读全文
摘要:
【题解】 排个序然后扫一遍进行统计即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 us 阅读全文
摘要:
【题解】 我们要做的就是把这些数排序。排序的时候判断两个数是否交换的方法,就是把这两个数相接形成两个长度相同的数字,比较这两个数字的大小。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define N 200010 阅读全文
摘要:
【题解】 维护个队列即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 using nam 阅读全文
摘要:
【题解】 简单粗暴的模拟题。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 using na 阅读全文
摘要:
【题解】 答案就是总的边权和减去最小生成树上的边权和。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 2000 阅读全文
摘要:
【题解】 裸的最短路。直接跑dijkstra即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 阅读全文
摘要:
【题解】 最小生成树。区别仅仅是不需要连城一棵树,而是连成k棵树,也就是选择最小生成树里面最小的k条边。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg 阅读全文
摘要:
【题解】 二分答案+贪心check. 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 usin 阅读全文
摘要:
【题解】 洛谷标签上说是二分,其实是个小学数学题??可以直接算的。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define 阅读全文
摘要:
【题解】 纯模拟题。 我们都知道十进制数化成m进制数可以用短除法,即除m取余、逆序排列。而m进制数化为十进制数,按权展开求和即可。 但在本题中进制的基数R可能为负数,我们知道a%R的符号与R一致,也就是说在本题中我们用短除法得到的某一位上的值可能为负数,要注意向上一位借1化成正的。 1 #inclu 阅读全文