训练赛
文章平均质量分 70
selia1078
这个作者很懒,什么都没留下…
展开
-
2020 Multi-University Training Contest 6
2020 Multi-University Training Contest 6[D Asteroid in Love](http://acm.hdu.edu.cn/showproblem.php?pid=6830)题意题解代码[E Fragrant numbers](http://acm.hdu.edu.cn/showproblem.php?pid=6830)题意题解代码[F A Very Easy Graph Problem](http://acm.hdu.edu.cn/showproblem.php?原创 2021-01-25 22:15:55 · 134 阅读 · 0 评论 -
牛客多校训练营2020第10场
C题意:一棵树,边有边权,边权可修改。每次选一条路径,将该路径所有边边权-1,对当前树求将所有边清空的最小操作次数。思路:对每个点,维护以当前点为lca路径条数。考虑该点向下的边的最大值,如果最大值减去向上的边的差大于其他向下的边的和,那么就可以两两匹配,否则最大边会有剩余。E题意:积木,可以向左推某一行,如果下面空了就会向下掉,求最低高度。思路:二分答案,如果当前列高于答案,看左侧有没有剩余。#include<iostream>#include<cstdio>#in原创 2020-08-11 17:40:01 · 145 阅读 · 0 评论 -
牛客多校训练营2020第9场
A题意:输出2(2(2)+2+2(0))+2(2+2(0))+2(0)之类的等式的值,其中2(x)表示2x2^{x}2x,等式中只有0,2。思路:栈,或者evalclass Stack(object): def __init__(self): self.__list = [] def is_empty(self): return self.__list == [] def push(self, item): self.__l原创 2020-08-11 17:31:35 · 126 阅读 · 0 评论 -
牛客多校训练营2020第8场
F题意:一些原料生产一些产品,给出反应方程、初始原料的量,求反应的瓶颈。思路:看出是一个DAG图,对于每个反应,反应物向生成物连边,反应物的系数为边权,生成五系数为点权。f[i]表示从原料到i点的(边权/点权)的乘积。f[i] / i的点权/ i的初始量的最大值即为答案。from fractions import Fraction as Fif __name__ == '__main__': n,m = [int(x.strip()) for x in input().split()]原创 2020-08-11 17:15:35 · 129 阅读 · 0 评论 -
牛客多校训练营2020第7场
C题意:n*m件物品,分装到一些盒子里,每个盒子可以装任意多的物品。要求,在不拆盒子的前提下,既能将物品均分成m份,又能均分成n份。思路:辗转相除#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int N = 2原创 2020-08-11 16:43:38 · 69 阅读 · 0 评论 -
牛客多校训练营2020第6场
E签到题题意:给定N, k,输出一个排列,满足:存在一段长度为i的子序列,其和模N余k(1≤i≤N1\leq i\leq N1≤i≤N)。思路:如果存在,n∗(n+1)2=k(modN)\frac{n*(n+1)}{2} = k (mod N)2n∗(n+1)=k(modN)。如果是奇数,输出N 1 N-1 2 N-2 ……如果是奇数,输出N N2\frac{N}{2}2N, 1 N-1 2 N-2 ……#include<iostream>#include<cstdio原创 2020-08-11 15:51:20 · 93 阅读 · 0 评论 -
牛客多校训练营2020第5场
传送门D题意:给一个排列,有两种操作:将整个数列旋转一定次数将数列的前N-1位旋转一定次数注意,进行一轮某种操作可以旋转若干次。求将数列变成升序,最少需要几轮2号操作?(1号操作不限)思路:以每一个位置为起点,求最长上升子序列的大小x,n-x的最小值即是答案。#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorit原创 2020-08-11 15:14:20 · 126 阅读 · 0 评论 -
牛客暑期多校训练营2020第3场
E Two Matchings题意: 给一个数组a,求排列p、q,满足pi != qi。ppi=i,qqi=i。(n为偶数) 求12\frac{1}{2}21∑i=1n\sum_{i=1}^{n}∑i=1naI-api与12\frac{1}{2}21∑i=1n\sum_{i=1}^{n}∑i=1naI-aqi的和的最小值。思路: pi != qi即是p中均为二元环。 n=4时,最小值为max-min; n=6时,最小值为max-min; n ≥\ge≥ 8时,整块不会比切成4原创 2020-08-07 09:37:19 · 167 阅读 · 0 评论 -
牛客暑期多校训练营2020第2场
A题意:n个串(s1,s2,……,sn),求∑i=1n\sum_{i=1}^n∑i=1n∑j=1n\sum_{j=1}^n∑j=1nf2(si,sj)。其中f(s,t)为s的前缀和t的后缀的最长匹配长度。思路: 记录所有后缀的hash值,对每一个前缀(长度为i)查询有多少后缀与之匹配。但要除去同一对串(s, t)的多次匹配的情况。假设s[1……i] = t[l-i+1……l] 且s[1……j] = t[l-j+1, l],(i < j),那么nxt[j] = i,因此只需在其kmp中的前驱原创 2020-08-07 09:37:29 · 125 阅读 · 0 评论 -
牛客暑期多校训练营2020第1场
H题意: 给一张带权有向图,询问:当每条边容量不多于ui/vi时,求从1到n流过单位流量花费的最小代价。思路:费用流逐条添加增广路 求出有i条增广路所需花费的最小代价mn[i],则所需最小费用为mn[ui / vi] * ui / vi + mn[ui / vi+1] * (1 - ui / vi)#define LL long longusing namespace std;const int inf=1e9+10;const int M=110;const int N=60;st原创 2020-07-15 23:13:20 · 162 阅读 · 0 评论 -
ACM ICPC 2017–2018, Northern Eurasia Finals
传送门Ctarjan题意:n个城市,m条公路,城市之间互相可达。删去m-2n条公路,城市之间仍然可达,求方案。题解:tarjan跑过的路径不超过2n条(树枝边最多n-1条,返祖边最多n-1条),且图中联通,标记好树枝边与返祖边,输出其他没有被标记的边即可。const int M=2e5+10;const int N=1e5+10; struct EDGE{ int to,nxt;}edge[M];int t[N],fa[N],bfa[N],dfn[N],low[N],in[N],stak原创 2020-07-11 16:39:07 · 255 阅读 · 0 评论 -
牛客暑期多校训练营2019第八场
传送门A单调栈题意:给0-1矩阵,求不被其他“全1”矩阵包含的“全1”矩阵。思路:up[i][j]表示每一个位置向上有多少个连续的1,lef[i][j]表示第i行前j个元素的前缀和。枚举行,对于每一行用上升的单调栈处理,并维护单调栈中每一个元素所能向左拓展的最远位置pos。如果一个元素x出栈,则产生一个(i-up[i][x]+1,pos)-(i,j-1)的矩形,该矩形不可能向上、左、右拓展,只需判断它能不能向下拓展(lef前缀和判断下一行是否全是1)即可。const int N=3010;char原创 2020-06-30 15:24:57 · 88 阅读 · 0 评论 -
牛客暑期多校训练营2019第十场
传送门A概率DP题意:n张纸牌,每张纸牌上写有一个数字。给定一个下限a,一个上限b。Alice每一轮从牌堆中不放回地抽出一张牌,如果抽出的牌的总和大于a且不大于b,Alice那么获胜。如果抽出的所有牌的总和大于b,游戏立即结束;总和小于等于b,Alice可以选择游戏继续,也可以选择结束。求获胜的概率。思路: Alice的最优策略为,抽到牌总和在 (a,b] 之间时,立刻结束游戏。 注意到,只有最后一张牌需要确定,前面的牌顺序不重要。 所以,我们可以枚举最后一张牌x,dp[j][k]表示除了x以外原创 2020-06-29 22:45:59 · 160 阅读 · 0 评论 -
2019-2020 ICPC Asia Taipei-Hsinchu Regional Contest
2019-2020 ICPC Asia Taipei-Hsinchu Regional ContestL题意:给N个点(N ≤\le≤ 4096),求四边形最大面积(只要有四个点即可,可以退化成三角形或直线,注意重复点的情况)题解:建凸包,旋转卡壳跑每个点的对踵点。对于一对对踵点<u, v>,枚举其他点,找出直线<u, v>两侧面积最大、最小值。如果两侧都有点,用两侧的最大值相加更新答案;否则用有点的那一侧的最大值减最小值更新答案。O(N2)#include<iost原创 2020-05-24 22:40:19 · 888 阅读 · 0 评论 -
2019 Multi-University Training Contest 1
2019 Multi-University Training Contest 1B题意:给定一个长度为n的序列,进行如下两种操作:在末尾添加一个数询问某区间的最大异或和强制在线题解:线性基+贪心对于前缀 a[1……i],计算出线性基,然后用这组线性基来处理右端点为 i 的询问。( pla[i] 表示前缀 a[1……i] 的线性基)贪心,如果构造过程中,使得线性基中的元素尽量靠后,那么在处理时即可求得最优解。然而,如何保证线性基中的元素尽量靠后呢?当插入元素 i 时,遍历线性基的位置,原创 2020-05-15 19:49:11 · 215 阅读 · 0 评论 -
2019浙江省赛
D题意:n个点的二叉树(无向边)+<i,i-1>的单向边,构造一条到达且只到达每个点一次的路径。题解:两次dfs。第一次dfs为向i - 1优先,2i次之。然而,发现某些点有两条出路,这是由于该点在最底层;有些点没有达到,这是因为这些点在最后一层或倒数第二层的右下角第二次dfs时先判断该点的右子节点是否达到过,如果没到达,先走右子节点;然后,根据之前的dfs,如果这个点只有向前...原创 2020-05-08 10:31:44 · 257 阅读 · 0 评论 -
2018-2019 ICPC Southwestern European Regional Programming Contest (SWERC 2018)(Gym102465)
2018-2019 ICPC Southwestern European Regional Programming Contest (SWERC 2018)(Gym102465)C题意:给两组字符串,填一个不大于4X4的网格,要求每一行(列)均选自对应组的字符串。题解:将数量较多的一组字符串建Trie树,dfs较少的一组,并再Trie树上匹配。#include<iostream>...原创 2020-05-08 10:13:21 · 1070 阅读 · 0 评论 -
2015-2016 Petrozavodsk Winter Training Camp, Moscow SU Trinity Contest(Gym 100962)
2015-2016 Petrozavodsk Winter Training Camp, Moscow SU Trinity Contest(Gym 100962)I题意:给一个序列,选出一个子序列,满足a[l] == a[r]且a[l] >= a[i] (l <= i <= r),求这样的子序列的最大长度。题解:询问离线,按右端点排序。维护一个单调栈,元素单调递减,对...原创 2020-05-08 10:06:08 · 528 阅读 · 0 评论