随笔分类 - Codeforces
摘要:Link Cut Centroids Fishing Prince loves trees, and he especially loves trees with only one centroid. The tree is a connected graph without cycles. A v
阅读全文
摘要:题意:有一长度为$n$的序列,求其中任意五个元素乘积的最大值. 题解:先排序,然后乘积能是正数就搞正数,模拟一下就好了. 代码: int t; ll n; ll a[N]; int main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
阅读全文
摘要:题意:给你一长度为$n$的序列,将其分为两个集合,求两个集合中未出现的最小元素的最大值, 题解:用桶存一下每个元素的个数,两次枚举$[1,100]$,找出两个最小值即可. 代码: int t; int n; int a[N]; map<int,int> mp; int main() { ios::s
阅读全文
摘要:题意:你和基友两人从左往右轮流打怪兽,强怪用$1$表示,垃圾用$0$表示,但基友比较弱,打不过强怪,碰到强怪需要用一次魔法,而你很强,无论什么怪都能乱杀,基友先打,每人每次至少杀一个怪兽,最多杀两个怪兽,问最少需要用多少次魔法能将怪兽全部打完. 题解:由于在打怪的过程中,每个状态都与之前息息相关,所
阅读全文
摘要:题意:给你一串长度为$n$的序列,有的位置被锁上了,你可以对没锁的位置上的元素任意排序,使得最后一个$\le0$的前缀和的位置最小,求重新排序后的序列. 题解:贪心,将所有能动的位置从大到小排个序就行了. 代码: struct misaka{ int a; int loc; }e[N]; int t
阅读全文
摘要:题意:刚开始你有一个木棍,造一个火炬需要一个木根和一个煤块,现在你可以用一个木棍换取$x$个木棍,或者$y$根木棍换一个煤块,消耗一次操作,问最少需要操作多少次才能造出$k$把火炬. 题解:初始你有一个木棍,造出$k$把火炬需要$k$个木棍和$k$个煤块,而一个煤块需要$y$个木棍,所以需要木棍$k
阅读全文
摘要:题意:有一个长度为$n$的序列,可以操作$3$次,每次选取一段区间,然后区间的元素加减区间长度的倍数,$3$次操作后使得序列所有元素为$0$,问具体操作情况. 题解:假如我们能选择一整段区间$[1,n]$,使其所有元素都是$n$的倍数就好了,但是有的元素不是$n$的倍数,所以不能这样搞,但是我们可以
阅读全文
摘要:题意:有一个长度为$n$的序列,你每次可以对序列重新排序,然后花费$1$使某个元素加减$1$,多次操作后使得新序列满足$a_=c^i$,$c$是某个正整数,求最小花费. 题解:先排序,我们可以直接枚举$c$,然后模拟维护一个最小值就好了. 代码: int n; int a[N]; int main(
阅读全文
摘要:题意:有一个长度为$n$的隐藏序列,你最多可以询问$2n$次,每次可以询问$i$和$j$位置上$p[i]\ mod\ p[j]\(的结果,询问的格式是\)?\ x\ y$,如果已经确定序列了,先输出$!$,然后输出序列. 题解:首先要知道一个结论,\(p[i]\ mod \ p[j]=cnt1\),
阅读全文
摘要:题意:有一个长度为$n$的序列,你需要对其重新排序,构造一个新数组$c$,$c_=gcd(a_{1},...,a)$并且使得$c$的字典序最小. 题解:直接跑$n$次,每次找一个目前最大的$gcd$出来,并标记位置模拟一下就好了. 代码: int t; int n; int a[N],b[N]; i
阅读全文
摘要:题意:有一个长度为偶数只含$0$和$1$的序列,你可以移除最多$\frac{2}$个位置的元素,使得操作后奇数位置的元素和等于偶数位置的元素和,求新序列. 题解:统计$0$和$1$的个数,如果$0$的个数大于$\frac{2}$,那么直接输出$n/2$个$0$,否则输出所有$1$(个数必须为偶).
阅读全文
摘要:题意:给你一个由$0,1,?\(组成的字符串,你可以将\)?$任意改成$0$或$1$,问你操作后能否使得该字符串的任意长度为$k$的区间中的$0$和$1的个数相等. 题解:我们首先看前$k$个字符,那么对于区间$[2,k+1]$,如果要满足条件,$s_{k+1}=s_{1}$一定要成立,由此我们可以
阅读全文
摘要:题意:有一个长度为$n$并且所有元素和为$0$的序列,你可以使$a_-1$并且$a_+1$,如果$i<j$,那么这步操作就是免费的,否则需要花费一次操作,问最少操作多少次使得所有元素为$0$. 题解:首先优先考虑不用花费的情况,如果$a_>0$,\(a_{j}<0\),且$i<j$,那么我们可以免费
阅读全文
摘要:题意:有$n$个点往下落,你可以在最下面放两个长度为$k$的板子,问做多能接到多少个点. 题解:这题给纵坐标$y$完全没有用,我们先对横坐标$x$排序,然后从左边开始枚举,用$l[i]\(记录\)[1,i]$中,一块板子最多能接到的点,然后再从右开始枚举,用$r[i]\(记录\)[i,n]$中,一块
阅读全文
摘要:题意:给你一个正整数$n$,每次可以对$n$加一,问最少操作多少次是的$n$的所有位数之和不大于$s$. 题解:$n$的某个位置上的数进位,意味这后面的位置都可以被更新为$0$,所以我们从高位往低位记录一个$sum$,然后根据情况判断即可. 代码: int t; int s; ll n; char
阅读全文
摘要:题意:给你两个数字$x$和$y$,让你构造一个长度为$n$的序列,要求包含$x$和$y$,并且排序后相邻两项的差值相等. 题解:有排序后相邻两项的差值相等可知,构造的序列排序后一定是一个等差数列,而题目给的$x$和$y$的范围很小,所以我们可以从$[1,50]$来枚举公差$d$,这个$d$必须要能整
阅读全文
摘要:题意:给你$a$和$b$两个数,每次操作可以是任意一个数$-1$,最多操作$n$,并且$a\ge x$,\(b\ge y\),求操作后$a*b$的最小值. 题解:观察样例并且在纸上推一推发现,我们要让$a$和$b$中,小的那个尽可能的小,然后模拟一下就好了. 代码: int t; ll a,b,x,
阅读全文
摘要:题意:给你一个字符串$s$,原字符串为$w$,如果$i>x$且$w_=1$,那么$s_=1$,如果$i+x\le n$且$w_{i+x}=1$,那么$s_=1$,否则$s_=0$.求$w$的一种可能的情况. 题解:对于$s$中的$0$,我们知道,它左右两边距离$x$的地方一定都是$0$,所以我们先假
阅读全文
摘要:题意:你和你的随从去偷剑和战斧,你可以最多可以拿$p$重的东西,随从可以拿$f$重的东西,总共有$cnt_$把剑,$cnt_$把战斧,每把剑重$s$,战斧重$w$,问你和随从最多能拿的剑和战斧的总和是多少? 题解:首先,肯定谁轻就先拿谁,我们就令剑是轻的,然后算一下我自己最多能拿多少剑,从$0$开始
阅读全文
摘要:题意:给你一个长度为$2*n-1$的字符串$s$,让你构造一个长度为$n$的字符串,使得构造的字符串中有相同位置的字符等于$s[1..n],s[2..n+1],...,s[n,2n-1]$中的位置上的字符. 题解:不难发现,$s$中的奇数位字符就是我们要的答案. 代码: int t; int n;
阅读全文

浙公网安备 33010602011771号