这道题用暴力水过了,蒟蒻是这么想的:枚举两个端点,找最小值,因为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. XBOX ONE游戏开发之登陆服务器(一)

    XBOX ONE游戏开发之登陆服务器(一) XBOX LIVE是微软自已的认证服务器, 当我们开发游戏时,如果是联网游戏,需要自已架设单点登陆(SSO)服务器 这个需要微软提供Relying Part ...

  2. Flex数据绑定陷阱(一)

    Flex数据绑定陷阱:常见的误用和错误 当构建Flex或者Adobe AIR程序时,将一个对象的值自动的传递给另一个对象这种处理是数据绑定最常 用并最有用的特征之一. 尽管如此,同时数据绑定会减缓程序 ...

  3. ubuntu不能登录图形用户界面,游客身份可登陆,命令行可登陆

    ubuntu是13.04版本,我猜其他的版本解决办法大概也一样.当开机进入登陆界面后我们输入密码后并没有进入应该进入的图形用户界面,而是进入一个命令行界面并且一闪而过又回到了登录界面,而已游客的身份却 ...

  4. 时间就像Hourglass一样,积累(沉淀)越多,收获越大

    package cn.bdqn; public class Hourglass { public static void main(String[] args) { for (int i = 2; i ...

  5. poj2632 Crashing Robots

    Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9859   Accepted: 4209 D ...

  6. 将pdf文件通过itunes直接拖到ipad的ibooks里面

    开始不太清楚进行过什么设置,使得以前可以直接通过拖动的方式复制pdf文件到ipad里面的方法不管用了.在帖子http://bbs.weiphone.com/read-htm-tid-864091-pa ...

  7. Window 对象

    Window 对象 Window 对象表示浏览器中打开的窗口. 如果文档包含框架(<frame> 或 <iframe> 标签),浏览器会为 HTML 文档创建一个 window ...

  8. PAT 1010. 一元多项式求导 (25)

    设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为n*xn-1.) 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式:以与 ...

  9. [转]nodejs npm常用命令

    FROM : http://www.cnblogs.com/linjiqin/p/3765772.html npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了n ...

  10. HTML5添加 video 视频标签后仍然无法播放的解决方法 IIS添加MIEI类型

    现象:插入如下代码后仍然无法看视频(注:视频已确认为浏览器支持格式) <video controls="controls" width="500px" h ...