• Codeforces Round #619 (Div. 2)D.Time to go


    大毒瘤实现题......

    #include<bits/stdc++.h>
    using namespace std;
     
    long long n,m,k,all;
    vector< pair< int , string > >v1,v2;
     
    void cal(){
        for(int i=0;i<v2.size();i++){
            v1.push_back(v2[i]);
        }
    }
     
    int main(){
        cin>>n>>m>>k;
        if(4*n*m-2*n-2*m<k){
            cout<<"NO"<<endl;
            exit(0);
        }
        
        if(n==1){
            cout<<"YES"<<endl;
            cout<<k<<endl;
            string ppp;
            for(int i=0;i<m-1;i++){
                ppp=ppp+"R";
            }
            for(int i=0;i<m-1;i++){
                ppp=ppp+"L";
            }
            ppp.resize(k);
            for(int i=0;i<k;i++)cout<<1<<" "<<ppp[i]<<endl;
            exit(0);
        }
        else if(m==1){
            cout<<"YES"<<endl;
            cout<<k<<endl;
            string ppp;
            for(int i=0;i<n-1;i++){
                ppp=ppp+"D";
            }
            for(int i=0;i<n-1;i++){
                ppp=ppp+"U";
            }
            ppp.resize(k);
            for(int i=0;i<k;i++)cout<<1<<" "<<ppp[i]<<endl;
            exit(0);
        }
        
        all=0;
        for(int i=1;i<=n;i++){
            if(i==1){
                v1.push_back(make_pair(m-1,"R"));
                v1.push_back(make_pair(m-1,"L"));
                v1.push_back(make_pair(1,"D"));
                all=all+2*(m-1)+1;
            }
            else if(i==n){
                v1.push_back(make_pair(m-1,"R"));
                v1.push_back(make_pair(m-1,"UDL"));
                v1.push_back(make_pair(n-1,"U"));
                all=all+4*(m-1)+(n-1);
            }
            else{
                v1.push_back(make_pair(m-1,"R"));
                v1.push_back(make_pair(m-1,"UDL"));
                v1.push_back(make_pair(1,"D"));
                all=all+4*(m-1)+1;
            }
        }
        while(all>k){
            string pp=v1.back().second;
            string zzz;
            long long tmp=v1.back().second.size();
            long long cishu=v1.back().first;
            v1.pop_back();
            if(all-tmp*cishu>k){
                all-=tmp*cishu;
                continue;
            }
            all-=tmp*cishu;
            long long cur=k-all;
            v2.clear();
            if(cur>=tmp)v2.push_back(make_pair(cur/tmp,pp));
            if((cur%tmp)==0)break;
            for(int i=0;i<cur%tmp;i++)zzz=zzz+pp[i];
            v2.push_back(make_pair(1,zzz));
        }
        cal();
        cout<<"YES"<<endl;
        cout<<v1.size()<<endl;
        for(int i=0;i<v1.size();i++){
            cout<<v1[i].first<<" "<<v1[i].second<<endl;
        }
    }
    View Code

    嘛,考虑怎么(最简单的)走最多,然后判断一下答案,然后输出路径就好了

    思想很简单....

    但我当时打的时候没实现出来.....

    自闭....(被C搞到自闭,最后只剩30+分钟)(然后一直再想着缩圈......(wtsl))

    .....

  • 相关阅读:
    安卓模拟器genimotion安装过程
    python3安装过程
    python基础数据类型数字和字符串
    genimotion模拟器和appium环境配置
    ArcEngine中的ICommand和ITool
    BM.AE介绍
    地图数据和版式数据联动
    BM.AE中的命令工具体系
    2021年1月1日 AutoCAD.Net/C#.Net QQ群:193522571获取任意路径dwg文件内所有块在控件中显示并能选择插入当前模型空间
    2021年1月1日 AutoCAD.Net/C#.Net QQ群:193522571用acedGrRead()函数实现一拖多
  • 原文地址:https://www.cnblogs.com/shatianming/p/12307086.html
Copyright © 2020-2023  润新知