ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[AGC013C] Ants on a Circle 思维题

2021-09-06 16:32:24  阅读:143  来源: 互联网

标签:cnt 位置 蚂蚁 AGC013C int d% Ants ans Circle


考虑到原来每只蚂蚁都在相邻之间撞来撞去,所以肯定最后每只蚂蚁的相对顺序是不会改变的。显然可以直接确定最后位置的整个序列,只要确定第一只蚂蚁在序列的位置(最终编号),就可以知道每只蚂蚁最后实际的位置。

不妨想象成蚂蚁相撞,蚂蚁相互穿过,编号交换。\(i\) 号蚂蚁的实际位置应当在拥有 \(i\) 编号的蚂蚁的位置。

考虑在直线上的情况,直接对应就行了。但现在是在环上,如果有一只蚂蚁逆时针经过0,那么1号蚂蚁最后的位置就会向前一位,顺时针则会向后一位。(想象成这只蚂蚁变成了负数,那么在直线上,他应该是最前面的,但先在在环上,所以他穿过去了,就会变成最后面的,所以原来在他后面的都会往前挪一位)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int n, l, t, ans[N]; 
int main() {
	scanf("%d%d%d", &n, &l, &t);
	int cnt = 0;
	for(int i = 0, x, w; i < n; i++){
		scanf("%d%d", &x, &w);
		x += ((w == 1) ? t : -t);
		cnt = ((cnt + (int)floor(1.0 * x / l)) % n + n) % n; 
		ans[i] = (x % l + l) % l;
	}
	sort(ans, ans + n);
	for(int i = 0; i < n; i++)
		printf("%d\n", ans[(cnt + i) % n]); 
	return 0;
}

标签:cnt,位置,蚂蚁,AGC013C,int,d%,Ants,ans,Circle
来源: https://www.cnblogs.com/zdsrs060330/p/15234337.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有