10881 - Piotr‘s Ants (UVA)

题目链接:Online Judge

根据刘汝佳的解法的思路,我的代码如下:

#include <cstdio>
#include <algorithm>
#include <string>
const int maxn = 10001;struct ant{int id;int loc;int dir;
};bool cmp(const ant &a, const ant &b){return a.loc < b.loc;
}bool cmp1(const ant &a, const ant &b){return a.id < b.id;
}ant a[maxn], b[maxn];
int order[maxn];
int N, L, T, n;
char ch;
std::string direction[3] = {"L", "Turning", "R"};int main(){scanf("%d", &N);for(int kase = 1; kase <= N; ++kase){printf("Case #%d:\n", kase);scanf("%d %d %d", &L, &T, &n);for(int i = 0; i < n; ++i){scanf("%d %c", &a[i].loc, &ch);a[i].id = i;a[i].dir = ch == 'L' ? -1 : 1;}std::sort(a, a + n, cmp);for(int i = 0; i < n; ++i){order[i] = a[i].id;b[i].loc = a[i].loc + a[i].dir * T;b[i].dir = a[i].dir;}std::sort(b, b + n, cmp);for(int i = 0; i < n; ++i){b[i].id = order[i];if(i != n - 1 && b[i].loc == b[i + 1].loc){b[i].dir = 0;b[i + 1].dir = 0;}}std::sort(b, b + n, cmp1);for(int i = 0; i < n; ++i){if(b[i].loc < 0 || b[i].loc > L){printf("Fell off\n");} else{printf("%d %s\n", b[i].loc, direction[b[i].dir + 1].c_str());}}printf("\n");}return 0;
}

我起先的代码如下,样例答案是对的,但提交时显示超时:

#include <cstdio>
#include <deque>
#include <set>
#include <algorithm>struct ant{int id;int loc;int direction;bool turnFlag = false;
};
int N, L, T, n, loc;
char ch;
std::deque<ant> de;
std::set<int> fellOff;bool cmp(const ant &a, const ant &b){return a.loc < b.loc;
}bool cmp1(const ant &a, const ant &b){return a.id < b.id;
}int main(){scanf("%d", &N);for(int kase = 1; kase <= N; ++kase){scanf("%d %d %d", &L, &T, &n);de.clear();de.resize(n);for(int i = 0; i < n; ++i){scanf("%d %c", &de[i].loc, &ch);de[i].id = i;de[i].direction = ch == 'L' ? -1 : 1;}sort(de.begin(), de.end(), cmp);for(int i = 0; i < T; ++i){if(de[0].loc == 0 && de[0].direction == -1){fellOff.insert(de[0].id);de.pop_front();}if(de.back().loc == L && de.back().direction == 1){fellOff.insert(de.back().id);de.pop_back();}for(int j = 0; j < de.size(); ++j){if(de[j].direction == -1){de[j].loc--;} else{if(j == de.size() - 1){de[j].loc++;} else if(de[j + 1].loc > de[j].loc + 2 || de[j + 1].direction == 1){de[j].loc++;} else{if(de[j + 1].loc == de[j].loc + 2){de[j].loc++;de[j + 1].loc--;}de[j].direction = -1;de[j + 1].direction = 1;j++;}}}}for(int i = 0; i < de.size(); ++i){if((i != de.size() - 1 && de[i + 1].loc == de[i].loc) || (i != 0 && de[i - 1].loc == de[i].loc)){de[i].turnFlag = true;}}sort(de.begin(), de.end(), cmp1);int cur = 0;printf("Case #%d:\n", kase);for(int i = 0; i < n; ++i){if(fellOff.find(i) != fellOff.end()){printf("Fell off\n");} else{printf("%d ", de[cur].loc);if(de[cur].turnFlag){printf("Turning\n");} else{printf("%c\n", de[cur].direction == -1 ? 'L' : 'R');}cur++;}}printf("\n");fellOff.clear();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springdoc-openapi-ui 整合 knife,多模块分组,脚手架

pom文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

混合查询多家快递,快速掌握物流信息

在现代社会&#xff0c;快递服务已成为我们日常生活的重要组成部分。无论是购物还是文件传递&#xff0c;我们都需要快递服务的帮助。然而&#xff0c;不同的快递公司需要不同的查询方法&#xff0c;这无疑增加了我们的查询难度。因此&#xff0c;有没有一种方法可以让我们一次…

CVE-2023-3450:锐捷 RG-BCR860 命令执行漏洞复现

锐捷 RG-BCR860 命令执行漏洞(CVE-2023-3450)复现 0x01 前言 本次测试仅供学习使用&#xff0c;如若非法他用&#xff0c;与本文作者无关&#xff0c;需自行负责&#xff01;&#xff01;&#xff01; 0x02 漏洞描述 Ruijie Networks RG-BCR860是中国锐捷网络&#xff08;R…

【英文文章总结】数据管理指南系列:渐进式数据库设计

原文连接&#xff1a;系列https://martinfowler.com/data/https://martinfowler.com/data/ Evolutionary Database Design (martinfowler.com) 架构的进化。如何允许更改架构并轻松迁移现有数据&#xff1f; 如何应对项目的变动 迭代开发&#xff1a;很长一段时间人们把数据…

R语言列操作函数

目录 一.dplyr包 1.新增变量和变量重新赋值 2.筛选行 3.筛选列 4.分组计算 5.管道操作符 6.连接数据框 二.tidyr 1.列的分裂 2.列的合并 3.宽数据转长数据 4.长数据转宽数据 一.dplyr包 1.新增变量和变量重新赋值 > head(ToothGrowth)len supp dose 1 4.2 …

如何高效的解析Json?

Json介绍 Json是一种数据格式&#xff0c;广泛应用在需要数据交互的场景Json由键值对组成每一个键值对的key是字符串类型每一个键值对的value是值类型(boo1值数字值字符串值)Array类型object类型Json灵活性他可以不断嵌套&#xff0c;数组的每个元素还可以是数组或者键值对键值…

HDFS 集群动态节点管理

目录 一、动态扩容、节点上线 1.1 背景 1.2 扩容步骤 1.2.1 新机器基础环境准备 1.2.2 Hadoop 配置 1.2.3 手动启动 DataNode 进程 1.2.4 Web 页面查看情况 1.2.5 DataNode 负载均衡服务 二、动态缩容、节点下线 2.1 背景 2.2 缩容步骤 2.2.1 添加退役节点 …

/etc/ssh/sshd_config 配置文件中的 PasswordAuthentication PermitRootLogin 参数作用

1、PasswordAuthentication PasswordAuthentications是一种身份验证方式&#xff0c;通常用于远程服务器的登录。当用户连接到远程服务器并进行身份验证时&#xff0c;服务器会根据 用户名进行验证&#xff0c;如果验证成功允许用户访问服务器。在SSH中&#xff0c;PasswordAut…

补种胡杨树-滑动窗体

标题&#xff1a;补种未成活胡杨 | 时间限制&#xff1a;1秒 | 内存限制&#xff1a;262144K 近些年来&#xff0c;我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨&#xff08;编号1-N&#xff09;&#xff0c;排成一排。一个月后&#xff0c;有M棵胡杨未能成活。 现可补种胡杨…

Dijkstra的算法实现 -- 基于优先级队列

什么是Dijkstra算法&#xff1f; Shortest Path Tree (SPT) 单源最短路径算法 从指定节点出发&#xff0c;到达任何其他节点的距离最短。 和K算法、P算法的区别是&#xff1f; K算法、P算法&#xff0c;这两个算法都是最小生成树算法 Minimal Spanning Tree&#xff08;MST&am…

centos7上hive3.1.3安装及配置

1、安装背景&#xff1b; hive是基于hadoop的数据仓库软件&#xff0c;部署运行在linux系统之上&#xff0c;安装之前必须保证hadoop环境运行正常&#xff0c;hive本身不是分布式软件&#xff0c;它的分布式主要是借助hadoop实现&#xff0c;存储是hdfs&#xff0c;计算是mapr…

笔记本家庭版本win11上win+r,运行cmd默认没有管理员权限,如何调整为有管理员权限的

华为matebookeGo 笔记本之前有段时间不知怎么回事&#xff0c;打开运行框&#xff0c;没有了那一行“使用管理权限创建此任务”&#xff0c;而且cmd也不再是默认的管理员下的&#xff0c;这很不方便,虽然每次winr &#xff0c;输入cmd后可以按ctrlshitenter以管理员权限运行&am…

transformer位置编码最详细的解析

位置编码positional encoding 1. 位置编码是什么&#xff0c;为什么需要它&#xff1f;2. transformer提出的位置编码方法3. 直觉4. 其他细节5. 相对位置6. 常见问题解答 1. 位置编码是什么&#xff0c;为什么需要它&#xff1f; 位置和词语的顺序是任何语言的重要组成部分。它…

STM32f103入门(4)对射式红外传感器计次(外部中断)

中断:在主程序运行过程中&#xff0c;出现了特定的中断触发条件 (中断源)&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序处理完成后又返回原来被暂停的位置继续运行中断优先级:当有多个中断源同时申请中断时&#xff0c;CPU会根据中断源的轻重缓急进…

useRef 定义的 ref 在控制台可以打印但是页面不生效?

useRef 是一个 React Hook&#xff0c;它能让你引用一个不需要渲染的值。 点击计时器 点击按钮后在控制台可以打印但是页面不生效。 useRef 返回的值在函数组件中不会自动触发重新渲染&#xff0c;所以控制台可以显示变化而按钮上无法显示 ref.current的变化。 import { use…

孙哥Spring源码第14集

第14集 BeanDefintion的创建方式 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】 1、注册BeanDefintion的方式如何根据情况进行选择呢&#xff1f; xml 注解 扫描 import 2、为什么没有人用Import 可以通过注解的方式进行对应类型的注册。 3、ImportSelector和…

代码随想录训练营第42天|416.分割等和子集

代码随想录训练营第42天|416.分割等和子集 416.分割等和子集文章思路代码 总结 416.分割等和子集 文章 代码随想录|0416.分割等和子集 思路 看作容量为总和一半的背包问题&#xff0c;某方案恰好能装满时返回TRUE 二刷&#xff0c;还是不能一遍过 新学了一维数组的写法 代…

Lesson4-3:OpenCV图像特征提取与描述---SIFT/SURF算法

学习目标 理解 S I F T / S U R F SIFT/SURF SIFT/SURF算法的原理&#xff0c;能够使用 S I F T / S U R F SIFT/SURF SIFT/SURF进行关键点的检测 SIFT/SURF算法 1.1 SIFT原理 前面两节我们介绍了 H a r r i s Harris Harris和 S h i − T o m a s i Shi-Tomasi Shi−Tomasi…

Mac下使用Homebrew安装MySQL5.7

Mac下使用Homebrew安装MySQL5.7 1. 安装Homebrew & Oh-My-Zsh2. 查询软件信息3. 执行安装命令4. 开机启动5. 服务状态查询6. 初始化配置7. 登录测试7.1 终端登录7.2 客户端登录 参考 1. 安装Homebrew & Oh-My-Zsh mac下如何安装homebrew MacOS安装Homebrew与Oh-My-Zsh…

港陆证券:服装家纺公司上半年投资并购力度加大

9月1日&#xff0c;嘉曼服饰发布公告&#xff0c;为完善多品牌差异化开展战略&#xff0c;将以自有资金收买暇步士&#xff08;Hush Puppies&#xff09;品牌我国内地及香港、澳门区域IP财物。 面对服饰市场的激烈竞争&#xff0c;本年以来一些服饰类A股公司开启了“买买买”形…