"One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one, welcome ournew insect overlords." Kent Brockman Piotr likes playing with ants. He has n of them on a horizontal pole L cm long. Each ant is facing e…
1456. [UVa 10881,Piotr's Ants]蚂蚁 ★   输入文件:Ants.in   输出文件:Ants.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么往左爬要么往右爬,速度为1cm/s.当两只蚂蚁相遇时,二者同时掉头(掉头时间忽略不计).给出每只蚂蚁的初始位置和朝向,计算T秒之后蚂蚁的位置. [输入格式] 输入第一行为数据组数.每组第一行为三个整数L,T,n(n≤10 000):以下n行描述一只…
一根长度为 L 厘米的木棍上有 n 只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为 1 厘米/秒.当两只蚂蚁相撞时,二者同时调头(掉头用的时间忽略不计).给出每只蚂蚁的初始位置和朝向,计算 T 秒之后每只蚂蚁的位置. 由于掉头用的时间可以忽略不计,所以可以直接看做两只蚂蚁对穿而过.于是可以很开心的直接把坐标按照方向进行加 / 减的处理.得到某只蚂蚁的最终坐标. 把棍子拉为无限长,然后通过模拟这个过程可以发现,蚂蚁的顺序是绝对的,最左边的蚂蚁绝不可能爬到其他蚂蚁的右边去.所以将最终坐标从小到大排序…
两题很有趣挺经典的蚂蚁问题. 1.n只蚂蚁以1cm/s的速度在长为L的竿上爬行,当蚂蚁爬到竿子的端点就会掉落.当两只蚂蚁相撞时,只能各自反向爬回去.对于每只蚂蚁,给出距离左端的距离xi,但不知道它的朝向,求所有蚂蚁落下竿子所需要的时间的最大值和最小值. 2.问题1的升级版:把问题1改为已知每只蚂蚁的左端距离和它的朝向,要求按输入顺序输出 t 秒后每只蚂蚁的位置和状态(掉出去,转向中,或者蚂蚁的朝向). 1.POJ 1852 Ants http://poj.org/problem?id=1852…
UVA.10881 Piotr's Ants (思维题) 题意分析 有一根长度为L cm的木棍,上有n只蚂蚁,蚂蚁要么向左爬,要么向右,速度均为1cm/s,若2只蚂蚁相撞,则蚂蚁同时调头.求解第T秒时这n只蚂蚁的状态. 若此时相撞 输出:Turning 若此时已经掉下木棍 输出:Fell off 且要按照输入时的顺序输出各个蚂蚁的状态 此题难点有2个: 1.其实相撞可以理解为交叉走过(因为速度相同). 2.蚂蚁的相对位置保持不变. 想明白了这两点,难点就转换成了: 1.如何确定蚂蚁的位置: 2.…
题目传送门 /* 题意:在坐标轴上一群蚂蚁向左或向右爬,问经过ts后,蚂蚁的位置和状态 思维题:本题的关键1:蚂蚁相撞看作是对穿过去,那么只要判断谁是谁就可以了 关键2:蚂蚁的相对位置不变 关键3:order数组记录顺序 */ #include <cstdio> #include <algorithm> #include <iostream> #include <cstring> #include <string> #include <cm…
Piotr's AntsTime Limit: 2 seconds Piotr likes playing with ants. He has n of them on a horizontal pole L cm long. Each ant is facing either left or right and walks at a constant speed of 1 cm/s. When two ants bump into each other, they both turn arou…
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1822 题意:有很多只蚂蚁在一条直线上,每个蚂蚁移动速度都是1,并且有一个初始方向.并且当相邻两个蚂蚁相撞时转向.现在问t时间后各个蚂蚁的位置. 解法:这题的一个致命技巧就是把两只蚂蚁的相撞看作是两只蚂蚁交换穿过对方并且交换蚂蚁的编号.这个是很好理解的,类似于物理的完全弹性碰撞.又由…
题目链接:https://vjudge.net/problem/UVA-10881 其实这道题的关键只有一句话: 当两个蚂蚁因碰撞而掉头的时候,我们完全可以认为是两个点对穿而过. 这时候我们的主要任务就是弄清楚“谁是谁”. 然而很明显每只蚂蚁的相对顺序是不变的,所以我们要记录一个$order$数组. 预处理出它的初始状态和order,同时算出走之后的状态. 注意程序中的有些地方处理的很巧妙. AC代码: #include<cstdio> #include<iostream> #in…
题意:一个长度为L的木棍上有n个蚂蚁,每只蚂蚁要么向左,要么向右,速度为1,当两只蚂蚁相撞时, 它们同时掉头.给定每只蚂蚁初始位置和朝向,问T秒后,每只蚂蚁的状态. 析:刚看到这个题时,一点思路也没有,怎么做啊,难道又要模拟么,一想,模拟...天呐,好麻烦! 最终还是看了一下题解.真是很巧妙哪. 首先是当两个蚂蚁相撞时,转向和不转向是看不出来的.也就是说掉头等价于对穿而过.也就是说, 如果把蚂蚁看成是没有区别的小点,那么只要独立算每只蚂蚁的位置即可.虽然是这么说,但是, 对每只蚂蚁却不是这样,但…
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1822 题目意思:有一条 L 厘米长的杆,上面有 n 只蚂蚁,给出每只蚂蚁的朝向以及离杆上最左端的距离,问 T 秒之后每只蚂蚁到达的位置,如果 T 秒后某个位置有多只蚂蚁同时到达,那么这堆蚂蚁处于的位置 + Turning,如果超过这条杆的长度,输出F…
这个题的突破点就在于蚂蚁不能够穿过对方,故相对位置不变: 另外,又可以把蚂蚁看成运动方向不变: 代码: #include<cstdio> #include<algorithm> using namespace std; #define maxn 10005 ]={"L","Turning","R"}; int order[maxn]; struct ant { int id,p,d; bool operator<(c…
题目链接:10881 - Piotr's Ants 题目大意:在一个长为L的木棒上有n只蚂蚁,给出蚂蚁的初始位置以及方向,问说移动T秒后各个蚂蚁的位置以及状态,如果两只蚂蚁在移动的过程中相撞,则会同时掉头. 解题思路:问题只要解决说两只蚂蚁相撞的情况就差不多了,其实从整体上来看(不考虑蚂蚁的编号),“相撞”和对穿而过“是一样的,只不过移动到那个位置的蚂蚁并不是先前的那只.所以说只要记录下每只蚂蚁的顺序,它是不会因为移动而跳到另外一只的前面. #include <stdio.h> #includ…
Problem D Piotr's Ants Time Limit: 2 seconds "One thing is for certain: there is no stopping them; the ants will soon be here. And I, for one, welcome our new insect overlords." Kent Brockman Piotr likes playing with ants. He has n of them on a…
  Updating a Dictionary  In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, and values are non-negative integers. Given an old dictionary and a new dictionary, find out what were changed. Each dictionar…
  Robot Instructions  You have a robot standing on the origin of x axis. The robot will be given some instructions. Your task is to predict its position after executing all the instructions. LEFT: move one unit left (decrease p by 1, where p is the p…
</pre></center><center style="font-family: Simsun;font-size:14px;"><span style="font-size:32px;"><strong>Problem D</strong></span><span style="font-size:24px;"><strong>Pio…
Piotr's Ants Porsition:Uva 10881 白书P9 中文改编题:[T^T][FJUT]第二届新生赛真S题地震了 "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one, welcome our new insect overlords."Kent Brockman Piotr likes playing with ants. H…
Problem DPiotr's AntsTime Limit: 2 seconds "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one, welcome ournew insect overlords." Kent Brockman Piotr likes playing with ants. He has n of them on a hori…
1. 模拟斗地主洗牌和发牌并对牌进行排序的原理图解: 2. 代码实现: 思路: • 创建一个HashMap集合 • 创建一个ArrayList集合 • 创建花色数组和点数数组 • 从0开始往HashMap里面存储编号,并存储对应的牌 同时往ArrayList里面存储编号即可. • 洗牌(洗的是编号) • 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收) • 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌) package cn.itcast_04;…
题意:蚂蚁在木棍上爬,速度1cm/s,给出木棍长度和每只蚂蚁的位置,问蚂蚁全部下木棍的最长时间和最短时间. 模拟一下,发现其实灰常水的贪心... 不能直接求最大和最小的= =.只要求出每只蚂蚁都走长路下木棍时的最大值,和走短路时的就行了. 代码: /* * Author: illuz <iilluzen@gmail.com> * Blog: http://blog.csdn.net/hcbbt * File: uva10714.cpp * Lauguage: C/C++ * Create Da…
#include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <cstring> #include <queue> #include <vector> #define maxn 10005 #define L -1 #define R 1 #define fell 10 #define Turning -10 #de…
算法入门经典训练指南上的题. 这里有必要讲一下蚂蚁爬杆问题:每只蚂蚁都有一个初始方向,相撞会转向,关键就是相撞的处理,由于速度并不会改变,两只蚂蚁相撞,可以看做,两只蚂蚁穿过对方,继续沿原方向前进,经过t秒,最后蚂蚁的最终位置是固定的,但是对应位置的蚂蚁有可能不再是原来的蚂蚁:现在考虑经过t秒后蚂蚁的位置,假设蚂蚁刚开始以离杆的左端距离升序排序,那么t秒后,他们的位置排序不会改变,举例说明:如果以前有一只蚂蚁排在第二,t秒后它仍然在第二. AC代码: #include<cstdio> #inc…
https://vjudge.net/problem/UVA-10881 题意: 一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒.当两只蚂蚁相撞时,二者同时掉头.给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂蚁的位置. 思路: 首先,如果不考虑掉头的话,蚂蚁相遇时就是对穿而过,如果考虑掉头,局势是不会发生改变的,就是蚂蚁的位置不同. 比如蚂蚁1(2,R),蚂蚁2(4,L),经过3秒后,如果不考虑掉头,那么蚂蚁1(5,R),蚂蚁2(1,L).如果考虑掉头,则…
题目大意: ·给你一个n,表示输入n个白点和n个黑点(输入每一个点的坐标).现在需要将各个白点和各个黑点一一用线段连接起来,需要满足这些线段不能够相交. ·特色: 我们如何保证线段间不相交. ·分析: 由"黑白"可以想到用二分图匹配(最大流问题亦可).用到一个神秘结论,可以巧妙地将"相交"和"不相交"转化为具体数值大小关系,进而转化为权值.结论为:[四边形两条对角线的和必定大于它任何一组对边的和] 用一下这幅图进行分析:           下面…
思路: 一,两个点相撞然后,相互弹开.这样其实和两个点穿过去差不多, 但是对于单个点而言,这样肯定不行. 二,当你发现了不管什么情况,这些点的相对位置是不变的, 比如 1, 4, 3, 2 不管怎么移动,最后的这些点的相对位置依旧是 1, 4, 3, 2 知道了这两点,其实就可以自己动手写了. 我是这样做的,先记录点(包括下标), 然后根据位置排序,另外一个数组存下标,然后,再算各个点在经过T时间后,各个点的位置,再根据位置排序,然后,在利用所存下标的数组进行输出. #include<iostr…
蚂蚁相撞会各自回头.←可以等效成对穿而过,这样移动距离就很好算了. 末状态蚂蚁的顺序和初状态其实是相同的. 那么剩下的就是记录每只蚂蚁的标号,模拟即可. /*by SilverN*/ #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<vector> using namespace std;…
Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways: q By an integer sequence P = p1 p2...pn where pi is the number of left parentheses before the ith right parenthesis in S (P-sequence). q B…
题意: 有n个蚂蚁n棵树,蚂蚁与树要配对,在配对成功的一对之间连一条线段,要求所有线段不能相交.按顺序输出蚂蚁所匹配的树. 思路: 这个题目真是技巧啊,不能用贪心来为每个蚂蚁选择最近的树,这样很可能是相交了的. 整体最优能让每条线段不相交,证明: 假设a1-b1与a2-b2相交.则dis(a1,b1)+dis(a2,b2)>=dis(a1,b2)+dis(a2,b1).如果我们所决定的最优匹配是按照整体距离最短来匹配的,那么dis(a1,b1)+dis(a2,b2)必定小于dis(a1,b2)+…
题目链接 /* 问题 将一排盒子经过一系列的操作后,计算并输出奇数位置上的盒子标号之和 解题思路 由于数据范围很大,直接数组模拟会超时,所以采用数组模拟的链表,left[i]和right[i]分别表示i号盒子的左边是谁和右边 是谁.特别提醒,4这个操作可以采用其他的办法去标记,而不必真的去模拟交换,否则会超时. */ #include<cstdio> #include<algorithm> using namespace std; ; int n,left[maxn],right[…