- 博客(4)
- 收藏
- 关注
原创 2023ccpc深圳G题相似基因序列问题
对于两个字符串S1=“aabbccdd”,和S2=“aabgccff”,我们观察字符串,S1和S2不相等,但S1的前三个字符和S2的前三个字符是一样的,从第四个字符往后,越往后不一样的字符个数可能就越多。由此我们或许可以注意到两个字符串由短到长,不一样字符的个数是符合单调性的(单调增),也就是越长就可能错的越多。那么自然,当两个字符串不相等的时候,我们想要知道有几个不相等的字符就可以通过二分法找第一个不相等的地方,再判断这个字符之后的字符串是否相等。但新的问题来了,怎么在O(1)下判断两个字符串相等?
2023-11-20 20:52:41
501
4
原创 洛谷P2422 良好的感觉(Problem J)
452 : 2比4小,确定了一个以a[4]为最小的区间:arr[3]到arr[5], 令tmp = a[q.back()] = 4;120 : 0比2小,确定了一个以a[6]为最小的区间:arr[3]到arr[6], 令tmp = a[q.back()] = 2;010 : 1比0小,确定了一个以a[2]为最小的区间:arr[1]到arr[6], 令tmp = a[q.back()] = 1;arr[i] : 0 3 1 //此时a[2]=1还未加入队列,只是比较,下面同理。
2023-05-26 14:29:47
326
1
原创 洛谷P2629 好消息,坏消息(Problem I)
意思是对于n个事件,有n个不同的通报顺序,像事件1,2,3,4。这里就是需要判断每一种情况中是否有出现负值,即对每一个i,需要判断a[i],a[i]+a[i+1],a[i]+a[i+1]+a[i+2]....., a[i]+a[i+1]+...+a[i+n-1]一共n个值是否都大于等于0,对于这样需要多次求连续区间和的情况,我们很容易就能想到用前缀和,只要预先计算一次前缀和,后续求区间和就只需要O(1)的时间就可以完成了。当n的值为最大1e6的时候,这样n^2的复杂度是一定超时的,所以我们需要优化它。
2023-05-26 13:12:38
558
2
原创 洛谷P1160 队列安排(Problem B)超级废话版!!!
然后是删除操作,我们前面创建了一个h数组用于判断是否被删除,于是我们可以用一个if(h[cur])就可以判断是否要删除它了,在这里可以先用一个tmp来记录L[cur].l,这样是为了修改要删除的数的右边的那个数的左边,也就是L[L[cur].r].l的值。这里说明有删除操作,并且结合下面的输入说明和样例得知,同一个数可能被删除多次,所以为了防止删除同一个数字而导致的其他问题,这里可以用一个数组来表示这个同学是否有被删除过,在开始删除前,可以把数组全部赋值为1,表示没被删除。我们开始写for循环里的内容,
2023-05-25 21:02:29
869
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人