摘要:
题意:给出n对元组<a, b>每次可以选择a或者b或者不选,问最多可以选择出多少种不同的数字。n<1e5, a,b<1e9 题解:把数字离散化化成点,存在<a,b>则a,b之间加边,对于一个联通分量,如果含有环则对答案的贡献是sz,否则是sz-1。注意:这题有一个离散化,开并查集数组的时候应该开双倍 阅读全文
摘要:
2020年 7月27日-8月3日(11题) 2020牛客多校第六场K题 K-Bag(思维题) 题意:子序列是否是可能序列(长度为K的序列包含1-K,多个这样的序列组合)的子串 链接 HDU 6797 Tokitsukaze and Rescue(最短路+删边+dfs)题意:一个完全图,删除K条边后的 阅读全文
摘要:
题意:给出一个长度为n的数组,0<=a【i】<=n,每一次操作可以把任意一个a【i】换成mex,求多少次操作使得数组a为非递减序列,输出操作次数和操作的i,任意一种满足情况的即可。n<1e3 题解:尝试直接构造0,1,2 n-1这样的序列,分两种情况,mex!=n的时候把mex交换到a【mex】=m 阅读全文
摘要:
题意:给出a【】和b【】长度为n,一次操作:val+=a[i], a[b[i]]+=a[i] (b[i]!=-1);对每个i(1-n)都执行一次操作,求最大的val并输出操作的次序。 题解:考虑a【i】对答案的贡献,如果a【i】大于0的话,应使得a【i】对答案的贡献次数尽可能多,即按照拓扑序往后即可 阅读全文
摘要:
题意:一个n个点以1为根节点的树,刚开始所有人都在1,他们所要前往p【i】,每个人开始有两种状态good和bad,在前进过程中good可以转化成bad,给出h【i】经过i点(包括终点)是i点的人中good-bad人数,问h是否合理。 题解:对于i点flow【i】表示经过i点的人总数,可以得到good 阅读全文
摘要:
题意:有个无限大的画板,初始均为空,张三想画出数字n,如果他想画下数字n (n≥5)n (n≥5),需要保证四周的数字为n−1, n−2, n−3, n−4,如果n≤4,只需要保证大于0的数字出现在四周即可,输出可以画出n的步骤。必然是有解的。n<100 题解:n很小,且必然有解,可以考虑确定一个n 阅读全文
摘要:
题意:给出N个元组(x, y)问最多需要多少个初始状态才能转移到这样,一个元组(x,y)可以一直向右转移(x+1, y+1)...(x+i, y+i)或者一直向左转移(x+i, y-i)。n<1e5, x,y<1e9 题解:选择最少的直线,能够包括所有给定的点(x,y),把斜率1和-1的直线分别作为 阅读全文
摘要:
题意:给出一个无向图,每个点有三种状态LRM,每个点到下一个点的时候L->R和R->L都需要额外付出x的代价,M表示都接受且不用付出额外代价。求S到T的最少代价。 题解:把状态为M的点拆成状态L的点,和状态R的两个点重新建图,跑dijkstra时候转移的时候看看是否需要付出额外的代价即可,为了方便每 阅读全文
摘要:
题意: n+m对元组<w, v>,求当前n个元组的子集和后m个元组中的子集满足:sigma(w)相等时候,两个子集的sigma(v)和最大。n, m<1e3, 0<w<1e3, -1e9<v<1e9。时间:5S 题解:直接暴力跑背包,复杂度O(n*sigma(w)),有1e9了。。。但是还是可以过的 阅读全文
摘要:
题意:求字符串的每个前缀的最小后缀。 题解:最小的后缀一定是最后一个Lyndon串,Lyndon分解。 #include <bits/stdc++.h> #define IO_read ios::sync_with_stdio(false);cin.tie(0) #define fre freope 阅读全文