首页 > 其他分享 >3777. 砖块(递推)

3777. 砖块(递推)

时间:2023-03-15 19:13:22浏览次数:43  
标签:3777 int char 砖块 递推 check

https://www.acwing.com/problem/content/3780/
一眼递推,主要有每个砖块只能操作一次,以及操作顺序不影响结果这两个性质
但是第一次写的代码一塌糊涂,这次模仿了一下y总的代码风格,感觉不错

#include<iostream>
#include<vector>

using namespace std;

string s;
int T,n;

void update(char &c)
{
    if(c=='W')c='B';
    else c='W';
}

bool check(char c)//检测str是否全为c,不为c就操作一次
{
    vector<int>res;
    int n=s.size();
    string t = s;
    for(int i=0;i<n-1;i++)//遍历到倒数第二个字符
    {
        if(t[i]!=c)
        {
            update(t[i]);//更新字符串
            update(t[i+1]);
            res.push_back(i);//记录答案
        }
    }
    //不知道n是奇数还是偶数,也不知道最后一个字符是否操作了
    //因此特判最后一位
    if(t.back()!=c)return false;//不是全为c,同时无解
    cout << res.size() << endl;
    for(int i=0;i<res.size();i++)
        cout << res[i]+1 << ' ';
    if(res.size())cout <<endl;
    return true;
}

int main()
{
    cin >> T ;
    while(T -- )
    {
        cin >> n >> s;
        if(!check('B') && !check('W'))cout << -1 << endl;
    }
    return 0;
}

 

标签:3777,int,char,砖块,递推,check
From: https://www.cnblogs.com/lxl-233/p/17219650.html

相关文章

  • 递推法
    概述递推法是一种根据递推关系进行问题求解的方法,常用来进行序列计算根据初始条件,按照一定的规律逐项进行计算,直到得到结果递推法正推和逆推正推小规模问题的解递推......
  • 常系数齐次线性递推学习笔记
    求一个满足\(k\)阶齐次线性递推数列\(a_i\)的第\(n\)项,即:\[f_n=\sum_{i=1}^ka_if_{n-i}\]\(n\leq10^{18},k\leq32000\)。使用矩阵乘法加速可以做到\(O(k^3\l......
  • 关于常系数齐次线性递推的一种实现方式(大常数警告)
    在还没有理解矩阵做法之前,看着一些讲解搓出来的\(O(k\logk\logn)\)做法,估计已经有过了罢。题意:已知递推式\(a_n=\sum\limits_{i=1}^kf_ia_{n-i}\),求\(a_n\)。假......
  • 组合数学_第2章_递推关系与母函数
    第2章递推关系与母函数2.1递推关系递推关系的引入:汉诺塔-维基百科,自由的百科全书(wikipedia.org)斐波那契数-维基百科,自由的百科全书(wikipedia.org)2.2母......
  • POJ 2506 Tiling 递推+大数
    将答案存在ret数组里面n=0的时候居然是1递推关系ret[i]=ret[i-1]+ret[i-2]*2;注意是乘2不是3,当ret[i-2]时候,我们有两个单位可以操作,因为全竖起来的那种,在ret[......
  • acwing 砖块
    原题链接题解分析这道题目使目标字符串变为同一颜色,也就使只有两种情况W/B因为操作时,操作i会将i+1也操作,所以总操作次数为n-1次如果不能变为全黑或全白也就是che......
  • 考研算法辅导课笔记:第十四章--模拟,递推,bfs
    这节课完全是上机题,机试内容。想要保持排名靠前吗?那就多在上面投入时间,一般来说投入时间与排名成正比模拟题先讲一下做过的题目类型。比如说dfs,dp,贪心,从一堆方案中涨到......
  • C++奥赛一本通递推题解
    title:C++奥赛一本通刷题记录(递推)date:2017-11-08tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(递推)2017.11.8Bygwj1139177410斐波那契数列​​op......
  • 递推 Problem M:折线分割平面(HDU 2050)
    ProblemMTimeLimit:2000/1000ms(Java/Other)   MemoryLimit:65536/32768K(Java/Other)TotalSubmission(s):7   AcceptedSubmission(s):5ProblemDescr......
  • 递推 Pell数列
    Pell数列时间限制:1000ms      内存限制:65536KB提交数:1013   通过数:528 【题目描述】Pell数列a1,a2,a3,...a1,a2,a3,...的定义是这样的,a1=1,a2=2,.......