【XSY2558】圆上的蚂蚁 Ants on circle
Description
L个点围成一个圆. 我们选定任意一个点作为原点, 则每个点的坐标为从原点顺时针走到这个点的距离. 圆上有N只蚂蚁, 分别被编号为1到N. 开始时, 第ii只蚂蚁在坐标为Xi的点上. 这N只蚂蚁同时开始移动. 对于每一只蚂蚁i, 给定其初始方向Wi: 假如i开始时是顺时针走的, 则Wi的值为1; 否则为2. 每只蚂蚁的速度均为1. 当某个时刻两只蚂蚁相遇时, 它们都分别都掉头往反方向走.
对于每一只蚂蚁, 请你求出其开始移动T秒后的位置.
Input
输入格式如下:
N L T
X1 W1
X2 W2
:
XN WN
Output
输出N行, 第i为T秒后第i只蚂蚁所在的坐标.
每个坐标都在[0,L−1]之间.
Sample Input
sample input 1:
3 8 3
0 1
3 2
6 1
sample input 2:
4 20 9
7 2
9 1
12 1
18 1
Sample Output
sample output 1:
1
3
0
sample output 2:
7
18
18
1
其实,这题有一个弱化版,那题并不要求按蚂蚁顺序输出,只用从小到大输出有蚂蚁的位置即可。
那题解题的关键在于相遇时的掉头相当于直接穿过去了(因为不要求编号),那这题中的相遇就相当于交换了编号罢了。
所以蚂蚁们T秒后的位置我们可以非常简单地算出来,只是不知道哪一个位置对应哪一只蚂蚁。
所以我们就算出一号蚂蚁在T秒后的Rank,照着Rank输出即可
。
我们以一只蚂蚁为标准,每有一只蚂蚁倒着穿过它,Rank--,正着穿过它,Rank++。
接下来,按顺序输出即可。
注意:这里的负数如果不被\(l\)整除,实际上他是多转了一圈的,要再次\(--\)
#include<bits/stdc++.h>
#define N 1000010
using namespace std;
struct data
{
int x,w;
}a[N];
bool cmp(data a,data b)
{
return a.x<b.x;
}
int n,l,t,sum;
int main()
{
scanf("%d%d%d",&n,&l,&t);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i].x,&a[i].w);
a[i].w--;
}
for(int i=1;i<=n;i++)
{
if(!a[i].w)
{
a[i].x+=t;
}else{
a[i].x-=t;
}
sum+=a[i].x/l;//计算第1只蚂蚁的Rank
if(a[i].x%l<0)//这里减少了(是负数,但不整除),要再减一次
{
sum--;
}
a[i].x=(a[i].x%l+l)%l;
}
sort(a+1,a+n+1,cmp);
sum=(sum%n+n)%n;
for(int i=sum+1;i<=n;i++)
{
printf("%d\n",a[i].x);
}
for(int i=1;i<=sum;i++)
{
printf("%d\n",a[i].x);
}
return 0;
}
【XSY2558】圆上的蚂蚁 Ants on circle的更多相关文章
- 【POJ 1981】Circle and Points(已知圆上两点求圆心坐标)
[题目链接]:http://poj.org/problem?id=1981 [题意] 给你n个点(n<=300); 然后给你一个半径R: 让你在平面上找一个半径为R的圆; 这里R=1 使得这个圆 ...
- C++ 2(将类分文件) //点和圆的关系 //设计一个圆形类 和一个点类 计算点和圆的关系 //点到圆心的距离 == 半径 点在圆上 //点到圆心的距离 > 半径 点在圆外 //点到圆心的距离 < 半径 点在圆内 //点到圆心的距离 获取 ....... (x1 -x2)^2 + (y1-y2)^2 开根号 和半径对比 // 计算 可以 两边同时 平方
1 源文件 main.cpp 2 //点和圆的关系 3 //设计一个圆形类 和一个点类 计算点和圆的关系 4 //点到圆心的距离 == 半径 点在圆上 5 //点到圆心的距离 > 半径 点在圆外 ...
- C++ 1 (只在源文件)//点和圆的关系 //设计一个圆形类 和一个点类 计算点和圆的关系 //点到圆心的距离 == 半径 点在圆上 //点到圆心的距离 > 半径 点在圆外 //点到圆心的距离 < 半径 点在圆内 //点到圆心的距离 获取 ....... (x1 -x2)^2 + (y1-y2)^2 开根号 和半径对比 // 计算 可以 两边同时 平方
1 //点和圆的关系 2 //设计一个圆形类 和一个点类 计算点和圆的关系 3 //点到圆心的距离 == 半径 点在圆上 4 //点到圆心的距离 > 半径 点在圆外 5 //点到圆心的距离 &l ...
- BZOJ 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3621 Solved: 1605[Submit][Sta ...
- 2016HUAS_ACM暑假集训2L - Points on Cycle(圆上的点)
一个简单的几何题,自己在纸上列出方程解出结果的表达式,再用程序表达出来就行了. 不过老司机(老司机的woodcoding)说用旋转向量法比较简单,有时间要去看一看. 大致题意:一个圆心在原点的圆,半径 ...
- bzoj 1041: [HAOI2008]圆上的整点 数学
1041: [HAOI2008]圆上的整点 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 853[Submit][Stat ...
- BZOJ 1041 [HAOI2008]圆上的整点:数学
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1041 题意: 给定n(n <= 2*10^9),问你在圆x^2 + y^2 = n^ ...
- 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4298 Solved: 1944[Submit][Sta ...
随机推荐
- VS2010连接Oracle配置
直接看上图.EZ连接和TNS连接.TNS连接要修改tnsnames.tns文件内部的host为服务器地址
- 『TensorFlow2.0正式版』TF2.0+Keras速成教程·零:开篇简介与环境准备
此篇教程参考自TensorFlow 2.0 + Keras Crash Course,在原文的基础上进行了适当的总结与改编,以适应于国内开发者的理解与使用,水平有限,如果写的不对的地方欢迎大家评论指出 ...
- 计算机视觉(二)-opencv之createTrackbar()详解
摘要: 我学习openCV3看的是<学习openCV3>这本书,很厚的一本,不知道是不是因为自己看的还不是很多,个人觉得里面的有些重要函数讲的不是很详细,比如createTrackbar( ...
- B-概率论-熵和信息增益
目录 熵和信息增益 一.熵(Entropy) 二.条件熵(Conditional Entropy) 三.联合熵(Joint Entropy) 四.相对熵(Relative Entropy) 4.1 相 ...
- centos8安装图解
CentOS 8 的新特性 DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的 使用网络管理器(nmcli 和 nmtui)进行网络配置,移除了网络脚本 使用 Podman 进行容器管理 引 ...
- python编程基础之二十
字符串的其他常用方法: ord(char) # 返回char字符对应的码值,可以是中文字符 chr(x) # 输入一个unicode码,返回对应的字符 eval(str) # 将str 中的内容 ...
- Angular.js 入门(一)
最近在学习angular.js,为此方便加深对angular.js前端框架的理解,因此写下这篇angular.js入门 首先介绍下什么是angular.js? AngularJS 是一个 JavaSc ...
- MQTT介绍与使用
物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段.其英文名称是:“Internet of things(IoT)”.顾名思义,物联网就是物物相连的互联网.这有两层意思:其一,物联 ...
- 2016 10月15日java的动手动脑
(1) 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. 源程序: //随机数的产生 //zhanxinwu,October,15,2016 public class Recur ...
- Python历史+优缺点+应用领域+网站职位简介
一.Python的历史 1. 1989年圣诞节:Guido von Rossum开始写Python语言的编译器.2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的 ...