随笔分类 - Codeforces
摘要:题意:给你一组数,每个数都可以进行一次加一减一,问最后最多能有多少不同的数. 题解:我们可以用桶存每个数的次数,然后枚举$[1,150001]$来求对答案的贡献,然后贪心,这里我们不用担心其他乱七八糟的东西,直接根据桶中的个数来求贡献即可,但是要先选$i-1$的情况,因为后面的数取不到$i-1$,假
阅读全文
摘要:题意:给你两个长度为$n$的数组$a$和$b$,元素值在$[0,n-1]$,可以对$b$数组的元素任意排序,求新数组$c$,满足$c_i=(a_i+b_i)\ mod\ n$,并且使得其字典序最小. 题解:这种取模求最小的题,我们一眼就能看出最优情况一定是$b_i=n-a_i$,可以先用set存一下
阅读全文
摘要:题意:给你一组数,每次可以选队首或队尾的数放入栈中,栈中元素必须保持严格单增,问栈中最多能有多少元素,并输出选择情况. 题解:首先考虑队首和队尾元素不相等的情况,如果两个数都大于栈顶元素,那么我们选小的放进去,否则选择比栈顶元素大的放进去,该题重点在于队首和队尾元素相同的情况,由于他们相同,那么我们
阅读全文
摘要:题意:给你两个字符串,每次取它们的子串C和D,然后求LCS,得到的贡献为$4*LCS(C,D)-|C|-|D|$,求最大贡献. 题解:首先应该了解$O(n^2)$的LCS的dp写法,然后在此基础上稍加改动,对于子串$C$和$D$,如果$c[i]=d[j]\(,那么他们的LCS应该\)+1$,长度也分
阅读全文
摘要:题意:有一长度为$n$的字符串,要求得到$k$不同的它的子序列(可以是空串),每个子序列有$|n|-|t|$的贡献,求合法情况下的最小贡献. 题解:直接撸个爆搜找出所有子序列然后放到set里面搞一下就好了. 代码: int n,k; string str; set<string> s; queue<
阅读全文
摘要:题意:你有$n$个礼物,礼物有自己的种类,你想将它们按种类打包送人,但是打包的礼物数量必须不同(数量,与种类无关),同时,有些礼物你想自己留着,$0$表示你不想送人,问你在送出的礼物数量最大的同时,尽可能的使自己喜欢的留下来,输出能送出的最大礼物数,以及这些礼物中自己不喜欢的数目. 题解:首先,我们
阅读全文
摘要:题意:给你一个$n$x$m$的矩阵,你可以任意位置的元素+1,只能加一次,问你如何使得任意位置的元素不等于它四周的值.输出操作后的矩阵. 题解:构造,矩阵中某两个下标的和的奇偶性一定和四周的都不同,因为题目保证有解,所以我们只要让下标和是奇数的填奇数,偶数的填偶数即可. 代码: int t; int
阅读全文
摘要:题意:给你一组数$b$,对于每个$b_i$,相对应的$a_i=2^$,问你是否能找出两个不相交的区间,使得两个区间的$a_i$的元素和相等. 题解:对于任意一个$2k$,如果它只能由$2k$相加得到的话,那么只能是他自己本身,或者这些$2k$中含有相同元素,我们可以推一下,$1,2,4,8,16,3
阅读全文
摘要:题意:有$n$个队员站成一排,有两个教练分别选人,每次选当前剩余人中的能力值最大的那个以及他两边相邻的$k$个人,问最后每个人所在队伍情况. 题解:优先队列模拟,以及双向链表,先用结构体存入每个人的状态,然后全部push到优先队列中,每次将已经分好队的人弹出,然后找当前能力值最大的人分组,至于两边的
阅读全文
摘要:题意:你要带着你的喵咪一起去旅行,你的喵在星期$1,4,7$吃喵粮$x$,在星期$2,6$吃喵粮$y$,在星期$3,5$吃喵粮$z$,你只有$a$个$x$,$b$个$y$,$c$个$z$,一旦吃完旅行就结束了,问你选择星期几出发能使旅行的天数最长. 题解:这已经是这个星期第三次碰到这种idea的题了
阅读全文
摘要:题意:给你两个字符串$s$和$t$,保证$t$的字典序大于$s$,求他们字典序中间的字符串. 题解:我们假设题目给的不是字符串,而是两个10禁止的正整数,那么输出他们之间的数只要把他两加起来除$2$就行了,那么对于字符串又为何不可呢?我们可以将每个字母看成$26$进制的数,像高精度那样模拟加法运算的
阅读全文
摘要:题意:有$n$个点和$m$条无向边,现在让你给你这$m$条边赋方向,但是要满足任意一条边的路径都不能大于$1$,问是否有满足条件的构造方向,如果有,输出一个二进制串,表示所给的边的方向. 题解:我们先单独拿出$3$个点来看,选择一个点,那么与它相连的另外两个点到自己的方向一定是相同的,同理,我们可以
阅读全文
摘要:题意:有一组数,可以选择某个数$a_i$相邻的一个数$a_j$,然后可以让$a_i$加上或者减去$|a_i-a_j|$,问最少操作多少次使得数组中所有数相同. 题解:不难发现,每次操作必然可以使得一个数等于它旁边的任意一个数,所以让数组中的其他数等于出现次数最多的那个数一定是最优的,然后我们就去找与
阅读全文
摘要:题意:有一长度为$n$的数组,求最多的区间和相同的不相交的区间的个数. 题解:我们可以先求一个前缀和,然后第一层循环遍历区间的右端点,第二层循环枚举左端点,用前缀和来$O(1)$求出区间和,$pos$表示当前区间和为$cur$的最右端点,如果我们枚举的左端点$j$比$pos[cur]$所在的最右端点
阅读全文
摘要:题意:有一个HP为$h$的大怪兽,你需要轮流进行$i$次操作.每次可以使$h+=d_i$($d_i$有正有负),当第$n$次操作完成后,再从第一次开始,问能否使得怪兽的HP变为$0$或更低,如果可以,输出操作次数,否则输出$-1$. 题解:我们首先求$d$的前缀和,如果在求的过程中就能使怪兽死掉的话
阅读全文
摘要:题意:有两个字符串,两个字符串中的相同字符可以相互匹配,$?$可以和任意字符匹配,输出最大匹配的字符数量和它们分别两个字符串中的位置. 题解:很容易贪心,我们先遍历第一个字符串,然后在第二个字符串中去找与当前位置相同的字符,这个过程我们可以先将每个字符的位置存下来然后再操作,遍历完后再遍历字符和问号
阅读全文
摘要:题意:有一长度为$n$的序列$p$,现在给你$q_i=p_{i+1}-q_i \ (1\le i\le n)\(,问你是否能还原出原序列,如果能救输出原序列,否则输出\)-1$. 题解:由:\(q_i=p_{i+1}-p_i\),我们对其求前缀和可得:\(s_i=p_{i+1}-p_1\),然后再求
阅读全文
摘要:题意:有$n$个人,每个人的能力值是$a_i$,现在你想将这些人分成$k$组(没必要全选),但是每组中最高水平和最低水平的人的能力差值必须$\le 5$,问最多能选多少人. 题解:想了一会发现纯贪心写不了,必须要用dp来求解,先排序,我们记$dp[i,j]$,表示前$i$个人分成$j$组选的最多的人
阅读全文
摘要:题意:有一长度为$n(4\le n\le 3000)\(的数组,选择四个位置\)(i,j,k,l)\ (1\le i<j<k\le n)$,使得$a_i=a_k$并且$a_j=a_l$,问存在多少这样的元祖. 题解:$n$最大给了$3000$,所以时间复杂度最坏可以是$O(n^2)$,我们可以考虑枚
阅读全文
摘要:题意:给你一个字符串,每次可以调换现字符串的相邻两个字符,问最少操作多少次使得这个字符串等于其反转过来的字符串. 题解:先考虑字符串中没有相同字符的情况,那么我们每次将目前字符串的最后一个字符一直调换到前面就行,如果出现相同字符的话,先让最靠前的字符调换到对应位置一定是最优的.我们先记录原字符串中每
阅读全文

浙公网安备 33010602011771号