Description

问选择一个序列上的所有数的最少操作次数,跟电脑上选择文件一样,输出操作方案.

Sol

贪心.

用Shift一段文件只能使用一次,之后必须一直按Ctrl了.

然后就是看用Shift选哪段区间了.

如果选 \((l,r)\) 那么答案就是 \((C_{l-1})+(C_{n}-C_{r})+(r-l+1-C_{r}+C_{l-1})+2\) .

化简就是 \(C_{n}+r-2C_{r}-(l-1)+2C_{l-1}+2\)

这个决策点是唯一的,只需要计算答案的时候顺便统计一下 \((l-1)+2C_{l-1}\) 就可以了.

否则就是用Ctrl全选上.

复杂度 \(O(n)\)

Code

#include<cstdio>
#include<iostream>
using namespace std; const int N = 100005; int n;
char c[N];
int s[N]; int ans[3]; int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout); scanf("%d",&n);scanf("%s",c+1);
for(int i=1;i<=n;i++) s[i]=s[i-1]+(c[i] == '*'); // for(int i=1;i<=n;i++) cout<<s[i]<<" ";cout<<endl; int tmp=0,u;ans[0]=n+2;
for(int i=1;i<=n;i++){
u=s[n]-2*s[i]+i+2;
if(2*s[tmp]-tmp+u < ans[0]){
ans[1]=tmp+1,ans[2]=i;
ans[0]=2*s[tmp]-tmp+u;
}
if(2*s[tmp]-tmp > 2*s[i]-i) tmp=i;
} if(ans[0]<s[n]){
printf("%d\n",ans[0]);
printf("%d\n",ans[1]);
printf("Shift+%d\n",ans[2]);
for(int i=1;i<ans[1];i++) if(s[i]-s[i-1]) printf("Ctrl+%d\n",i);
for(int i=ans[1];i<=ans[2];i++) if(s[i]-s[i-1]==0) printf("Ctrl+%d\n",i);
for(int i=ans[2]+1;i<=n;i++) if(s[i]-s[i-1]) printf("Ctrl+%d\n",i);
}else{
printf("%d\n",s[n]);
int f=0;
for(int i=1;i<=n;i++){
if(s[i]-s[i-1]){
if(!f) printf("%d\n",i),f=1;
else printf("Ctrl+%d\n",i);
}
}
} return 0;
}

  

Codeforces Gym 100114 D. Selection的更多相关文章

  1. Codeforces GYM 100114 D. Selection 线段树维护DP

    D. Selection Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descriptio ...

  2. codeforces GYM 100114 J. Computer Network 无相图缩点+树的直径

    题目链接: http://codeforces.com/gym/100114 Description The computer network of “Plunder & Flee Inc.” ...

  3. codeforces GYM 100114 J. Computer Network tarjan 树的直径 缩点

    J. Computer Network Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Des ...

  4. Codeforces Gym 100114 H. Milestones 离线树状数组

    H. Milestones Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descripti ...

  5. Codeforces GYM 100114 C. Sequence 打表

    C. Sequence Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Description ...

  6. Codeforces GYM 100114 B. Island 水题

    B. Island Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Description O ...

  7. Codeforces Gym 100114 A. Hanoi tower 找规律

    A. Hanoi tower Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descript ...

  8. Codeforces Gym 100114 J. Computer Network

    Description 给出一个图,求添加一条边使得添加后的图的桥(割边)最少. Sol Tarjan. 一遍Tarjan求割边. 我们发现连接的两个点一定是这两个点之间的路径上的桥最多,然后就可以贪 ...

  9. Codeforces Gym 101252D&&floyd判圈算法学习笔记

    一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...

随机推荐

  1. Nginx下配置ThinkPHP的URL Rewrite模式和pathinfo模式支持

    前面有关于lnmp环境的搭建,在此就不在赘述.下面就简述thinkPHP如何在nginx下开启url_rewrite和pathinfo模式支持 主要有两个步骤: 一.更改php.ini将;cgi.fi ...

  2. oc必须知道的知识点

    id数据类型 1.通用的指针类型 2.没有*号 3.使用id类型时,不能给对象的属性或成员变量进行赋值 4.可以对其发送任何(存在的)消息   import与@class的区别 1.import会包含 ...

  3. Java数据结构——二叉树

    前序遍历——根 左 右 中序遍历——左 根 右 后序遍历——左 右 根 //================================================= // File Name ...

  4. Java——包的概念及使用

    package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入package关键字即可 编译语法: javac -d . HelloWord.java -d:表示生成目录,生 ...

  5. Js获取指定Url参数

    在 C#.PHP.JSP 中,都有直接获取 Url 中指定参数的方法,但 Javascript 却没有这样的现在方法,得自己写一个.在 Web 的开发过程中,获取 Url 中的参数是十分常用的操作,所 ...

  6. Hibernate与Mybatis的概念区别

    首先简单介绍下两者的概念: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力 ...

  7. Java多线程编程核心技术---对象及变量的并发访问(一)

    synchronized同步方法 "非线程安全"其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"脏读",也就是渠道的数据其实是被更改 ...

  8. aop实现日志(转)

    文章来至于http://www.thinksaas.cn/group/topic/341436/ 第一:>>在spring的配置文件里增加以下配置 <!-- 支持 @AspectJ ...

  9. 是时候放弃Uploadify了

    1.Uploadify是什么? Uploadify是来自国外的一款优秀jQuery插件,主要功能是批量上传文件. 这话是复制百度百科的,是:基于jQuery开发的文件上传插件. 2.为什么大家都在用? ...

  10. C# web api返回类型设置为json的两种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...