首页 > 其他分享 >[AGC013C] Ants on a Circle 解题报告

[AGC013C] Ants on a Circle 解题报告

时间:2023-05-15 20:46:05浏览次数:50  
标签:ch AGC013C int void Ants write long Circle define

洛谷题面
AT题面
CF625F

先考虑弱化版,若是不考虑编号怎么办。
这个问题有一个很经典的结论,碰撞等同穿过,所以直接算出每个点按照指定方向走,在 \(t\) 秒后的位置即可。

现在多了一个编号,因为是碰撞,所以两个点的相对位置是相同的,即 \(x\) 号点原来是 \(y\) 号点顺时针方向的第几个点,它最终还是 \(x\) 顺时针方向的第几个点。那么我们只要找到一个点的位置,就可以找到其它所有点的位置。假定我们确定的是第一个点的位置,感性理解一下,每有一个点逆时针穿过 \(0\),它的排名会减 \(1\),反之会加 \(1\)。直接算就好了。

tips:算的时候注意精度问题。

点击查看代码
#include<bits/stdc++.h>
#define ull unsigned long long
#define ll long long
#define int __int128
#define pdi pair<double,int>
#define pii pair<int,int>
#define pb push_back
#define mp make_pair
#define eps 1e-9
using namespace std;
namespace IO{
    template<typename T>
    inline void read(T &x){
        x=0;
        int f=1;
        char ch=getchar();
        while(ch>'9'||ch<'0'){
            if(ch=='-'){
                f=-1;
            }
            ch=getchar();
        }
        while(ch>='0'&&ch<='9'){
            x=x*10+(ch-'0');
            ch=getchar();
        }
        x=(f==1?x:-x);
    }
    template<typename T>
    inline void write(T x){
        if(x<0){
            putchar('-');
            x=-x;
        }
        if(x>=10){
            write(x/10);
        }
        putchar(x%10+'0');
    }
    template<typename T>
    inline void write_endl(T x){
        write(x);
        putchar('\n');
    }
    template<typename T>
    inline void write_space(T x){
        write(x);
        putchar(' ');
    }
}
using namespace IO;
const int N=3e5+10;
int n,ed[N],l,t,pos,id[N],p[N],st[N],ans[N];
bool cmp(int x,int y){
    return st[x]<st[y];
}
signed main(){
    #ifndef ONLINE_JUDGE
        freopen("1.in","r",stdin);
        freopen("1.out","w",stdout);
    #endif
    read(n),read(l),read(t);
    for(int i=0;i<n;i++){
        id[i]=i;
        char opt;
        read(st[i]);
        opt=getchar();
        while(opt!='1'&&opt!='2'){
            opt=getchar();
        }
        if(opt=='2'){
            ed[i]=st[i]-t;
        }
        else{
            ed[i]=st[i]+t;
        }
        int x=floor((long double)ed[i]/l);
        pos=(x%n+n+pos)%n;
        ed[i]=(ed[i]%l+l)%l;
    }
    sort(id,id+n,cmp);
    for(int i=0;i<n;i++){
        p[id[i]]=i;
    }
    sort(ed,ed+n);
    for(int i=0;i<n;i++){
        ans[i]=ed[(i+pos)%n];
    }
    for(int i=0;i<n;i++){
        write_endl(ans[p[i]]);
    }
    return 0;
}

标签:ch,AGC013C,int,void,Ants,write,long,Circle,define
From: https://www.cnblogs.com/luoshen0/p/17402980.html

相关文章

  • 以点类Point及平面图形类Plane为基础设计圆类Circle
    以点类Point及平面图形类Plane为基类公有派生圆类Circle,main(void)函数完成对其的测试。Point类结构说明: Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类成员函数包括:①有参构造函数Point(double,double)和拷贝构造函数Point(constPoin......
  • panjf2000/ants:一个高性能的 goroutine 池管理工具
    简介ants是一个高性能的goroutine池,实现了对大规模goroutine的调度管理、goroutine复用,允许使用者在开发并发程序的时候限制goroutine数量,复用资源,达到更高效执行任务的效果。goroutine相比于线程来说,有着更轻量、资源占用更少、切换速度更快、无线程上下文切换开销更少等......
  • 蝴蝶优化算法(BOA)文章复现(Circle混沌初始化种群+非线性因子w、p、r+融合正余弦算法
    蝴蝶优化算法(BOA)文章复现(Circle混沌初始化种群+非线性因子w、p、r+融合正余弦算法改进局部搜索策略+逐维t分布扰动策略)——MSBOA复现内容包括:文章改进BOA算法实现、23个基准测试函数、文中相关因子分析、文中混沌特性分析、与BOA对比等。代码基本上每一步都有注释,非......
  • 鲸鱼优化算法(WOA)文章复现:《嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法_张
    鲸鱼优化算法(WOA)文章复现:《嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法_张达敏》策略为:Circle混沌初始化种群+动态自适应权重改进鲸鱼位置策略+逐维小孔成像反向学习扰动策略——MWOA。复现内容包括:改进算法实现、23个基准测试函数、文中相关因子分析、文中混......
  • 以圆类Circle及立体图形类Solid为基础设计圆锥类Cone
    以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆锥类Cone,main(void)函数完成对圆锥类Cone的测试。Point类结构说明: Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类成员函数包括:①......
  • pta_【CPP0029】以圆类Circle及立体图形类Solid为基础设计圆锥类Cone
    #include<iostream>#include<cmath>usingnamespacestd;//点类PointclassPoint{private:doublex;doubley;public:Point(doublexv=0,doubleyv=0);/*构造函数*/Point(constPoint&p);/*拷贝构造*/~Point();/*......
  • 以圆类Circle及立体图形类Solid为基础设计圆锥类Cone
    以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆锥类Cone,main(void)函数完成对圆锥类Cone的测试。Point类结构说明: Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类成员函数包括:①......
  • pta_【CPP0027】以圆类Circle及立体图形类Solid为基础设计球类Sphere
    #include<iostream>usingnamespacestd;//点类PointclassPoint{private:doublex;doubley;public:Point(doublexv=0,doubleyv=0);/*构造函数*/Point(constPoint&p);/*拷贝构造*/~Point();/*析构函数*/voidsetX(d......
  • [网络安全]AntSword蚁剑实战解题详析
    免责声明:本文仅分享AntSword渗透相关知识,不承担任何法律责任。请读者自行安装蚁剑,本文不再赘述。蚁剑介绍蚁剑(AntSword)是一款开源的跨平台WebShell管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。中国蚁剑的特点主要有如下几点:1.支持多平台......
  • [网络安全]DVWA之File Upload—AntSword(蚁剑)攻击姿势及解题详析合集
    免责声明:本文仅分享SQL攻击相关知识,不承担任何法律责任。DVWA、BurpSuite请读者自行安装,本文不再赘述。同类文章参考:[网络安全]AntSword(蚁剑)实战解题详析(入门)FileUpload—lowlevel源码中无过滤:上传包含一句话木马<?php@eval($_POST[qiushuo]);?>的文件qiu.php回显......