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))

    .....

  • 相关阅读:
    小白初学iOS中OTA部署(适应iOS7.1)
    CocoaPods管理本地库简单步骤
    CocoaPods问题记录
    UIPanGestureRecognizer下方法
    2013年度总结(反思篇)
    iOS7中cell的分割线右移的解决方法
    接触CocoaPods遇到的问题
    iOS摄像头问题
    iPhone4激活出错,菜鸟试验!!!!!
    详解UIPickerView
  • 原文地址:https://www.cnblogs.com/shatianming/p/12307086.html
Copyright © 2011-2022 走看看