09 2020 档案
摘要:1、 修改程序清单19-1中的GenerisStack类,使用数组而不是ArrayList来实现它。需要在给栈添加新元素之前检查数组的大小。如果数组满了,则创建一个新数组,该数组容量是原先数组容量的两倍,然后将当前数组的元素复制到新数组当中。 package zlc; public class St
阅读全文
摘要:题意: 给出n盏灯的开始时间和结束时间,询问同时有K盏灯亮的方案数。 题解: #include<bits/stdc++.h> using namespace std; const int maxn=3e5+100; const int mod=998244353; typedef long long
阅读全文
摘要:题意: 给出一个带问号和a b c的序列,询问在不同的子串中出现子序列abc个数的总和。 题解: 简单DP,在问号的地方要实时记录当前序列种类的数量。 #include<bits/stdc++.h> using namespace std; const int maxn=2e5+100; const
阅读全文
摘要:题意: 给出一个数组,询问最小的数x,使得数组里每个数异或这个x后,整个数组的逆序对数量最少。 题解: /* *题意: *给出一个数组,询问一个最小的值x,使得这个数组的所有元素异或x后逆序对最少 *考虑贪心做法,从低位到高位构造x *每次比较x的第i位是1和x的第i位是0所形成的数组的逆序对数量,
阅读全文
摘要:题意: 这是问题的硬性版本。两个版本之间的区别在于,简单版本没有交换操作。只有解决了所有版本的问题,您才可以进行破解。 皮卡丘是生活在野生皮卡丘群中的可爱友好的神奇宝贝。 但是最近众所周知,臭名昭著的R队想偷走所有这些神奇宝贝!神奇宝贝训练师安德鲁决定帮助皮卡丘组建一支反抗神奇宝贝的军队。 首先,安
阅读全文
摘要:题意: 给出一个正整数n,要求将它的所有不同的因子排成环,使得相邻互质的数最少,输出方案。 题解: 用set维护这个过程,贪心的做一下就好了。比赛的时候D2写歪了一直没看这题,泪目。 #include<bits/stdc++.h> using namespace std; const int max
阅读全文
摘要:HDU6769 In Search of Gold(树形DP) 题意: 给出一棵树,每条边可以用a权值也可以用b权值。 你最多可以使k条边用a权值,剩余边用b权值。询问树的直径的最小值。 #include<bits/stdc++.h> using namespace std; const int m
阅读全文
摘要:CF1187E Tree Painting(树形DP+换根) 题意: 给出一棵树,开始所有的点都是白色的,你可以给树上的点染色。 一次染色,你可以选择任意一个和已经被染成黑色的点相邻的白点,将其染成黑色,并获得等同于这个点所在的白色连通块的点数的分数。询问最大分数。 题解: 先一遍DFS处理出每个点
阅读全文
摘要:HDU6767 New Equipments 题意: n个工人,m台设备。如果工人被分到第j台设备,则需要支付一个二次函数的费用。询问怎么设计方案使得找到K对工人和设备使得费用最小,输出K是1~n的答案 题解: 根据函数性质,确定工人在1~m里最小的n个点。 0为超级源点 1~n为工人 n+1~n+
阅读全文
摘要:HDU6766 Diamond Rush 题意: 给出一个矩阵,里面每个元素都带有一个权值。 单点i j的权值计算方式是(n*n)^(a(i,j))。 玩家从起点1 1开始,只能向右和向下移动。 每次询问会在矩阵中划分一个子矩阵区域,玩家不能走这个区域,询问玩家到达终点可以获得的最大权值。 题解:
阅读全文
摘要:Gugulu,一个JBer,两年前是ACMer,来到HDOJ,再次参加2020年的多大学培训比赛。然而,每次古古鲁来到区域赛,他总是得到一枚铁质奖牌,并会把这场比赛看成是JB。为了缓解痛苦,古古鲁会去上海迪士尼乐园玩过山车。古古鲁非常喜欢高血压的感觉,这让他觉得自己就像一只快乐的松鸡,忘记了所有错误
阅读全文
摘要:问题描述 拜特兰有n个城市和m条双向道路。这些城市被标记为1,2,…,n,第i个城市的亮度是bi。 魔术师Sunset想和拜特兰开个玩笑,制造一个月全食,使每个城市的亮度变为零。Sunset可以执行以下操作任意次数: ·选择一个整数k(1≤k≤n)。 ·选择k个不同的城市c1,c2,…,ck(1≤c
阅读全文
摘要:在一个阳光明媚的下午,ltslts的朋友来看他。所以他决定买些酒。 我们知道店里所有的酒都在同一个架子上,这些酒从左到右编号是1到n。 他们的朋友很有钱,所以他们会买所有的酒。但他的饮酒能力有限,所以他每天只买一瓶酒。 我们都知道,酒越久越值钱。 第一种情况下,第i瓶葡萄酒的价值为vi。在第t天,l
阅读全文
摘要:题意: Vova决定打扫房间。可以将房间表示为坐标轴OX。房间里有n堆垃圾,第i堆的坐标是整数pi。所有桩具有不同的坐标。 让我们将总清理定义为以下过程。此过程的目标是在不超过两个不同的x坐标下收集所有桩。为了实现此目标,Vova可以执行几次(可能为零)移动。在移动期间,他可以选择一些x,并使用扫帚
阅读全文
摘要:您和您的朋友正在玩游戏真人快打XI。您正在尝试通过挑战塔。该塔中有n个凸台,从1到n。第i个老板的类型是ai。如果第i个首领很容易,则其类型为ai = 0,否则,此首领为坚硬且其类型为ai = 1。 题意: 在一个会话中,您或您的朋友可以杀死一个或两个老板(您和您的朋友都不能跳过该会话,因此在一个会
阅读全文
摘要:题意: 给出一个由男女生组成的队列,每一秒钟,如果女生的前面是男生,那么会主动的与前面的男生交换位置。 询问过了多少秒所有女生都排在了最前面。 题解: #include<bits/stdc++.h> using namespace std; const int maxn=1e6+100; strin
阅读全文
摘要:题意: 给出一堆石头,轮流操作,每次必须选择n/2堆石头,从中选取正数数量的石头移除。不同堆的移除数量可以不同。 当当前堆的数量小于n/2时,失败。询问获胜者。 题解: #include<bits/stdc++.h> using namespace std; const int maxn=1010;
阅读全文
摘要:题意: 众所周知,CBX是一个非常喜欢和孩子们玩耍的男孩。一天,CBX和n个孩子在玩捉迷藏游戏操场。每孩子有一个身高(整数),每个孩子都可以躲在另一个孩子的后面,前提是他后面的孩子至少是他身后孩子的两倍。 每个孩子只能躲在一个孩子的后面,而躲在其他孩子的后面不能隐藏孩子。 假设躲在其他人后面的孩子不
阅读全文
摘要:题意: 链接:https://ac.nowcoder.com/acm/contest/7528/D来源:牛客网 有一个长度为𝑛的非负整数数组𝑎[1..𝑛]和一个大于1的正整数𝑘。 你每次可以选不超过𝑘个数,删掉这𝑘个数然后往数组里加入这𝑘 个数的和, 进行一次这样的操作的代价是这𝑘个
阅读全文
摘要:题意: 作为一个赌徒,魏先生不仅擅长玩地主(纸牌游戏),而且还擅长使用道具。在房东那里,有一种道具叫双卡,我更喜欢叫它DC。在一轮中,如果我们使用DC,我们的分数将加倍。当然,每个DC只能使用一次,而且每轮最多只能使用一个DC。 现在,魏先生想问你一个Q(1<=Q<=10万)问题,每个问题给出两个整
阅读全文
摘要:题意: n位数,有b组,从每一组中选取一位数,依次组成一个b位数,计算有多少种选法可以满足结果%x=k 题解: 推导出转移方程后用矩阵加速,这里构造矩阵的思路学习一位巨佬的写法,还是要多练练矩阵! /* *author: zlc *zucc_acm_lab *just do it */ #inclu
阅读全文
摘要:题意: 您将得到一棵树(具有n个顶点和n-1个边的图形,在其中可以仅使用其边缘从任何其他顶点到达任何顶点)。 如果顶点具有偶数阶数,则该顶点可以被破坏。 如果销毁一个顶点,则与其相连的所有边也会被删除。 销毁给定树中的所有顶点或确定不可能。 题解: DFS的时候加一个变量f,当遇到一个节点可以删除时
阅读全文
摘要:题意: 给出一个序列,一次跳跃只能从i跳到j,满足j>i同时abs(a[j]-a[i])>=d。询问最多可以跳几次,输出路径。 题解: 做过很多次的DP模型,需要注意的是这里的值域是1e15,需要先对数据做一个离散化,然后二分出每步DP的上下界。保存DP路径的细节在线段树和状态转移的过程中都有体现,
阅读全文
摘要:/* *author: zlc *zucc_acm_lab *just do it */ /* *cf1214e *题意: *给你2n个点,输入n个数,第i个数di表示i*2和i*2-1之间的距离为di *请你构造这棵树并输出 *构造树的一般方法是先造一条长链,然后在链上加分支 *先对长度数组从大到
阅读全文
摘要:题意: 一个长度为n的序列a[i],可以将其中k个数的值任意改变,要求最小化相邻两个数绝对值之差的最大值 题解: /* *author: zlc *zucc_acm_lab *just do it */ #include<bits/stdc++.h> using namespace std; typ
阅读全文
摘要:/* *author: zlc *zucc_acm_lab *just do it *cf1060e *题意: *给出一张有n个节点的树形图G,若图上存在三个点u v,且满足u v之间距离为2,则可以在u v 之间连一条边 *询问此时所有点对之间的最短距离和 *考虑任意两点u v,若它们在原图上的距
阅读全文
摘要:题意: 一个初始为空的可重集,给出n种操作:1 t x:在t时刻插入一个x2 t x:在t时刻删除一个x3 t x:查询t时刻x的数量 题解: 考虑到时间和x的范围都是1e9,但时间只有先后关系,可以对时间进行离散化,然后用树状数组套数据结构处理,这里的数据结构支持快速查询指定数的出现次数即可。 /
阅读全文
摘要:题意: 有n个球。它们排成一排。每个球都有一个颜色(为方便起见,为整数)和一个整数值。第i个球的颜色为ci,第i个球的值为vi。 松鼠Liss选择了一些球,并在不改变球相对顺序的情况下做出了新的顺序。她想最大化此序列的价值。 序列的值定义为每个球的以下值的总和(其中a和b为常数): 如果该球不在序列
阅读全文
摘要:题意: 给定一个序列,重新排列这个序列使得最小。 题解: /* *author: zlc *zucc_acm_lab *just do it */ #include<bits/stdc++.h> using namespace std; typedef long long ll; const dou
阅读全文
摘要:题意: 给定一个序列,请你对他重新排列使得他有最长的Fib前缀。 题解: 由斐波那契数列的性质可得,一个序列当确定了前两个数时,这个序列的前缀长度就已经确定了。 暴力枚举,把全0的情况剪掉就行。 /* *author: zlc *zucc_acm_lab *just do it */ #includ
阅读全文
摘要:题意: 给出K和X,一次操作你可以对序列中的一个元素+X或-X,最多操作K次,询问怎么操作使得序列乘积最小。 题解: /* *author: zlc *zucc_acm_lab *just do it */ #include<bits/stdc++.h> using namespace std; t
阅读全文
摘要:题意: 给出平面上的一些点,点之间的距离是欧几里得距离的平方。 女孩从起点开始,目标是把所有的点上的物品运送回起点,规定手上不能同时携带两个物品。 询问最快的时间和路线。 题解: #include<bits/stdc++.h> using namespace std; const int maxn=
阅读全文
摘要:题意: 给定一个数C,对一个序列作切割,每一段对答案的贡献是这一段的元素之和减去这一段里最小的Len/C个数之和,Len指这一段的长度。 询问最小答案。 题解: 有一个结论是,两个长度为C的序列对答案的贡献一定小于这两个序列合并起来对答案的贡献。 有个贪心的做法就是只切长度为1和长度为C的序列。 #
阅读全文
摘要:题意: 求解一个一元二次方程,并将解升序输出。 题解; 模拟题意即可,要处理很多细节。 #include<bits/stdc++.h> using namespace std; const int maxn=2e5+100; long double a,b,c; int main () { scan
阅读全文
摘要:题意: 询问从一个母串里找出数量大于等于1的子串,且每个子串互不重合,都包含指定的模式串t,有多少种找法。 题解: #include<bits/stdc++.h> using namespace std; const int maxn=2e5+100; const int mod=1e9+7; ty
阅读全文
摘要:题意: 给出两个长度相同的字符串,询问能否通过每次翻转两个串相同长度的区间使得两个串一样。 题解: /* *CF1256F *题意: *给定两个长度一样的仅有小写字母的字符串 *每次可以从两个串中分别选一个长度相等的子串进行翻转 *询问是否存在使两个串相等的操作方案 *题解: *首先每种字母的个数不
阅读全文
摘要:题意: 可爱的小怪物Om Nom非常喜欢糖果。有一天,他发现自己处在一个相当棘手的境地,需要他多想一点,才能最享受糖果。如果您在他的位置上,您会成功完成相同的任务吗? 有一天,当他去找朋友埃文(Evan)时,Om Nom在家中找不到他,但他发现了两个带糖果的袋子。第一个装满蓝色糖果,第二个装满红色糖
阅读全文
摘要:题意: 给出一些人的拍卖顺序,每次询问删除一些人,谁将拍得商品。输出这个人的编号和他的出价。 当这个人的出价后面没有其他人出过价的时候,就是用这个价格拍下商品。 题解: 每次标记删除的人 查找当前数据结构里的最大出价的持有者 二分这个持有者的所有出价,找到答案 再把删除的人插入数据结构 删除和插入的
阅读全文
摘要:题意: 给出一个数组a,a(i)表示你连续行驶i公里后的消耗。 你可以在任意时刻休息。 一共有2^(n-1)次休息方案。 询问所有休息方案消耗体力的总和。 题解: 推导可得,每个数组元素的贡献是2^(n-i)+2^(n-i-1)*(n-i)。 注意快速幂部分的取模。 //a[i]的出现次数是2^(n
阅读全文
摘要:题意: 给出一棵树和两个人的初始位置,a去抓b,a一次最多移da,b一次最多移db,询问在无限次操作内a是否能抓到b。 题解: 如果一步就能抓到,则输出Alice。 如果da*2大于等于树的直径,也输出Alice。 如果da*2大于等于db,也输出Alice。 改了一晚上,早上起来发现是DFS部分打
阅读全文
摘要:题意: 给出一颗点权树,每次询问两点之间第k大的节点。 题解: 查询时的check条件换成C[u]+C[v]-C[lca]-C[fa[lca]],其他的和主席树差不多,就是利用前缀和的思想。 #include<bits/stdc++.h> using namespace std; const int
阅读全文
摘要:题意: 找出一个序列里,i<j同时a[i]>j and a[j]>i的对数 题解: 问题可以转化为对每个i,找到下标区间在i+1到a[i]内的j,同时a[j]>=i的数的数量,并求和。 考虑分块,然后对每个块维护一个树状数组。分块做的还是不熟练,比赛的时候数组开小了导致没过。 分块还是很强,可以做一
阅读全文