首页 > 其他分享 >Educational Codeforces Round 147 (Rated for Div. 2)

Educational Codeforces Round 147 (Rated for Div. 2)

时间:2023-04-24 19:13:50浏览次数:53  
标签:147 Educational Rated 删除 染色 最大值 最小值 需要 我们

题目链接

B

核心思路

真的需要加强了,看到这个最大值和最小值我们其实也需要往对应的最大值和最小值的相关操作去想,不如前缀最小值/前缀最大值或者是后缀最小值/后缀最大值。

这里一个比较直接的想法就是想找到不同的地方,然后看不可以扩展。那么怎么看是否可以扩展呢,如果是左边的话,就看当前的位置是不是小于区间最小值,如果小于那么就不会当前位置加入之后这个位置还是不会改变,所以就可以向左边扩展。右边也是这样子扩展就好了。

最后看下区间的长度就好了。

C

我们可以想一下为什么需要设立一个这样子的操作呢。也就是挖掘操作的性质,举一个例子吧:不如\(absdefaeiawxja\).我们假设最后删除得只剩下一个a,那么其实我们需要删除最长的a与a之间的段其他的自然也就是会删除了。因为只要不相邻就都可以删除了。

而像我们中间的段我们每次其实都是可以删除一半的,所以我们可以预处理出来f数组就好了。

总的思路就是先找到最后删得剩下哪一个字母,然后需要最大的段就好了。然后答案就是26个英文字母取min。

需要注意的是我们删除的边界比如\(asdwokf\).所以我们需要将-1插入开头和n(表示的字符串的长度)插入末尾。

D

首先我们需要明白的是最终的答案之和两个因素有关:

  1. 我们最后所在的位置
  2. 我们染色的段。

如果我们染色到某一个段发现,这个加上这个段的长度之后大于我们需要染色的个数。那么我们就需要思考我们需要替换掉前面的哪一些段呢,假设我们再走x步去替换掉前面长为x的段。那么我们知道我们节省下来的贡献就是\(2-x\).很显然只有x=1的时候我们才是最优的。所以结论就是替换掉前面长度为1的染色的段。

然后整个题目也就解决了。

代码实现画一个图就好了,别忘记加上前面的已经染色的格子的额外代价,就是每染色一次都需要花费2的额外代价。

标签:147,Educational,Rated,删除,染色,最大值,最小值,需要,我们
From: https://www.cnblogs.com/xyh-hnust666/p/17350553.html

相关文章

  • Educational Codeforces Round 127 (Rated for Div. 2)
    题目链接D核心思路首先挖掘下操作的性质吧:x>1&&x+3<10:1xx+1x+2x+310我们可以发现这样子好像对于我们的结果是没有影响的,答案还是9.所以这个性质就挖掘出来了啊,只要我们把一段连续的插入到对应的区间里面就好了。也就是只要这个区间的左端点小于插入连续的数的最小值,......
  • Educational Codeforces Round 147 (A-D)
    A.Matching橘子熊:这题太简单了我不想写题面Description给定给一个带问号的字符串,求有多少种可能的数字Input多次询问,一次一个字符串Output对于每次询问,输出可能的数字的总数数据范围与约定2e5次询问,单词询问不超过5个字符思路主要思路签到题大部分情况下,一个......
  • Educational Codeforces Round 39 (Rated for Div. 2) -- D. Timetable (DP)
    写得很折磨人,每次dp都写个一个多小时,写出来明明觉得不难.题目大意:可以进行K次操作,把删除1,进行k次操作后每行第一个1和最后一个1的位置相减的绝对值加1得到的结果最小。做法:每次肯定是要从左删或者从右边删,然后顺着这个思路,先把每行的进行小于等于k次操作时,每行最小......
  • CF ER147 div.2
    A 简单计数题,判断前导零。#include<bits/stdc++.h>usingnamespacestd;intT;intmain(){ cin>>T; while(T--){ chars[10]; cin>>s; intn=strlen(s); intans=1; for(inti=0;i<n;i++){ if(s[i]=='?'&&a......
  • Educational Codeforces Round 147 (Rated for Div. 2)
    EducationalCodeforcesRound147(RatedforDiv.2)链接EducationalCodeforcesRound147(RatedforDiv.2)A题如果第一位数是0,直接打印0如果第一位数是'?',有9个数可以选择,如果其他位数是'?',有10中情况选择,相乘就可以了#include<iostream>#include<algo......
  • Educational Codeforces Round 113 (Rated for Div. 2)
    题目链接B核心思路这个题目我觉得很好。首先分析下吧,如果有人需要执行操作二那么我们肯定就是给他们都打上平局是最优的。那么如果有人需要执行操作一呢,那么我们就可以把这些需要执行操作1的都搞一起。然后是他们成一个环。这样肯定就保证了每个人都会赢上一次。C核心思路......
  • [Educational Codeforces Round 118 (Rated for Div. 2)]题解
    A题意:给定两个数,每一个数有两个属性,第一个属性是p1,第二个属性是p2.表示这个数有p2个后缀0.这个数本身等于p1后面加p2个0.问给你两个这种数,判断大小。思路:赛场上想到的:如果最终的长度不一样,可以直接根据长度判断。如果相等,就把后缀0加上直接比较大小就可以(比较字典序的大小),但......
  • Educational Codeforces Round 110 (Rated for Div. 2) C. Unstable String(状态机)
    https://codeforces.com/contest/1535/problem/C题目大意:给定一个字符串s,由10?组成:?每次都可以任意替换成0或者1问我们这个子字符串中,能够组成010101这样两两互不相等的字符串的数量最大是多少?input30?10????10??1100output8625#include<bits/stdc++.h>usin......
  • Educational Codeforces Round 120 (Rated for Div. 2)
    题目链接C核心思路这是一个很好的二分的题目,首先我们判断题目可不可二分,很显然是可以的把。因为假设我们x是可以的话,x+1...肯定也是可以的,但是x-1,x-2....这些又是不可以的。好,接下来思考二分刚开始的左右边界,左边届很好想,关键是右边界。这个其实也不难。因为我们最坏肯定是全......
  • CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!)
    CodeTONRound2(Div.1+Div.2,Rated,Prizes!)A.Two0-1Sequencesvoidsolve(){intn=read(),m=read(),ans=1;strings,t;cin>>s>>t;//cout<<s<<t<<endl;for(inti=t.size()-1,j=s.size()-1;i>=1&......