• codeforces round #632 D (思维vector的使用)


    链接:https://codeforces.com/contest/1333

    题意:简单来说,就把RL 换成LR直到最后变成LLLLLRRRRR,问每次的L的位置,(每隔一秒至少一对孩子转头即,每次l至少输出一个位置)n只有三千,暴力就好

    c++操作比较神奇....for(int x : v),v是一个容器,其中x就类似于一个迭代器,用于遍历v中的所有元素;

    设进行了x轮,共操作了cnt次,有解的情况只有当x <= k,k <= cnt,贪心的考虑一下先一个一个输出之后凑够k个就行;

    代码:

     

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=2e5+10;
    int main()
    {
        int n,k;
        char s[3010];
        scanf("%d%d",&n,&k);
        scanf("%s",s);
        vector<vector<int> > v;
        int cnt=0;
        while(1)
        {
          vector<int> v1;
          for(int i=0; i<n-1; i++)
          {
            if(s[i]=='R'&&s[i+1]=='L')
            {
                v1.push_back(i);
                cnt++;
                swap(s[i],s[i+1]);
                i++;
            }
          }
          if(v1.empty())
            break;
          v.push_back(v1);
        }
        if(cnt<k||v.size()>k)
        {
            printf("-1
    ");
            return 0;
        }
        for(int i=0; i<v.size(); i++)
        {
            while(v[i].size()>1&&k>v.size())//保证刚好k组数
            {
                k--;
                printf("1 %d
    ",v[i].back()+1);
                v[i].pop_back();
            }
            printf("%d ",v[i].size());
            for(int j : v[i])//类似迭代器
                printf("%d
    ",j+1);
        }
    }
    
    
    
     
  • 相关阅读:
    数组去重的方法
    ES5-ES8 数组拥有的方法
    常用的git操作命令
    vue中使用vue-echarts
    js的深复制与浅复制
    express 4.x 搭建Node项目框架
    网页布局分类
    shadow---实例
    animate动画解析
    3d------正方体
  • 原文地址:https://www.cnblogs.com/sweetlittlebaby/p/12667850.html
Copyright © 2020-2023  润新知