Smzzl with Greedy Snake 模拟-贪心-阅读理解
题意 :
- 给出n个食物及坐标,必须按顺序吃掉,且只有在吃掉一个后,才会出现下一个。
- 从(x, y)出发,沿着d方向,每次可以前进或者顺时针或者逆时针转90度,用时都为1,求构造用时最少的方案并记录方案。
思路 :
- 因为只有在吃掉一个后才会出现下一个,所以只要简单模拟,贪心地在当前吃完的地方直接比较两种转弯方式即可,不需要考虑更后面的步数,互不影响。
- 当前方向如果和某个方向一致,那需要先走这个方向,但实际写可以两种方式都run一遍比较方案长短。
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <unordered_map>
#include <unordered_set>
#include <set>
#include <map>
#define endl '\n'
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
using namespace std;
const double pi = acos(-1);
typedef long long ll;string go(int ex, int ey, int &d, int sx, int sy)
{string ans = "";if (ex < sx && d != 1){if (d == 0) ans += "c";if (d == 2) ans += "u";if (d == 3) ans += "cc";d = 1;}if (ex > sx && d != 3){if (d == 0) ans += "u";if (d == 1) ans += "cc";if (d == 2) ans += "c";d = 3;}ans += string(abs(ex - sx), 'f');if (ey < sy && d != 0){if (d == 1) ans += "u";if (d == 2) ans += "cc";if (d == 3) ans += "c";d = 0;}if (ey > sy && d != 2){if (d == 0) ans += "cc";if (d == 1) ans += "c";if (d == 3) ans += "u";d = 2;}ans += string(abs(ey - sy), 'f');return ans;
}string go2(int ex, int ey, int &d, int sx, int sy)
{string ans = "";if (ey < sy && d != 0){if (d == 1) ans += "u";if (d == 2) ans += "cc";if (d == 3) ans += "c";d = 0;}if (ey > sy && d != 2){if (d == 0) ans += "cc";if (d == 1) ans += "c";if (d == 3) ans += "u";d = 2;}ans += string(abs(ey - sy), 'f');if (ex < sx && d != 1){if (d == 0) ans += "c";if (d == 2) ans += "u";if (d == 3) ans += "cc";d = 1;}if (ex > sx && d != 3){if (d == 0) ans += "u";if (d == 1) ans += "cc";if (d == 2) ans += "c";d = 3;}ans += string(abs(ex - sx), 'f');return ans;
}int main()
{IOS;int T;cin >> T;while (T -- ){int ex, ey, d;cin >> ex >> ey >> d;int n;cin >> n;string ans = "";for (int i = 1; i <= n; i ++ ){int sx, sy;cin >> sx >> sy;int d1 = d, d2 = d;string t1 = go(ex, ey, d1, sx, sy);string t2 = go2(ex, ey, d2, sx, sy);if (t1.size() < t2.size()) ans += t1, d = d1;else ans += t2, d = d2;ex = sx, ey = sy;}cout << ans << endl;}return 0;
}
Smzzl with Greedy Snake 模拟-贪心-阅读理解相关推荐
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)Smzzl with Greedy Snake “小“模拟
- 2020年江苏中考数学能用计算机吗,2020年【中考数学】真题及模拟:规律探索与阅读理解题(教师版)(江苏专用).pdf...
『中考真题·分项详解』 『真金试炼·备战中考』 中考真题·模拟引申 编在前面: 历年的中考卷可以让学生认识到中考的题型,命题风格,各知识板块的分 值分布,考查的重点及难点.这对于初三学生备战中考具有很 ...
- 京东AI研究院获QuAC机器阅读理解竞赛冠军,EL-QA模型能力业界领先
来源:机器之心 本文约2000字,建议阅读8分钟 京东提出的 EL-QA 模型(登顶 QuAC Leaderboard,全部三项指标均获得第一名. [ 摘要 ]近日,在斯坦福大学.华盛顿大学.Alle ...
- 后生可畏!中国军团称霸阅读理解竞赛RACE:微信AI称王,高中生力压腾讯康奈尔联队(附资料)...
本文经AI新媒体量子位(公众号ID:qbitai )授权转载,转载请联系出处 本文约4000字,建议阅读5分钟. 本文为你介绍了由CMU语言技术研究所发起RACE数据集活动中,中国军团雄霸天下的情况. ...
- COLING 2020 | 面向机器阅读理解的双向认知思维网络
©PaperWeekly 原创 · 作者|张琨 学校|中国科学技术大学博士生 研究方向|自然语言处理 Motivation 近两年,大家纷纷在提我们正在从感知智能向认知智能迈进,模型需要具备认知理解推 ...
- 神经机器阅读理解最新综述:方法和趋势
作者丨刘姗姗 学校丨国防科技大学 研究方向丨自然语言处理 近年来,基于深度学习方法的机器阅读理解受到了广泛的关注.近日,来自国防科技大学的团队在arXiv上发布了预印版综述文章 Neural Mach ...
- 人工智阅读理解能力首超人类,阿里巴巴刷新世界纪录
2018年伊始,人工智能取得重大突破!1月11日,由斯坦福大学发起的机器阅读理解领域顶级赛事SQuAD刷新排名,令业界振奋的是人工智能的阅读能力历史上首次超越人类.阿里巴巴凭借82.440的精准率打破 ...
- 深度学习技术在机器阅读理解应用的研究进展
深度学习解决机器阅读理解任务的研究进展:https://blog.csdn.net/malefactor/article/details/52832134 深度学习技术在机器阅读理解应用的研究进展:h ...
- 初中英语多词性单词怎么办_高考英语阅读理解生僻单词太多怎么办?十大招数帮到你...
英语阅读理解生僻单词太多怎么办?今天,胡老师告诉你猜词十大招数,帮助同学们英语考试拿高分. 01 构词法 阅读中常常会遇到一些由熟悉的单词派生或合成的新词.掌握构词法对猜测词义很有帮助.如:unf ...
最新文章
- 在数据库原表中增加字段
- 关于CXF的FrontEnd和数据绑定方案
- Uvaoj 10048 - Audiophobia(Floyd算法变形)
- shell 数据类型
- CCF201612-1 中间数(100分)【序列处理+排序】
- PAT (Basic Level) Practice1023 组个最小数
- 强化学习10-Deep Q Learning-fix target
- 打造黑苹果(一)组装硬件的选择与组装
- loadrunner11 linux服务器,loadrunner11监控linux服务器性能
- 【面朝大厂】万字+图解 Redis,面试不用愁了!
- TCP报文段中的序号和确认号
- Java语言实现矩阵卷积运算
- 2020力扣杯团体赛
- ThreadLocal 常见使用场景
- MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了
- 基于麒麟座开始TIM6操作
- Clickhouse MergeTree系列(Replacing、Summing等)表引擎使用说明
- 网络基础知识问答梳理
- 使用ffmpeg工具进行YUV420P到RGB32的格式转换问题总结
- unix中嘚vim编辑器