uva10881 ants

2024-08-24 13:08
文章标签 uva10881 ants

本文主要是介绍uva10881 ants,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX_N 10010
struct ant{int id;//记录输入顺序int p; //每只蚂蚁位置int d; //每只蚂蚁方向,-1左,0正在碰撞,1右;bool operator < (const ant& a) const{    //运算符重载,按p从小到大排序return p < a.p;}}before[MAX_N], after[MAX_N];    //之前与T秒之后
int order[MAX_N];                //最后按输入顺序输出蚂蚁
const char dir[][10] = {"L", "Turing", "R"};
int main(){freopen("in", "r", stdin);int t;
int cnt = 1;
scanf("%d", &t);while(t--){int L, T, N;
printf("Case #%d:\n",cnt++);
scanf("%d%d%d", &L, &T, &N);for(int i = 0;i < N; i++){char  c;int p;scanf("%d %c", &p, &c);int d = (c == 'L' ? -1:1);before[i] = (ant){i, p, d}; //蚂蚁初始位置after[i] = (ant){0, p + d * T, d};//T秒之后}sort(before, before + N);//对输入位置排序for(int i = 0;i < N; i++){order[before[i].id] = i;}sort(after, after + N);//蚂蚁的相对位置是不变的for(int i = 0;i < N-1; i++){if(after[i].p == after[i+1].p) after[i].d = after[i+1].d = 0;}for(int i = 0;i < N; i++){if(after[order[i]].p < 0 || after[order[i]].p > L) printf("Fell off\n");else printf("%d %s\n", after[order[i]].p, dir[after[order[i]].d+1]);}printf("\n");}return 0;
}

这篇关于uva10881 ants的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102566

相关文章

基于医学图像配准软件 ANTs(Advanced Normalization Tools)提取脑图像数值并与临床量表计算相关

前言: 神经影像学与临床评估的结合正在革新我们对神经精神疾病的理解。本博客聚焦于如何利用先进的医学图像配准软件ANTs(Advanced Normalization Tools)提取脑图像数值,并将其与临床量表进行相关性分析。 目录   一、准备掩模(Mask) 二、准备T-value map T-map 和 Z-map的转化 比较同一结果的T-map和Zmap 三、提取Mask

Algorithm学习笔记 --- Ants(poj No.1852)培养锻炼里的例题

Ants Time Limit: 1000MS Memory Limit: 30000KTotal Submissions: 7418 Accepted: 3426 Description An army of ants walk on a horizontal pole of length l cm, each with a constant speed of 1 cm/s.

简单剖析tRPC-Go中使用的第三方协程池ants

tRPC-Go中的tRPC.Go()方法使用了ants协程池,做个简单剖析 panjf2000/ants协程池 在tRPC.Go方法(异步启动goroutine)中看到里面使用了ants协程池去实现(具体位置:g.pool.Invoke(p)) 前置知识: 我们想异步完成一个任务,首先创建一个任务,然后需要从协程池(PoolWithFunc)中获取worker(goWorkerWithFu

uva10714 Ants

这道题就是考智力的题目,也比较简单。 不难发现,最短的时间,就是先求出所有蚂蚁到两端的距离的最小值,再求这些距离的最大值,也就是左边的蚂蚁向左走,右边的蚂蚁向右走,这样保证时间最短。 对于最长的时间,由于蚂蚁相碰之后,双方花一秒的时间调头(从数据中推出来的),就相当于没有调头,两只蚂蚁各自按照自己原来的方向前进。这样,最长的时间也就是求所有蚂蚁中距离某一边距离最大的值。 不过感觉这题目判的有

uva 10881 - Piotr's Ants(排序)

题目链接:10881 - Piotr's Ants 题目大意:在一个长为L的木棒上有n只蚂蚁,给出蚂蚁的初始位置以及方向,问说移动T秒后各个蚂蚁的位置以及状态,如果两只蚂蚁在移动的过程中相撞,则会同时掉头。 解题思路:问题只要解决说两只蚂蚁相撞的情况就差不多了,其实从整体上来看(不考虑蚂蚁的编号),“相撞”和对穿而过“是一样的,只不过移动到那个位置的蚂蚁并不是先前的那只。所以说只要

UVA 10714 Ants (贪心)

10714 - Ants Time limit: 3.000 seconds 题意: 一根n厘米的杆子上,有m只蚂蚁,蚂蚁爬行速度为1厘米/秒。每只蚂蚁在一个位置上,可能向左爬也可能向右边爬。如果两只蚂蚁碰头,则两只蚂蚁都转向。如果蚂蚁爬到杆边就脱落了。现在要求出所有蚂蚁脱落的最小和最大时间。 思路: 其实这题说是两只蚂蚁碰头,两只蚂蚁都转向。其实这是一个误导人的条件。。设想

牛客网暑期ACM多校训练营(第十场)Rikka with Ants(类欧几里得)

题目链接:https://www.nowcoder.com/acm/contest/148/H   题目大意:有两只蚂蚁从(1,0)点出发往上走,但是一只不能越过,一只不能越过,如果不能往上了就往右边一格(移动的距离一定是整数),问这两只蚂蚁的行走路线里有多少个整点重合。   题目思路:针对一条线来说,我们可以针对蚂蚁走的点得到两个约束条件,第一个就是蚂蚁不能越过线,拿做例子,那么,还有一

C Ants GYM102501

签到 #include <iostream>#include <vector>#include <algorithm>#include <cstring>#include <string>#include <map>#include <cmath>using namespace std;const int maxn = 1e6 + 7;map<string,int>mp;int

uva 10714 Ants

原题: An army of ants walk on a horizontal pole of length l cm, each with a constant speed of 1 cm/s. When a walking ant reaches an end of the pole, it immediatelly falls off it. When two ants meet the

go 协程池 ants库分析

简介 相比于创建多个线程,goroutine 更轻量、资源占用更少、切换速度更快、无线程上下文切换开销更少。但是受限于资源总量,系统中能够创建的 goroutine 数量也是受限的。默认每个 goroutine 占用 8KB 内存,一台 8GB 内存的机器满打满算也只能创建 8GB/8KB = 1000000 个 goroutine,更何况系统还需要保留一部分内存运行日常管理任务,go 运行时需