YunYan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  codeforces --div

摘要:给出一组数: 寻找四元组的个数 (i,j,k,l)其中a[i]=a[k],并且a[j]=a[l] 刚看到这个题的时候想到了记录每个数的个数,然后求前缀和以及后缀和。先枚举i和k,当a[i]和a[k]相等时,在枚举i和k之间的数,然后在将前缀和与后缀和相乘,但是这样复杂度是o(n^3),显然过不了。看 阅读全文
posted @ 2020-09-01 22:24 Target--fly 阅读(227) 评论(0) 推荐(0)

摘要:题目大意:这个题的题目大意不好理解,有n个数,然后向一个数组里填数,首先这个数组arr是空的,有一个R数组和count数组,R[j]的值是从j到n,如果arr[i]为空,i保证最小,那么R[j]=i,如果找不到这样的i,那么R[j]就让他空着。count数组,count[i]表示位置i出现的次数。从 阅读全文
posted @ 2020-04-24 10:33 Target--fly 阅读(435) 评论(0) 推荐(0)

摘要:题目大意比较简单,就是求一堆(二元组)的异或和。 思路:按位考虑,如果说第k位为1的话,那么一定有奇数个(二元组)在该位为1。二元组内的数是相加的,相加是可以进位的。所以第k位是0还是1,至于k为后边的数有关,所以我们直接(1<<(k+1))取模。取模后每个数的取值范围就是[0,2^(k+1)-1] 阅读全文
posted @ 2020-04-11 16:16 Target--fly 阅读(129) 评论(0) 推荐(0)

摘要:题目大意:一个n*m的棋盘上有k个棋子,k个棋子相互关联,可以一起向上向下向左向右,当碰到边界时,如果继续移动会发生越界,那么该棋子会保持不动,其余棋子继续移动。问能否在2*n*m的移动次数内,使各个棋子到达其约定的位置。 题解:将所有的棋子汇集于一点,然后蛇形遍历棋盘复杂度为n*m+n+m-3。( 阅读全文
posted @ 2020-04-10 17:57 Target--fly 阅读(132) 评论(0) 推荐(0)

摘要:题目大意:求好数组的个数,所谓好数组 1好数组是原数组的一段连续的子数组,2 好数组不包含元素和为0的子数组。 题解:唉,这个题目把我给些懵了....我一开始的想法求后缀和,保存位置,然后枚举前缀和,二分查找大于当前位置的第一个后缀合,但是ai的范围太大了,位置保存不了,然后又瞎搞了很久....最后 阅读全文
posted @ 2020-04-10 09:22 Target--fly 阅读(187) 评论(0) 推荐(0)

摘要:题目大意:一个字符串只含有? ( ),?可以变成 ) 或者 ( ,将字符串中所有的?变成) 或者 ( 使得字符串合法。 合法就是让括号配对,并且不可以提前结束比如:()()这样是不合法的。 题解:既然不能提前结束,那第一个字符必须和最后一个匹配,所以我们只要关注从2~n-1就可以了。 我们可以正着扫 阅读全文
posted @ 2020-04-02 19:49 Target--fly 阅读(117) 评论(0) 推荐(0)

摘要:题意: 略; 感觉被演了一波,这是CFdiv2吗? 算是这个构造题吧。 1 首先我们可以将u进行二进制拆分来考虑。加入u>v那么小与v的那些数在怎么拼接也无法使异或值为u。 比如二进制U=1 0 1 1 0。怎么才能异或成这个数呢?无非就是让1所在的位置的1的个数为奇数就行了,也就是构成异或成U的最 阅读全文
posted @ 2020-03-17 19:53 Target--fly 阅读(143) 评论(0) 推荐(0)

摘要:MMP,差一点就做对了。 题目大意:给你一个树,对这个树的边进行编号,编号要求从0到n-1,不可重复,要求MEX(U,V)尽可能的小, MEX(x,y)的定义:从x到y的简单路径上,没有出现的最小编号。 题解: 只要让0,1,2这三个号不在同一条路径上就行。 如果说是一条没有分支的树,那么无论怎么编 阅读全文
posted @ 2020-03-17 16:38 Target--fly 阅读(120) 评论(0) 推荐(0)

摘要:题目大意:一天有h个小时,一个人喜欢睡觉,一共睡n次,每次都睡h个小时,开始时间为0,间隔a[i]或a[i]-1个小时开始睡第i次觉,每天都有一个最好时间区间,问这n次觉,最多有多少次是在最好时间内睡的。 题解:定义状态dp[i][j]为第i次觉是在j时刻睡的,那么状态转移方程dp[i][j]=ma 阅读全文
posted @ 2020-03-14 10:02 Target--fly 阅读(221) 评论(0) 推荐(0)

摘要:题目大意:有一个导航系统,会根据你当前的位置,规划到目的地的最短路线,给你一个有向图,和一条行驶路径,问你导航重新规划路径的最大次数和最小次数。 读题的时候题意特别不理解,何为最大次数,何为最小次数? 1 比如说当在一个点时,到终点的最短路线就那一个,也就说我只能走这一条,不用重新规划。 2 在一个 阅读全文
posted @ 2020-03-13 16:42 Target--fly 阅读(130) 评论(0) 推荐(0)

摘要:题目大意:删除字符,当一个字符左边或者右边存在一个比它小“1”的字符那么就可以将这个字符删除,问最多能删除多少个字符 思路,:刚开始想的是,对于单调连续的字符,可以直接删除,比如,单点增的字符只保留前边的就行了,单调减的只保留后边的。。。然后知道不能删除为止。然后wa了一下午。。 正解是复杂度是O( 阅读全文
posted @ 2020-03-12 16:14 Target--fly 阅读(132) 评论(0) 推荐(0)

摘要:题意: 输入n行数,没行由2*n个数,表示一个坐标(x,y)。 如果x和y 1表示从该点(i,j)出发,按照构造的前移动不会停下。 否则就要到点(x,y)处停下。 题解: 首先处理-1 枚举每个-1的坐标,判断四个方向是否存在-1的情况。如果不存在就可以结束了,否则就将移动方向保存到棋盘中。 然后处 阅读全文
posted @ 2020-03-10 21:04 Target--fly 阅读(162) 评论(0) 推荐(0)

摘要:数学题 在f(x)和g(x)的系数里找到第一个不是p的倍数的数,然后相加就是答案 为什么? 设x1为f(x)中第一个不是p的倍数的系数,x2为g(x)...... x1+x2前的系数为(a[x1+x2]*b[0]+a[x1+x2-1]*b[1]..)+a[x1]*b[x2]+(.....a[0]*b 阅读全文
posted @ 2020-03-09 20:34 Target--fly 阅读(123) 评论(0) 推荐(0)

摘要:https://blog.csdn.net/w_udixixi/article/details/104479288 大意:n个数,每个数只能向上加,a[i]+1需要的时间是t[i],求使这n个数无重复数字的最少时间。 题解:并查集+贪心。怎么用并查集呢?当一个数第一次出现时,将x和x+1连起来,当我 阅读全文
posted @ 2020-03-04 19:48 Target--fly 阅读(167) 评论(0) 推荐(0)

摘要:题意: a<=b<=c 输出A,B,C要求B是A的倍数,C是B的倍数,并且输出a,b,c变成A,B,C需要的最小次数。 题解:写了半天的二分,后来发现思路错了,,,暴力就能过。。 三层for,第二层是第一层的倍数,第三层是第二层的倍数。。。。 #include<bits/stdc++.h> usin 阅读全文
posted @ 2020-02-29 20:20 Target--fly 阅读(171) 评论(0) 推荐(0)

摘要:题目大意:n个高楼,每个楼最高为mi,要求,第i个楼左边和右边不能有同时比它高的楼。让你求最在n个楼总和最高的情况下,每个楼的高度。 题解:用单调栈来做,n个楼的高度要么是单调递减,要么是单调递增,要么就是先曾后减,就这3种情况,其他的不可能。 维护一个单调非递减的栈,并且维护一个数组ans[],第 阅读全文
posted @ 2020-02-27 16:19 Target--fly 阅读(219) 评论(0) 推荐(0)

摘要:思路对了,但是不会写。 等差数列长度不是1就是2,所以不是一个字母就是俩字母,一开始写的时候直接枚举两个字母,然后让次数相乘。这样是不对的,比如abaabb,字母ab的个数应该是3+2+2,因该是每一个a后边b的个数然后相加。 正解:维护一个二位数组dp[i][j],表示位置后边,字符j的个数,然后 阅读全文
posted @ 2020-02-22 12:11 Target--fly 阅读(188) 评论(0) 推荐(0)

摘要:题解:注意这里的数组a中的元素,全部都是2的整数幂。然后有二进制可以拼成任意数。只要一堆2的整数幂的和大于x,x也是2的整数幂,那么那一堆2的整数幂一定可以组成x。 思路:位运算,对每一位,如果该位置i是1的话,先考虑从0到该位置的,数组a的和,如果比(1<<i)的话,那么可以拼接,否则的话,需要从 阅读全文
posted @ 2020-02-20 16:09 Target--fly 阅读(220) 评论(0) 推荐(0)

摘要:菜到家了,题意都读不懂。 题目大意: 总共有n个人和n个数字 n个人拍成一队,n个数字也是有顺序的 你排在第m个位置 按照顺序的每个人可以拿走这个序列中的第一个数字或者最后一个数字 你可以在所有人操作开始前说服最多k个人 让他们固定拿这个序列的第一个或者是最后一个数字 问你在所有可能的情况中可以拿到 阅读全文
posted @ 2020-02-04 12:10 Target--fly 阅读(204) 评论(0) 推荐(0)

摘要:妈耶,,,被B题卡到哭,C题一发就过了。。。 字符串问题。首先用vector记录每个字符出现的位置,然后对字符串t的每个字符,用二分查找函数查找,注意用upper_bound查找,对于字符i,首先用变量pre记录第i-1个字符的位置。然后第i个字符的位置只能比 第i-1个字符位置大,所以用二分查一下 阅读全文
posted @ 2020-01-30 21:59 Target--fly 阅读(244) 评论(0) 推荐(0)