• 题意:你和朋友进行了\(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;
    }

Codeforces Global Round 11 B. Chess Cheater (贪心,结构体排序)的更多相关文章

  1. Codeforces Global Round 11 B. Chess Cheater(贪心)

    题目链接:https://codeforces.com/contest/1427/problem/B 题意 给出一个长为 \(n\) 由 W, L 组成的字符串,如果一个 W 左侧为 W,则它提供 2 ...

  2. Codeforces Global Round 11 个人题解(B题)

    Codeforces Global Round 11 1427A. Avoiding Zero 题目链接:click here 待补 1427B. Chess Cheater 题目链接:click h ...

  3. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. Codeforces Global Round 11 A~D题解

    A.Avoiding Zero 题目链接:https://codeforces.ml/contest/1427 题目大意:给定一个数组a1,a2...,an,要求找出一个a重排后的数组b1,b2,.. ...

  5. Codeforces Beta Round #11 A. Increasing Sequence 贪心

    A. Increasing Sequence 题目连接: http://www.codeforces.com/contest/11/problem/A Description A sequence a ...

  6. Codeforces Global Round 11【ABCD】

    比赛链接:https://codeforces.com/contest/1427 A. Avoiding Zero 题意 将 \(n\) 个数重新排列使得不存在为 \(0\) 的前缀和. 题解 计算正 ...

  7. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final) C. The Delivery Dilemma (贪心,结构体排序)

    题意:你要买\(n\)份午饭,你可以选择自己去买,或者叫外卖,每份午饭\(i\)自己去买需要消耗时间\(b_i\),叫外卖需要\(a_i\),外卖可以同时送,自己只能买完一份后回家再去买下一份,问最少 ...

  8. Codeforces Global Round 11 D. Unshuffling a Deck(构造/相邻逆序对)

    题目链接:https://codeforces.com/contest/1427/problem/D 题意 给出一个大小为 \(n\) 的排列,每次操作可以将 \(n\) 个数分为 \(1 \sim ...

  9. Codeforces Global Round 11 C. The Hard Work of Paparazzi(dp/最长上升子序列)

    题目链接:https://codeforces.com/contest/1427/problem/C 题意 \(r\) 行与 \(r\) 列相交形成了 \(r \times r\) 个点,初始时刻记者 ...

随机推荐

  1. 【Java】集合框架(List Set Map)

    文章目录 集合框架 List(列表) ArrayList 案例 Set HashSet 案例 iterator(迭代器) Map HashMap 案例 集合总结 参考资料 重新搞一波 复习巩固 简单记 ...

  2. 【System】进程,线程和任务之间的区别是什么?

    任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动.一个任务既可以是一个进程,也可以是一个线程.简而言之,它指的是一系列共同达到某一目的的操作.例如,读取数据并将数据放入内存中.这 ...

  3. 【IMP】IMP导入表的时候,如果表存在怎么办

    在imp导入的时候,如果表存在的话,会追加数据在表中, 所以如果不想追加在表中的话,需要将想导入的表truncate掉后,在imp SQL: truncate table TEST1; imp tes ...

  4. 洛谷P1198 [JSOI2008]最大数(线段树/单调栈)

    题目链接: https://www.luogu.org/problemnew/show/P1198 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询 ...

  5. Trino总结

    文章目录 1.Trino与Spark SQL的区别分析 2.Trino与Spark SQL解析过程对比 3.Trino基本概念 4.Trino架构 5.Trino SQL执行流程 6.Trino Ta ...

  6. IOC技术在前端项目中的应用

    目录 背景 什么是IOC 如何实现一个IOC 第一步:实现一个容器 第二步:用好装饰器 第三步:使用容器 扩展和展望 最后 背景 前端发展至今已经过去30余年,前端应用领域在不断壮大的过程中,也变得越 ...

  7. MongoDB 总结

    目录 1. 逻辑结构 2. 安装部署 2.1 系统准备 2.2 mongodb安装 2.2.1 创建所需用户和组 2.2.2 创建mongodb所需目录结构 2.2.3 上传并解压软件到指定位置 2. ...

  8. 太极图HTML+CSS(可旋转)代码记录

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 無法直接連接互聯網,需要使用代理時(Scrapy)

    在windows系統中,如果無法直接連接互聯網,需要使用代理時該怎麽做呢? 1. 在powershell中設置proxy 背景:使用公司電腦,無法直接訪問互聯網,想要訪問互聯網就得使用代理,但是在控制 ...

  10. Web自动化测试python环境中安装 --selenium安装、火狐和火狐驱动版本、谷歌和谷歌驱动版本、测试

    一.安装selenium Windows命令行(cmd)输入pip install selenium(无须指定版本默认最新)或 pip install selenium==3.141.0(可指定版本) ...