• 题意:你和朋友进行了\(n\)个回合的棋艺切磋,没有平局,每次要么输要么赢,每次赢可以得一分,假如前一局也赢了,那么可以得两分,结果已成定局,但是你确可以作弊,最多修改\(k\)个回合的结果,问你作弊后最多可以得多少分.

  • 题解:假如有\(WLW\),我们让中间的\(L\)变成\(W\),那么就能得到\(5\)分,贪心,然后发现,优先让两个\(W\)中间的\(L\)变为\(W\)是最优的,我们可以求所有两个\(W\)之间\(L\)的数量并且记录位置,然后按数量排序,先让含\(L\)数量小的变成\(W\),全部改完后\(k\)可能还会有剩余,再优先将\(W\)的相邻的\(L\)变成\(W\),如果还有剩余,就将\(L\)变为\(W\),此时我们修改得到的字符串一定是最优的,计算答案即可.

  • 代码:

    struct misaka{
    int pos;
    int val;
    bool operator < (const misaka & mikoto) const{
    return val<mikoto.val;
    }
    }e; int t;
    int n,k;
    string s;
    vector<misaka> v; int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--){
    cin>>n>>k;
    cin>>s;
    v.clear();
    int len=(int)s.size();
    int l=0,r=0;
    while(l<len && s[l]=='L') l++;
    r=l;
    while(r<len){
    while(r<len && s[r]=='W') r++;
    if(r>=len) break;
    l=r-1;
    while(r<len && s[r]=='L') r++;
    if(r>=len) break;
    e.pos=l+1;
    e.val=r-l-1;
    v.pb(e);
    }
    sort(v.begin(),v.end());
    for(auto o : v){
    int p=o.pos;
    while(s[p]=='L' && k){
    k--;
    s[p]='W';
    p++;
    }
    }
    for(int i=0;i<len;++i){
    if(s[i]=='W' && k){
    if(s[i+1]=='L') {s[i+1]='W';k--;}
    }
    } for(int i=len-1;i>=0;--i){
    if(s[i]=='W' && k){
    if(s[i-1]=='L') {s[i-1]='W';k--;}
    }
    }
    for(int i=0;i<len;++i){
    if(s[i]=='L' && k){
    s[i]='W';
    k--;
    }
    }
    int ans=0;
    for(int i=0;i<len;++i){
    if(s[i]=='W'){
    if(s[i-1]=='W') ans+=2;
    else ans++;
    }
    } cout<<ans<<'\n';
    } return 0;
    }

最新文章

  1. Struts2框架深入详解版
  2. webpack 往右一点之 “模块这个东西”
  3. GridView数据格式化
  4. [转]如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
  5. read 计时命令
  6. ThinkPHP多表操作
  7. 从0开始学习react(二)
  8. Ajax发送Post请求
  9. “弹出DVD驱动器错误”解决方法
  10. 360极速浏览器 HTML5实验室
  11. PyMOTW: heapq¶
  12. centos5.11架设svn(svn系列 架设服务器 知识一总结)
  13. I/O复用中的 select poll 和 epoll
  14. python3+arcface2.0 离线人脸识别 demo
  15. ELK-安装logstash
  16. bzoj4671: 异或图——斯特林反演
  17. 【nodejs】初识 NodeJS(二)
  18. window、location、location.href、self、top简单介绍
  19. 开源HTTP解析器---http-parser和fast-http
  20. Linux系统安装(centos6.8)符破解码

热门文章

  1. kubernets之持久卷的动态配置
  2. MAVEN编译NIFI源码
  3. Redis 实战 —— 01. Redis 数据结构简介
  4. VPS下环境漏洞部署
  5. spring boot 集成 websocket 实现消息主动
  6. JavaScript中eval的替代方法
  7. Docker容器日志清理方案
  8. nginx.service: control process exited, code=exited status=1
  9. Mac 禁用动画
  10. What is :: (double colon) in Python when subscripting sequences?