[codeforces/edu30]总结(E)
链接:http://codeforces.com/contest/873/
A题:
贪心,把最大的k个数变成x即可。
B题:
从左向右枚举右端点,维护balance的最长长度。任意一个子串可以看做两个前缀相减,对于已知当前右端点中1比0多多少个,只需要减去前面的某个前缀,在这个前缀中1比0也多这么多就可以了。所以开一个数组,维护1比0多i个的最左边的前缀的位置。
C题:
每一列相互独立单独处理,对于每一列贪心的选择去掉多少个1就可以了(显然只会从前往后逐次去掉)。
D题:
首先注意到,k是偶数的时候是无解的,因为调用的次数必然是奇数。
那么当k是奇数的时候,只要k不超过n个数能够调用的上界,就可以通过递归去构造。
上界可以用递推得到。构造可以用递归得到。
#include<bits/stdc++.h>
using namespace std; const int maxn=;
int cnt[maxn];
int a[maxn];
int tot; void print(int n,int k,int mi,int ma)
{
if (k==)
{
for (int i=;i<n;i++) a[tot++]=mi+i;
}
else if (cnt[n]==k)
{
for (int i=n-;i>=;i--) a[tot++]=mi+i;
}
else
{
int l=,r=n;
int mid=(l+r)/;
if (cnt[mid-l]>=k-)
{
int cou=mid-l;
print(mid-l,k-,ma-cou+,ma);
print(r-mid,,mi,ma-cou);
}
else
{
int cou=mid-l;
print(mid-l,cnt[mid-l],ma-cou+,ma);
print(r-mid,k-cnt[mid-l]-,mi,ma-cou);
}
}
} int main()
{
int n,k;
scanf("%d%d",&n,&k);
cnt[]=;
for (int i=;i<=;i++)
{
int l=,r=i;
int mid=(l+r)/;
cnt[i]=cnt[mid-l]+cnt[r-mid]+;
}
if (cnt[n]<k || k%==) printf("-1");
else
{
print(n,k,,n);
for (int i=;i<n;i++) printf("%d ",a[i]);
}
return ;
}
problem D
E题:
待补。
F题:
reverse一下,不能以某个位置结尾变成不能以某个位置开头。然后做一次后缀数组,得到height数组。要想让|a|·f(a)最大,那么a必然是某一个后缀。如果一个后缀的开头不是bad position,直接把这个后缀的长度更新答案。那么对于要匹配两个及以上后缀的,这个结果基本上跟height数组形成的柱状图有关,类似于用单调栈维护一下以每个位置为扩展的最大面积即可。
[codeforces/edu30]总结(E)的更多相关文章
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- hello word!------为什么开通博客以及自我介绍
来北京已经一年半的日子了,已经完全成功熟练的成为了另一个我,没有了半年前刚来时的那种焦虑.急躁和格格不入. 回想起来那段时间,大概是我人生中非常重要的时期了,去年那个夏天,只身一人背上行囊踏上了北上的 ...
- 【WXS数据类型】Number
Number包括整数与小数. 属性: 名称 返回 说明 [Number].constructor 值为字符串“Number” 返回该类型的结构字符串 方法: 原型:[Number].toString( ...
- HADOOP-输出数据实体类承载
新建一个bean包: 1.实现Writerable 2.有一个空的构造方法 代码实现: import java.io.DataInput; import java.io.DataOutput; imp ...
- 微软的XML可视化编辑器:XML Notepad 2007
最近项目需要定义xml协议格式,编写xml文件比较多,之前使用xml spy工具,但是不够轻量级. 微软提供的xml nodepad 2007很实用,希望能给大家提供帮助. 运行后的界面 下载地址:h ...
- (转载)IE8+兼容经验小结
本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...
- js经典试题之数据类型
js经典试题之数据类型 1:输出"B" + "a" + + "B" + "a"的值: 答案:BaNaNa. 分析:因为+ ...
- Sublime Text 插件之:MarkDown
Sublime Text 插件之:MarkDown 喜欢写文档的同学应该离不开 MarkDown ,ST(Sublime Text)的插件 Markdown Preview 就支持实时在浏览器中预览p ...
- 硬件PCB Layout布局布线Checklist检查表(通用版)
按部位分类 技术规范内容 1 PCB布线与布局 PCB布线与布局隔离准则:强弱电流隔离.大小电压隔离,高低频率隔离.输入输出隔离.数字模拟隔离.输入输出隔离,分界标准为相差一个数量级.隔离方法包括:空 ...
- JavaScript初探系列之String的基本操作
1.字符串转换 字符串转换是最基础的要求和工作,你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: var myStr = num.toString(); // "19& ...
- 【.NET】- async await 异步编程
为什么需要异步,异步对可能起阻止作用的活动(例如,应用程序访问 Web 时)至关重要. 对 Web 资源的访问有时很慢或会延迟. 如果此类活动在同步过程中受阻,则整个应用程序必须等待. 在异步过程中, ...