(搬运一下部分官方题解)

Description

link

或者洛谷link

到时候就有中文翻译了,不过这个题机翻没毛病

Solution

首先这是一道模拟题……

不要管题目中的循环移动的问题,直接按照怎么着走能走最长

其实比较直观的就是一直走到右边,然后向下,再到左边……

到最低行最后一个的时候就原路返回(我比赛的时候真么想的)

但是我们就忽略掉了纵着来的路径

所以我们在非首行中应该把上下的路径补掉

就是把 \((L/R)\) 改成 \(UD(L/R)\)

然后还得每一行进行原路返回(就是每一次都从最左边进入下一行)

如果所有的这些路径个数加起来都不够,就 \(puts("NO")\)

这个题细节还是比较多……

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
namespace yspm{
inline int read()
{
int res=0,f=1; char k;
while(!isdigit(k=getchar())) if(k=='-') f=-1;
while(isdigit(k)) res=res*10+k-'0',k=getchar();
return res*f;
}
const int N=1e5+10;
vector<pair<int,string> > vec1,vec2;
int n,m,k,sum,now; string tmp;
inline void fix(vector<pair<int,string> >&vec)
{
vec2=vec; vec.clear(); int sz=vec2.size();
for(int i=0;i<sz;++i) if(vec2[i].first) vec.push_back(vec2[i]); return ;
}
signed main()
{
n=read(); m=read(); k=read();
for(int i=1;i<=n;++i)
{
vec1.push_back(make_pair(m-1,"R"));
if(i==1) vec1.push_back(make_pair(m-1,"L"));
else vec1.push_back(make_pair(m-1,"UDL"));
if(i==n) vec1.push_back(make_pair(n-1,"U"));
else vec1.push_back(make_pair(1,"D"));
}
int sz=vec1.size(); for(int i=0;i<sz;++i){sum+=vec1[i].first*vec1[i].second.size();}
if(sum<k) return puts("NO"),0;
while(sum>k)
{
tmp=vec1.back().second; now=vec1.back().first*vec1.back().second.size();
vec1.pop_back(); sum-=now;
if(sum>=k) continue; now=k-sum;
if(now/tmp.size()>0) vec1.push_back(make_pair(now/tmp.size(),tmp));
tmp.resize(now%tmp.size());
if(tmp.size()>0) vec1.push_back(make_pair(1,tmp));
sum=k;
} puts("YES"); fix(vec1);
sz=vec1.size(); printf("%lld\n",sz);
for(int i=0;i<sz;++i) printf("%lld %s\n",vec1[i].first,vec1[i].second.c_str());
return 0;
}
}
signed main(){return yspm::main();}

Codeforces1301D Time to Run的更多相关文章

  1. can't run roscore 并且 sudo 指令返回 unable to resolve host

    I'm using ubuntu14 LTS. Problems: 1. When run roscore, got a mistake and an advice to ping the local ...

  2. DotNet Run 命令介绍

    前言 本篇主要介绍 asp.net core 中,使用 dotnet tools 运行 dotnet run 之后的系统执行过程. 如果你觉得对你有帮助的话,不妨点个[推荐]. 目录 dotnet r ...

  3. 布里斯班Twilight Bay Run半程马拉松

    自从8月3日跑了半马以后,又一鼓作气报了11月份的西昌马拉松.与第一次马拉松的只求完赛目标不同,第二次当然想取得一个更好的成绩.所以8月份练的比较猛,基本上是练2.3天休息一天,周么还要拉个长于21公 ...

  4. SVN:Previous operation has not finished; run 'cleanup' if it was interrupted

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html cleanup failed to process the following ...

  5. linux 环境下运行STS时 出现must be available in order to run STS

    linux 环境下运行ECLIPSE时 出现 “ A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avai ...

  6. 0040 Java学习笔记-多线程-线程run()方法中的异常

    run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...

  7. jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.

    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...

  8. .NET跨平台之旅:探秘 dotnet run 如何运行 .NET Core 应用程序

    自从用 dotnet run 成功运行第一个 "Hello world" .NET Core 应用程序后,一直有个好奇心:dotnet run 究竟是如何运行一个 .NET Cor ...

  9. 【svn】在提交文件是报错:previous operation has not finished;run 'cleanup' if it was interrupted

    1.svn在提交文件是报错:previous operation has not finished;run 'cleanup' if it was interrupted2.原因,工作队列被占用,只需 ...

随机推荐

  1. id就是方法名,如何调用;批量input怎么获取他们的key值作为参数

    1.很多Dom的时候,一个个写会比较麻烦,我用ID记载他的方法名: 2.很多input,在数据交互的时候一个个获取会比较繁琐,给一个方法,批量获取. <div id="searchSt ...

  2. 强制浏览器以IE8版本运行

    做为一个开发人员,经常被要求前端页面兼容ie8及以上,所以有时候我们希望ie默认以ie8的版本打开我们的页面. 1.“文档模式”: 在html页面中加入类似下面的代码: <meta http-e ...

  3. 18 12 29 css background

    background属性 属性解释 background属性是css中应用比较多,且比较重要的一个属性,它是负责给盒子设置背景图片和背景颜色的,background是一个复合属性,它可以分解成如下几个 ...

  4. Dlib笔记二:matrix或array2d与cv::Mat的互转

    因为经常习惯的用OpenCV来做图像处理,所以难免希望将其他库的图像数据与OpenCV互转,所以今天就记录下这种互转的方法. 1.dlib::matrix/dlib::array2d转cv::Mat ...

  5. Mycat简介及适用场景

    官网:http://www.mycat.io/ 一.Mycat是什么 Mycat是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的 Server,前端用户可以把它看作是一个数据库代理,用 ...

  6. re模块3

    #分组 () print(re.findall("(ad)/(vv)","adddad/vvdddddddddd")) print(re.findall(&qu ...

  7. 题解 P1317 【低洼地】

    题目 这题挺简单的,没必要用数组 [分析] 需要判断的是低洼地的数量 通过对题目中图进行分析,显然可以发现低洼地的定义: 若数组中存在一个数值相同的连续区间,这个区间端点外相邻两点的数值都大于该区间的 ...

  8. linux-文件系统和目录

    linux目录说明 /:系统根目录 /usr:用户的程序 /home:默认创建用户在此目录下创建用户主目录 /etc:存放系统配置文件.服务脚本,一些程序配置文件 /bin:常用命令 /sbin:常用 ...

  9. SQL基础教程(第2版)第2章 查询基础:练习题

    SELECT product_name, regist_date FROM Product WHERE regist_date > '2009-04-28'; ① ~ ③中的 SQL 语句都无法 ...

  10. cafe-ssd數據集訓練

    训练方式::https://blog.csdn.net/xiao_lxl/article/details/79106837 caffe-ssd训练自己的数据集 https://blog.csdn.ne ...