编程语言
首页 > 编程语言> > 陕西省第九届大学生程序设计竞赛 E.swapping game 找规律+模拟

陕西省第九届大学生程序设计竞赛 E.swapping game 找规律+模拟

作者:互联网

刚开始看到swap,抖了个机灵,dna动了

以为又是cf那种转化,玄学的等价什么的

模拟了一下,发现规律蛮明显的,就是往45°左下角走,或者45°右下角走

奇数和偶数情况不同,要分开讨论

然后,然后它就变成了一个大模拟:

 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        ll n,k,q,id;
        cin>>n>>k>>q;
        if(q%2==1)
        {
            if(k<=n-q+1)
            {
                id=q+k;
                if(n-q+1==k) id--;
            }
            else {
                id=n;
                k-=n-q+1;
                k%=2*n;
                if(k<=n)
                {
                    id=id-k;
                    if(id==0) id=1;
                }
                else {
                    id=id-(2*n-k-1);
                }
            }            
        }
        else {
            if(k<=q)
            {
                id=q-k;
                if(q==k) id++;
            }
            else {
                id=1;
                k-=q;
                k%=2*n;
                if(k<=n)
                {
                    id=id+k;
                    if(id==n+1) id=n;
                }
                else {
                    id=id+2*n-k-1;
                }
            }            
        }
        cout<<id<<endl;
    }
}

 

标签:第九届,swapping,int,ll,45,cin,long,game,模拟
来源: https://www.cnblogs.com/liyishui2003/p/16391484.html