CF538G

技术CF538G CF538G不知道在哪里找到的题,感觉评不到黑,不过是 Good Tea.首先了解将坐标系翻转 $45^{\circ}$ 的 trick ,对于每个坐标 $(x,y)$,翻转后的坐标为

CF538G

我不知道我在哪里找到这个问题的,但我不认为它是黑色的。只是好茶。

首先,了解将坐标系翻转45美元的技巧。对于$(x,y)$,翻转的坐标是$(x,y,x-y)$。这样,$x$和$y$的坐标相互独立,不会有关联。

在我知道这些之后,我实际上想出了一个\*3100。

考虑如果没有周期怎么办。我们按时间对所有的限制进行排序,只有当每个坐标轴上$i-1$到$i$的距离为$\leq t_i-t_{i-1}$,并且距离和时间的奇偶性相同时,$i$ th限制才能满足。

显然,宇称与周期无关,可以先分开判断,只需要考虑有周期时的距离限制。

对于每一个$t$,我们可以用$ t=k \乘以l r$的形式来表示,这意味着我们已经完成了$k$个完整的循环,并且在最新的循环中达到了$r$ th。我们假设一个完整周期的位移是$(X,Y)$显然,如果不止一个$r$是相同的,那么$(X,Y)$就可以确定。

对于其余的情况,显然有公式$ (p _ {r},q _ r)=(x _ i,y _ I)-k \u次(x,y) $上一句中的$ p _ r $和$ q _ r $表示$0$次和$r$的位置。对于两个相邻的$r$ $i$和$i'$,我们可以列出不等式$ (p _ r,q _ r)-(p _ {r'},q _ {r'}) \ leqt _ I-t _ {I'} $,并通过代换得到一些。

在得到$(X,Y)$的范围后,可以构造任意一组* *奇偶性* *。我们按照$r$从小到大逐一构造,因为两点的距离和时间是确定的,所以可以确定1$和$-1$的多少。

这个问题的思路挺新鲜的,主要是代码写起来比较麻烦。

为了方便起见,可以添加一组限制。当$t=0$,坐标为$(x,y)=(0,0)$。

同时要注意不平等的向上舍入和向下舍入问题。

` `` cpp

#includebits/stdc。h

#定义服务点系统(“暂停”)

使用命名空间标准;

typedef long long lld

const int maxn=2e6 800

const lld INF=2e6

int n,m;int hook=0;

结构节点{lld t,k,r,x,y;} q[2*maxn],fin

bool运算符(节点a,节点b){ return a . Rb . r;}

bool运算符==(节点a,节点b){ return(a . x==b . xa . y==b . y);}

节点mi(节点a,lld k,节点b)

{return (node){a.t,a.k,a.r,a.x-k*b.x,a . y-k * b . y };}

void EFS(){ printf(' NO \ n ');退出(0);}

lld xl=-INF,xr=INF,yl=-INF,yr=INF

lld d1v(lld a,lld b){ return((a0a % b)a/B- 1: a/b);}

//去掉整体

int mx[maxn],my[maxn],sx[maxn],sy[maxn];

lld nev(lld x){ return(x % 2x 1: x);}//下一晚上

lld neo(lld x){ return(x % 2x : x 1);}//下一个奇数

char ssh(int x,int y)

{

if(x==1y==1)返回‘R’;

if(x==1y==-1)返回‘U’;

if(x==-1y==1)返回‘D’;

if(x==-1y==-1)返回' L ';

返回0;

}

Void求解(lld a,lld b,lld典型值)//ax=b形式的不等式

{

if(!ab0)EFS();

else if(!a)返回;

lld l=-INF,r=INF

if(a0) r=d1v(b,a);

else l=-d1v(b,-a);

if(!典型值)xl=最大值(xl,l),xr=最小值(xr,r);

否则yl=max(yl,l),yr=min(yr,r);

if(xlxr | | ylyr)EFS();

}

void costr()

{

for(int I=1;I=n;(一)

q[i]=mi(q[i],q[i]。k,fin);

q[n1]=fin;

//随便写结构。

for(int I=2;I=n ^ 1;(一)

{

int lp=q[i-1]。r 1,RP=(I=NQ[I]. r :m);

for(int j=q[i-1])。R1;j=rpj)

{

if(j-lp 1=abs(q[i])。x-q[i-1]。x))

mx[j]=(q[i]。xq[i-1]。x 1:-1);

else MX[j]=(j % 2 1:-1);

if(j-lp 1=abs(q[i])。y-q[i-1]。y))

我的[j]=(q[i]。yq[i-1]。y 1:-1);

否则我的[j]=(j % 2 1:-1);

}

}

for(int I=1;I=m;(一)

printf('%c ',ssh(mx[i],my[I]);

printf(' \ n ');

退出(0);

}

int main()

{

freopen('CF538G.in ',' r ',stdin);

scanf('%d%d ',n,m);n;

q[1]=(节点){0ll,0ll,0ll,0ll,0ll };

for(int I=2;I=n;(一)

{

lld t,x,y;scanf('%lld%lld%lld ',t,x,y);

q[i]=(节点){t,t/m,t%m,x y,x-y };

}

for(int I=2;I=n;(一)

{

lld dx=(q[i]。x-q[i-1]。x)% 2;dx=(dx0-dx : dx);

lld dy=(q[i]。y-q[i-1]。y)% 2;dy=(dy0-dy: dy);

lld dt=(q[i]。t-q[i-1]。t)% 2;dt=(dt0-dt : dt);

if(dx!=dt||dy!=dt)EFS();

}

排序(q 1,qn1);

int FID=0;

for(int I=2;I=n;(一)

{

lld dk=-q[i]。k q[i-1]。k,dt=q[i]。r-q[i-1]。r;

lld dx=q[i]。x-q[i-1]。x,dy=q[i]。y-q[i-1]。y;

if(q[i]。r==q[i-1]。r)

{

节点fcx=(节点){0,0,0,q[i]。x-q[i-1]。x,q[i]。y-q[i-1]。y };

if % 28 fcx。x % ABS % 28 dk % 29% 21% 3d % 7c % 7 CFC x . y % 28 dk % 29% 21% 3d % 29% 20 EFS % 28% 29% 3b % 20% 0a % 20 fcx。x % 2f % 28-dk % 29% 2 CFC。y % 2f % 3d % 28-dk % 29% 3b % 0a % 20 if % 28% 21 FID % 29% 20% 7 bfin % 3 dfx

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153038.html

(0)

相关推荐

  • 2021-2022-1-diocs-TCP/IP和网络编程

    技术2021-2022-1-diocs-TCP/IP和网络编程 2021-2022-1-diocs-TCP/IP和网络编程一、任务详情
    自学教材第13章,提交学习笔记(10分)
    知识点归纳以及自己最有收

    礼包 2021年11月23日
  • JVM相关的知识点有哪些

    技术JVM相关的知识点有哪些这篇文章主要讲解了“JVM相关的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM相关的知识点有哪些”吧!JVM作为java运行

    攻略 2021年11月6日
  • bytom如何显示交易的详细信息?

    技术bytom怎么显示交易的详细信息这篇文章主要讲解了“bytom怎么显示交易的详细信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“bytom怎么显示交易的详细信息”吧

    攻略 2021年12月20日
  • SqlServer如何巧妙解决多条件组合查询

    技术SqlServer如何巧妙解决多条件组合查询今天就跟大家聊聊有关SqlServer如何巧妙解决多条件组合查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。开发

    攻略 2021年12月1日
  • 傲慢与偏见英文简介,傲慢与偏见的内容简介英文

    技术傲慢与偏见英文简介,傲慢与偏见的内容简介英文英文简介傲慢与偏见英文简介:Elizabeth bennet (keira knightley) and sister jean Bennett (Rosa Mr Park

    生活 2021年10月23日
  • good和well的区别,well和good的区别试题

    技术good和well的区别,well和good的区别试题一good和well的区别、词义辨析不一样1、 well专指人身体“健康的”,也指“良好的”“幸运的”。
    I dont feel very well today.

    生活 2021年10月31日