妙妙技巧题

题目描述

题目大意

一个圆环上有n只蚂蚁,它们会按照顺时针或者逆时针行走。如果有蚂蚁相遇它们就会掉头(不一定在整数时间掉转)。问最后每只蚂蚁的位置。

题目分析

以前在luogu上做过一道类似的掉头问题,于是考试时候就很大意地把它压在最后做了……

我们考虑一下,这n只蚂蚁的相对位置其实是不会改变的,并且我们可以算出最终所有蚂蚁的位置。

那应该如何计算第一只蚂蚁最后的顺序呢?

想象在n-1到0之间有一只哨兵蚂蚁,它是不会移动的。当有蚂蚁从左边或右边穿过它的时候,我们的一号蚂蚁相当于次序+1或-1了。

再就是细节问题:$(a[i]\%l)<0$时,意味着这只蚂蚁从右边向左边运动后,还少了一次+l,所以注意在这个地方特别处理一下就好了。

 #include<bits/stdc++.h>
const int maxn = ; int a[maxn],n,l,t,x,cnt; int main()
{
scanf("%d%d%d",&n,&l,&t);
for (int i=; i<=n; i++)
{
scanf("%d%d",&a[i],&x);
a[i] += x==?t:-t;
cnt += a[i]/l;
if (a[i]%l<0) cnt--;        //就是这里细节的处理
((a[i]%=l)+=l)%=l;
}
std::sort(a+, a+n+);
((cnt%=n)+=n)%=n;
// for (int i=1; i<=n; i++) printf("%d\n",a[i]);
for (int i=cnt+; i<=n; i++) printf("%d\n",a[i]);
for (int i=; i<=cnt; i++) printf("%d\n",a[i]);
return ;
}

END

最新文章

  1. 通过JSch编写上传、下载文件
  2. git使用入门
  3. 【Paddy】如何将物理表分割成动态数据表与静态数据表
  4. MySQL 关联表批量修改(数据同步)
  5. 关于linux开机进入grub问题的解决方法
  6. Disruptor 极速体验
  7. layout 布局、手风琴accordion、选项卡tabs
  8. (转)Lambda表达式详解
  9. POJ2151 动态规划
  10. js数字精度丢失
  11. C#主要字典集合性能对比[转]
  12. selenium之多线程启动grid分布式测试框架封装(二)
  13. android ndk调用OpenGL 实现纹理贴图Texture
  14. 修改nagios密码和遇到的问题
  15. 安装ecshop的问题处理
  16. ubuntu16.04如何安装搜狗输入法
  17. springboot+redis分布式锁-模拟抢单
  18. C# 《编写高质量代码改善建议》整理&amp;笔记 --(四)资源管理&amp;序列化
  19. 关于SpringCloud配置网关转发时出现一下啊错误:“com.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException”
  20. C#导出 Excel 时, 生成 CheckBox 控件

热门文章

  1. SpringBoot 2.0 整合sharding-jdbc中间件,实现数据分库分表
  2. mysql之SQL入门与提升(四)——终结篇,函数
  3. Zynq7000开发系列-7(在Zybo上运行Linaro桌面系统)
  4. Hive_Hive和数据仓库简介
  5. 转 shell模拟数据库的读写
  6. freertos之队列
  7. 17999 Light-bot 模拟 + kmp求循环节
  8. spring boot使用AbstractXlsView导出excel
  9. Autofac框架使用遇到的问题
  10. uvm_scoreboard——得分