CF1301D Time to Run 题解

思维题。

分析

把一个格子视作一个点,每个点的度数都是偶数,所以这是一张欧拉图。而需要走遍整个方格图,可以证明只要 \(k\) 不超过 \(4nm-2n-2m\) 就一定有解。

很明显存在很多种方案,这里我用的方案是:从左上角出发,向右走 \(m-1\) 步到头,再向左走 \(m-1\) 步回来,向下走一步。重复以上步骤,直到走到左下角。然后向右走一步,向上走 \(n-1\) 步到头,向下走 \(n-1\) 步回来。重复上面步骤,直到走到右下角。这时候你会发现你已经走完了这张网格图里的所有边。注意在走的过程中如果步数用完了中断输出答案即可。

代码

#include <bits/stdc++.h>
using namespace std;
namespace Raiden
{
int const N = 3005;
int n, m, k, num[N], cnt;
char ans[N][5];
signed work()
{
cin >> n >> m >> k;
if (k > 4 * n * m - 2 * n - 2 * m)return cout << "NO" << endl, 0;
int anss = 0, sum = k;
cout << "YES" << endl;
while (k)
{
int _min;
if (sum - k < m - 1)
{
_min = min(k, m - 1);
num[++cnt] = _min;
ans[cnt][0] = 'R';
}
else if (sum - k < 2 * (m - 1))
{
_min = min(k, m - 1);
num[++cnt] = _min;
ans[cnt][0] = 'L';
}
else if (sum - k < 2 * (m - 1) + 1)
{
_min = 1;
num[++cnt] = _min;
ans[cnt][0] = 'D';
}
else if (sum - k >= 4 * n * m - 2 * n - 2 * m - (n - 1))
{
cnt++;
_min = min(k, n - 1);
num[cnt] = _min;
ans[cnt][0] = 'U';
}
else if (anss % 3 == 0)
{
_min = min(k, m - 1);
if (_min)
{
cnt++;
num[cnt] = _min;
ans[cnt][0] = 'R';
}
anss++;
}
else if (anss % 3 == 1)
{
_min = min(k, 3 * (m - 1));
int __min = _min / 3;
if (__min)
{
cnt++;
num[cnt] = __min;
ans[cnt][0] = 'U';
ans[cnt][1] = 'D';
ans[cnt][2] = 'L';
}
if (_min % 3 == 1)
{
num[++cnt] = 1;
ans[cnt][0] = 'U';
}
if (_min % 3 == 2)
{
num[++cnt] = 1;
ans[cnt][0] = 'U';
ans[cnt][1] = 'D';
}
anss++;
}
else
{
_min = 1;
num[++cnt] = _min;
ans[cnt][0] = 'D';
anss++;
}
k -= _min;
}
cout << cnt << endl;
for (int i = 1; i <= cnt; i++)cout<< num[i] << " " << ans[i] << endl;
return 0;
}
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
return Raiden::work();
}

题解:CF1301B Motarack's Birthday的更多相关文章

  1. Codeforces Round #619 (Div. 2) A~D题解

    最近网课也开始了,牛客上一堆比赛题目也没补,所以就D题后面的也懒得补了 A.Three String 水题 #include <cstdio> #include <cstring&g ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  10. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Linux信号量(3)-内核信号量

    概念 Linux内核的信号量在概念和原理上和用户态的System V的IPC机制信号量是相同的,不过他绝不可能在内核之外使用,因此他和System V的IPC机制信号量毫不相干. 如果有一个任务想要获 ...

  2. .NET 9发布的最后一个预览版Preview 7, 下个月发布RC

    微软在2024年8月9日 发布了.NET 9 Preview 7[1],这是它在2024 年 11 月 12 日 RTM 之前进入发布候选阶段之前的最后预览版, 将在.NET Conf 2024 一起 ...

  3. NetCore消息管道 Middleware

    中间件定义 /// <summary> /// 自定义中间件1 /// </summary> public class MyMiddleware : IMiddleware { ...

  4. 华为交换机S5700-52C-EI开启ssh服务

    参考资料 https://blog.csdn.net/qq_34815358/article/details/83865527 https://www.cnblogs.com/Cyanix/p/999 ...

  5. 怎样在局域网中给网站作ssl认证,使其能以https协议访问(转)

    如果要在局域网达到效果需要满足以下几点要求: 1. 证书由可信任的CA机构颁发 2. 证书在有效期 3. 访问地址和证书的认证地址一致 说明: 1. 需要在局域网内构建CA机构 2. 证书的有效期建议 ...

  6. Gluon 编译 JavaFx -> android apk

    Gluon 编译 JavaFx -> android apk 本文的内容属 在linux服务器上 搭建 Gluon 编译 android-apk 环境 这一篇文章直接跟着官网操作一次性成功 虚拟 ...

  7. Python 在PDF中添加条形码、二维码

    在PDF中添加条码是一个常见需求,特别是在需要自动化处理.跟踪或检索PDF文件时.作为一种机器可读的标识符,PDF中的条码可以包含各种类型的信息,如文档的唯一标识.版本号.日期等.以下是一篇关于如何使 ...

  8. C++: 如何高效地往unordered_map中插入key-value

    C++: unordered_map 花式插入key-value的5种方式 前言 无意中发现std::unordered_map.std::map等插入key-value对在C++17后竟有了 ins ...

  9. SQL全表扫描优化基础知识

    1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like '%...%'(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低:另外,由于匹配算法的 ...

  10. Angular 18+ 高级教程 – Animation 动画

    前言 Angular 有一套 built-in 的 Animation 方案.这套方案的底层实现是基于游览器原生的 Web Animation API. CSS Transition -> CS ...