Codeforces Round 1132

这场比赛做了\(A\)、\(B\)、\(C\)、\(F\)四题,排名\(89\)。

\(A\)题\(wa\)了一次,少考虑了一种情况

\(D\)题最后做出来,但被\(hack\)了。。。被\(hack\)的原因是没有想到答案会超过\(10^{12}\)(毕竟这个时间上的优化也是在最后迫不得已的情况下加的,就没有考虑正确性。。。

Codeforces 1132 C

题意:给一些区间\([l_i,r_i]\),从中删掉两个,求剩下的区间最多能够覆盖的格子数量。

思路:首先枚举第一个删掉的区间,然后我们可以通过差分来求出每个格子被多少个区间覆盖了,随后求出所有格子中被\(1\)个区间覆盖的数量的前缀和,再枚举第二个删掉的区间,找删掉的\(1\)个区间覆盖的最少的即为答案。

Codeforces 1132 D

题意:给\(n\)个电脑的电量和耗电速度,你可以买一个充电器,它的充电速度是每秒\(v\)单位,\(v\)你自己定。问最小的\(v\)能使得在\(k\)秒内每秒给某电脑充电,没有电脑的电量小于\(0\)。

思路:首先二分\(v\),然后\(check\)的时候是这样的:

维护每一个电脑没电的时间,每次将最早没电的那个给充电一秒,如果最早没电的那个在充点前已经没电了,那么就肯定完蛋,否则一直跑到第\(k\)秒看是否能跑完。

Codeforces 1132 E

题意:给\(cnt_i\)个\(i\)(\(1\leq i\leq 8\)),问用这些数所能构成的最大的不超过\(W\)的数。

思路:随机+贪心。。。

我们考虑将贪心和一个奇奇怪怪的随机算法结合在一起取最大值。

  • 贪心:我们枚举所有的\(8\)个数的排列,然后将第\(i\)个数尽量取到能取的最大值,加入答案。

  • 随机:首先我们考虑约束条件\(t\)。\(t\)从\(1\)开始,然后逐步收敛为\(t\times0.999999\),\(t\times0.999999^2\)、。。。

    然后我们随机地考虑一个数\(i\),再看如果当前的数超过了\(w\),那么我们肯定要将\(i\)取的个数压下去,则随机\([0,nowchosen_i\times t]\)中的一个作为新的\(i\)取的个数。否则我们需要将\(i\)取的个数加上去,则随机\(nowchosen_i+[0,(cnt_i-nowchosen_i)\times t]\)中的一个作为新的\(i\)取的个数。

最后取这两种方法的\(max\)即可。

Codeforces 1132 F

题意:给一个串\(S\),问每次删除连续的一段相同字母,最少删几次将原串删空。

思路:考虑区间\(dp\),我们看要删多少次能把\([l,r]\)删空,那么最终答案就是\(dp[0,n]\)。

那么就枚举最后一次删除的字符是\(c\)。

由于我们可能有\(ababa\)这种情形,不一定只是\(c-\)段间隔起来的区间们需要被单独处理,而是可能是连续的几段,头尾是\(c-\)段即可。

那么就需要另一个\(dp\)。设\(f(i)\)表示到了第几个\(?-\)段,然后转移到\(f(i+j)\),需要在值上加上\(dp[i+1,i+j-1]\)。

然后用\(f(r)\)更新\(dp[l,r]\)就好辣

Codeforces 1132 C 分析

tataky:

首先我们将所有的互不包含的区间们放在\(v\)里,然后看被包含的区间有多少,如果超过2个就直接输出答案,否则需要通过\(dp\)来求:

首先我们考虑\(dp\)的状态。那么首先我们需要记录删掉了多少个区间\((0..2)\),还要看现在已经到了第几个按顺序排列的区间,并且如果删除的是连续的两个区间,还要存前一个没被删掉的区间在当前的区间前面多少个。

所以\(dp(i,j,k)\)表示现在到了第\(i\)个区间,然后已经干掉了\(j\)个区间,现在连续地删掉了\(k\)个区间,最多可以覆盖的格子个数。

考虑转移。我们考虑第\(i\)个区间是否被删掉,如果删掉,那么转移到\(dp(i+1,j+1,k+1)\),否则转移到\(dp(i+1,j,0)\)。

V--gLaSsH0ldEr593--V、neal、kmjp:

和我的思路差不多,是首先用差分求每一个格子被多少个区间覆盖了,然后考虑枚举第一个删除的区间,看将它删去之后所覆盖只被一个区间覆盖的格子数量最少的区间,这就是第二个区间。只需要处理一下被一个区间覆盖的格子数量的前缀和就可以了。

【Codeforces Round 1132】Educational Round 61的更多相关文章

  1. 【Codeforces Round 1117】Educational Round 60

    Codeforces Round 1117 这场比赛做了\(A\).\(B\).\(C\).\(D\).\(E\),\(div.2\)排名\(31\),加上\(div.1\)排名\(64\). 主要是 ...

  2. 【Codeforces Rockethon 2014】Solutions

    转载请注明出处:http://www.cnblogs.com/Delostik/p/3553114.html 目前已有[A B C D E] 例行吐槽:趴桌子上睡着了 [A. Genetic Engi ...

  3. 【cf比赛记录】Educational Codeforces Round 78 (Rated for Div. 2)

    比赛传送门 A. Shuffle Hashing 题意:加密字符串.可以把字符串的字母打乱后再从前面以及后面接上字符串.问加密后的字符串是否符合加密规则. 题解:字符串的长度很短,直接暴力搜索所有情况 ...

  4. 【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)

    比赛传送门 这场题目前三题看得挺舒服的,没有臃肿的题目,对于我这种英语渣渣就非常友好,但因为太急了,wa了两发A后才意识到用模拟(可以删了,博主真的是个菜鸟),结果导致心态大崩 ---- 而且也跟最近 ...

  5. 【CodeForces 353 A】Domino

    [链接] 我是链接,点我呀:) [题意] [题解] 分类讨论一波 设第一个数组的奇数个数为cnt1 第二个数组的奇数个数为cnt2 显然只有在(cnt1+cnt2)%2==0的情况下. 才可能第一个数 ...

  6. 【Codeforces Gym 100725K】Key Insertion

    Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...

  7. codeforces 391E2 (【Codeforces Rockethon 2014】E2)

    题目:http://codeforces.com/problemset/problem/391/E2    题意:有三棵树.每棵树有ni个结点,加入两条边把这三棵树连接起来,合并成一棵树.使得合并的树 ...

  8. 【Codeforces 650 D】Zip-line

    题意:给一个序列以及\(n\)个查询,每一个查询是问(假装)把第\(a_i\)个数改为\(b_i\)之后原序列的最长上升子序列的长度. 思路:线段树优化\(dp\). 肯定离线做啊. 首先我们考虑\( ...

  9. 【CodeForces 624D/623B】Array GCD

    题 You are given array ai of length n. You may consecutively apply two operations to this array: remo ...

随机推荐

  1. webpack4 系列教程(七): SCSS提取和懒加载

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)webpack4 系列教程(七): SCSS 提取和懒加载. 个人技术小站: https://god ...

  2. Python 映射

    python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. ...

  3. JS性能优化 之 文档片段 createDocumentFragment

    我们用原生JS进行开发时,经常会用到两种更新DOM节点的方法:innerHTML 和 appendChild() .其中 innerHTML 会完全替换掉原先的节点内容,如果我们是想向元素追加子节点的 ...

  4. 基础篇|一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  5. WebGIS中利用AGS JS+eCharts实现一些数据展示的探索

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 eCharts提供了迁徙图.热点图.夜视图等跟地图能够很好的 ...

  6. JS笔记(三):数组、函数、类

    (一) 数组 //创建数组 var the_array = [1,2,3,4,'5'] console.log(the_array[0]) //读取索引为0的数据 the_array[5] = '赋值 ...

  7. Spring Boot(二):Web 综合开发

    详见:http://www.ityouknow.com/springboot/2016/02/03/spring-boot-web.html Web 开发 Spring Boot Web 开发非常的简 ...

  8. js实现页面锚点定位动画滚动

    项目上需要的效果,个人不想用jquery实现,想着用js自己试试,花了点儿时间,终于实现.. 上干货.. function scrollTo(y, duration) { /*y:目标纵坐标,dura ...

  9. Fragment分解使用

    Fragment碎片:作为Activity的一部分,不能单独使用: 1. Fragment特点: (1)一个Fragment可以在多个Activity中重用: (2)一个Activity内部可以嵌入多 ...

  10. git merge 步骤

    这两天用git比较多,自己学习的过程踩了不少误区,特意记录下来. 当多人合作开发使用git作为代码管理仓库时,要注意自己的更新不能冲掉别人的更新,因为自己一开始不了解的时候就出现了这种情况.首先一定要 ...