这道题用暴力水过了,蒟蒻是这么想的:枚举两个端点,找最小值,因为shift只能用一次,但是这样10^9*2.5要t,所以减掉只有一个黑点的情况,然后复杂度变为10^9*0.6

#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
int n,ll=-(<<),rr=-(<<),ans;
vector<int>left1;
vector<int>right1;
char c;
char s[];
int sum[];
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
cin>>n;
int pos=;
cin.ignore();
for(int i=;i<=n;i++)
{
c=getchar();
s[i]=c;
sum[i]=sum[i-]+(c=='*');
}
s[]='.';
s[++n]='.';
for(int i=;i<=n;i++)
{
int l,r;
if(s[i]=='*'&&s[i-]=='.'){l=i;left1.push_back(i);}
if(s[i]=='*'&&s[i+]=='.')
{
r=i;
if(r-l+<)
{
left1.pop_back();
continue;
}
right1.push_back(i); }
}
int l=,r=;
int MAX=-(<<);
for(int i=;i<left1.size();i++)
{
for(int j=i;j<right1.size();j++)
{
int a=right1[j]-left1[i]+;
// cout<<"left:"<<left1[i]<<endl;
// cout<<"right:"<<right1[j]<<endl;
int b=sum[right1[j]]-sum[left1[i]-];//操作数a-b+2和b比较
// cout<<"MAX="<<MAX<<" "<<a<<" "<<b<<endl;
if(a-b+<b&&MAX<*b-a-)
{
MAX=*b-a-;
ll=left1[i];rr=right1[j];
}
}
}
// cout<<"ll="<<ll<<" "<<"rr="<<rr<<endl;
if(MAX!=-(<<))
{
ans+=(+rr-ll-*(sum[rr]-sum[ll-]));
}
ans+=sum[n-];
// cout<<sum[n]<<endl;
cout<<ans<<endl;
if(MAX!=-(<<))
{
cout<<ll<<endl;
cout<<"Shift+"<<rr<<endl;
for(int i=ll;i<=rr;i++)
if(s[i]=='.')
{
cout<<"Ctrl+"<<i<<endl;
}
}
if(ll==-(<<)&&rr==-(<<))
{
ll=;rr=;
}
for(int i=;i<ll;i++)
if(s[i]=='*')cout<<"Ctrl+"<<i<<endl;
for(int i=rr+;i<=n;i++)
if(s[i]=='*')cout<<"Ctrl+"<<i<<endl;
fclose(stdin);
fclose(stdout);
return ;
}

100114D的更多相关文章

随机推荐

  1. AC日记——质因数分解 1.5 43

    43:质因数分解 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n. 对于60% ...

  2. JavaScript RegExp 对象

    JavaScript RegExp 对象 RegExp 对象用于规定在文本中检索的内容. 什么是 RegExp? RegExp 是正则表达式的缩写. 当您检索某个文本时,可以使用一种模式来描述要检索的 ...

  3. SOAP-XML请求(iOS应用下集成携程api)

    用携程机票为例: 携程联盟 飞机票.门票 联盟ID:278639 站点ID:739462 密钥KEY:BE57B925-E8CE-4AA2-AC8E-3EE4BBBB686F API_URL:open ...

  4. koala编译scss文件时不支持中文字体的解决方案

    第一种方案:在scss文件第一行加上这行代码@charset "utf-8"; 第二种方案: scss文件编译时候使用ruby环境,出现 Syntax error: Invalid ...

  5. offsetParent详解

    offsetParent与parentNode一样,都是获取父节点,但是offsetParent却有很大的不同之处: offsetParent找有定位的父节点,没有定位默认是body,ie7以下定位在 ...

  6. Nginx+keepalived双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...

  7. js 增删改查方法

    push() 向数组的末尾添加一个或多个元素 pop() 删除数组内部并返回数组的最后一个元素 shift() 把数组内部的第一个元素从其中删除,并返回第一个元素的值 unshift() 向数组外部的 ...

  8. BZOJ 1066 【SCOI2007】 蜥蜴

    Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为$1$,蜥蜴的跳跃距离是d,即蜥蜴可以跳 ...

  9. Android 系统稳定性 - ANR(二)(转)

    编写者:李文栋P.S. OpenOffice粘贴过来后格式有些混乱. 1.2 如何分析ANR问题 引起ANR问题的根本原因,总的来说可以归纳为两类: 应用进程自身引起的,例如: 主线程阻塞.挂起.死循 ...

  10. matlab取整 四舍五入

    Matlab取整函数有: fix, floor, ceil, round.取整函数在编程时有很大用处.一.取整函数1.向零取整(截尾取整)fix-向零取整(Round towards zero):&g ...