zoukankan      html  css  js  c++  java
  • 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))

    .....

  • 相关阅读:
    my read travel
    OS + CentOS 7 / centos 7 / config / configuration / rescue / rc.local / yum
    my soft / win soft
    如何撰写发明专利申请文件
    专利局审查员如何审专利
    国际专利分类表(2016版)
    手把手教你写专利申请书/如何申请专利
    Packets switched through Linux bridge have very high packet delay variation and latency?
    当心僵尸:过时Linux内核的安全风险
    飞漫魏永明:从MiniGUI看嵌入式十年得与失
  • 原文地址:https://www.cnblogs.com/shatianming/p/12307086.html
Copyright © 2011-2022 走看看