【cf】近期codeforces总结-- 希望每次能把未解出的下一道题补掉

我好菜啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

 

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

啊啊啊啊啊啊啊啊啊啊然后再啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

够了吗好了进入正题了

算了现在实在懒得写

csdn变得好丑啊

一、教育场72  https://codeforces.com/contest/1217 

(1)

-26 然后B 搞死了 因为【样例就没完全写出来,纸不够么-。-】

然后为什么样例就不对,感觉很疲软。。。 复制粘贴写到了for循环搞到60几, 我想这应该可了吧?结果??

样例3就卡了一个小时,直到痛定思痛写了个小样例自己看情况,发现是2*2#*3而不是直接2*3,那5的话应该乘的更多。然后t写了个100000的样子。。。 就过了,好险啊。

如果可以换一下思维方式的话,真的是极好的。

其实最好的方法是【样例完全看透之后再下笔】,先写个输入输出什么的 …… 有思路之后再补

然鹅我总是很懒,感觉脑子完全不会转动的,然后就还是边写边逼自己。这样不好。还是要磨炼qvq

(2)

继续写写c吧,中间自己hentai崩了坐不下去,其实emmnmn我的上分大路啊。cc说复试起码要2D的水平好的8 加油油

The Number Of Good Substrings

。。。。好像搞错了。是dasha那场。。。 不及时补,是什么题都忘完了qaq

上面的无视吧,dasha这个。https://codeforces.com/contest/1209/problem/C

then。把1294329074 一类,标1和2,这样把他们重新排序的时候,可以按照11112222(顺序仍然不变) ,但是

整个数组在完美的递增。我呢就是按照012345,。。的顺序标号,记录一个index,一直递增接续是没关系的,直到接着接着忽然接不上了~~  那就把这个数字作为分隔符。(比如4)

然后记录一下前面的4能到的位置标2(新的开始),后面的4能到的位置标1,这样5就从前面4的位置往后走就可以了。

整体的标号工作可以之后再进行。。 不过也还行8(因为怕标完了给个false;。)

再来写一下代码~

当时的 我好厉害。。 没有记录每个的位置,只是一个小小的first index  lastindex就满足了qwq

真是厉害透了。。。 我说怪不得找不到bug

 写的时候放大炮 最后真足够gg enough 的。还有找了半天逻辑错误最后因为一个等号。。。

所以是要先想明白再说吗。 。。。

马上accept。。。

【如果可以,我觉得better的方法是先理清自己的逻辑。】起码在逻辑上自己感觉没错误了,那就是代码写的不对,先大致扫一眼有米有奇怪错误?技术真的实施到细节会好一些

虽然这么说做起来也贼难。。。 可怜的dasha这场要不然我就加到哪里了分数

注意1

string和int的转换(java和js真方便啊)

一不做二不休。。。   字符串是‘5’ ,存储也是存的ascii码,

s[i] = ss[i-1] - '0';这样 ‘5’和‘0’的差距也 是5.  然后扔进数组里存储起来-。-

二、前缀和

打死想不出。cc说我没做过类似的题。。 也可能脑子傻掉了什么的qwq

https://codeforces.com/contest/1215/problem/B  B. The Number of Products

给你一堆正负正负 问贡献qwq

多列几个情况会发现找规律不行 因为

-1 1 1 1 1 

1 1 -1  1 1 所有乘积为负的块 负数个数固定但是总和不同

那么就需要按照贡献来

前缀和是一个数组,记录的是:我前面的和是多少。每个不用管,一直往后乘。。乘。。。乘啊就可以。

原理就是,x1*x2*x3.....   想求   x4*x5*x6的时候 直接1-6/1-3除法得到的就是4-6

所以这样跨区间的来,会相对容易许多~

然后轮到i的时候,i的前缀和是x,想知道和自己相比,前面有几个。。。

看以xn为结尾的数字来。这样每次新增一个,前面的都能囊括,然后因为是以这个为底,所以计算起来也不复杂,直接按照前面的来就好了

最方便的是!只要除一下的话,如果你现在是正的,那么看前面的负数和个数(负负得正嘛),如果你是负数,那么看前面的正数就好,算都不用算 ,统计一下一遍扫过来正好。是不是超级方便1!!!

这个思想很好!!!对8!!!先写写 C看起来也可的样子  不复杂 动脑子

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CodeForces - 616D是一个关于找到一个序列中最长的第k好子段的起始位置和结束位置的问题。给定一个长度为n的序列和一个整数k,需要找到一个子段,该子段中不超过k个不同的数字。题目要求输出这个序列最长的第k好子段的起始位置和终止位置。 解决这个问题的方法有两种。第一种方法是使用尺取算法,通过维护一个滑动窗口来记录\[l,r\]中不同数的个数。每次如果这个数小于k,就将r向右移动一位;如果已经大于k,则将l向右移动一位,直到个数不大于k。每次更新完r之后,判断r-l+1是否比已有答案更优来更新答案。这种方法的时间复杂度为O(n)。 第二种方法是使用枚举r和双指针的方法。通过维护一个最小的l,满足\[l,r\]最多只有k种数。使用一个map来判断数的种类。遍历序列,如果当前数字在map中不存在,则将种类数sum加一;如果sum大于k,则将l向右移动一位,直到sum不大于k。每次更新完r之后,判断i-l+1是否大于等于y-x+1来更新答案。这种方法的时间复杂度为O(n)。 以上是两种解决CodeForces - 616D问题的方法。具体的代码实现可以参考引用\[1\]和引用\[2\]中的代码。 #### 引用[.reference_title] - *1* [CodeForces 616 D. Longest k-Good Segment(尺取)](https://blog.csdn.net/V5ZSQ/article/details/50750827)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Codeforces616 D. Longest k-Good Segment(双指针+map)](https://blog.csdn.net/weixin_44178736/article/details/114328999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值