【Codeforces Round 1132】Educational Round 61
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的更多相关文章
- 【Codeforces Round 1117】Educational Round 60
Codeforces Round 1117 这场比赛做了\(A\).\(B\).\(C\).\(D\).\(E\),\(div.2\)排名\(31\),加上\(div.1\)排名\(64\). 主要是 ...
- 【Codeforces Rockethon 2014】Solutions
转载请注明出处:http://www.cnblogs.com/Delostik/p/3553114.html 目前已有[A B C D E] 例行吐槽:趴桌子上睡着了 [A. Genetic Engi ...
- 【cf比赛记录】Educational Codeforces Round 78 (Rated for Div. 2)
比赛传送门 A. Shuffle Hashing 题意:加密字符串.可以把字符串的字母打乱后再从前面以及后面接上字符串.问加密后的字符串是否符合加密规则. 题解:字符串的长度很短,直接暴力搜索所有情况 ...
- 【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)
比赛传送门 这场题目前三题看得挺舒服的,没有臃肿的题目,对于我这种英语渣渣就非常友好,但因为太急了,wa了两发A后才意识到用模拟(可以删了,博主真的是个菜鸟),结果导致心态大崩 ---- 而且也跟最近 ...
- 【CodeForces 353 A】Domino
[链接] 我是链接,点我呀:) [题意] [题解] 分类讨论一波 设第一个数组的奇数个数为cnt1 第二个数组的奇数个数为cnt2 显然只有在(cnt1+cnt2)%2==0的情况下. 才可能第一个数 ...
- 【Codeforces Gym 100725K】Key Insertion
Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...
- codeforces 391E2 (【Codeforces Rockethon 2014】E2)
题目:http://codeforces.com/problemset/problem/391/E2 题意:有三棵树.每棵树有ni个结点,加入两条边把这三棵树连接起来,合并成一棵树.使得合并的树 ...
- 【Codeforces 650 D】Zip-line
题意:给一个序列以及\(n\)个查询,每一个查询是问(假装)把第\(a_i\)个数改为\(b_i\)之后原序列的最长上升子序列的长度. 思路:线段树优化\(dp\). 肯定离线做啊. 首先我们考虑\( ...
- 【CodeForces 624D/623B】Array GCD
题 You are given array ai of length n. You may consecutively apply two operations to this array: remo ...
随机推荐
- docker swarm 搭建及跨主机网络互连案例分析
准备工作 安装docker,不建议直接使用Docker官方的yum install docker wget http://yum.dockerproject.org/repo/main/centos/ ...
- 2017-11-26 编程语言试验之Antlr4+Java实现"圈2"
"中文编程"知乎专栏原文 此文涉及的源码版本: program-in-chinese/quan2 声明 代码来源 How to Create Language Using Antl ...
- WebGL学习笔记(一)
作者:朱金灿 来源:http://blog.csdn.net/clever101 (一)WebGL是什么? WebGL是一门在网页上显示三维图形的技术,你可以把它理解为把OpenGL从C/S端搬到了B ...
- python总结(更新中)
1 python函数中的参数传递(注意可变和不可变传递) 可更改(mutable)与不可更改(immutable)对象 在 python 中,strings, tuples, 和 numbers 是不 ...
- 【图解】Web前端实现类似Excel的电子表格
本文将通过图解的方式,使用纯前端表格控件 SpreadJS 来一步一步实现在线的电子表格产品(例如可构建Office 365 Excel产品.Google的在线SpreadSheet). 工具简介: ...
- Jni 线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
此文章是关于NDK线程的第二篇理论知识笔记.主要有两个点,如下: 1.pthread_create(Too many arguements, expected 1) ?2.线程中如何获取JNIEnv? ...
- python中关于类隐藏属性的三种处理方法
关于隐藏属性 引子: 当类的属性或者类实例对象的属性隐藏的时候必须通过存取器方法来获取和设置这些隐藏的属性. 例如: def get_name(self,name): #存取器方法 self. ...
- 数组中的逆序对(Java实现)
来源:剑指offer 逆序对定义:a[i]>a[j],其中i<j 思路:利用归并排序的思想,先求前面一半数组的逆序数,再求后面一半数组的逆序数,然后求前面一半数组比后面一半数组中大的数的个 ...
- (网页)JS和CSS不缓存方法,时间戳
<link ..... href=".....css?time"+new Date()> <script type="text/javascript&q ...
- Python基础点
写这篇的目的并不是要把python的基础知识汇总一遍,而是着重记录一些实际编写代码时遇到的常用/重要的内容 以点的形式记录,之后遇到的内容会慢慢补充进来 1. 斜杠 / :斜字第一笔, 转义用反斜杠 ...