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)

相关推荐

  • 三国时期是公元多少年,三国时期到底有多少人口

    技术三国时期是公元多少年,三国时期到底有多少人口有人说三国人口只有500万三国时期是公元多少年,也有人说是1000万,甚至不少人说2000万~3000万之间。那么到底三国时代有多少人口?东汉末年和三国时期的户门数字并无正

    生活 2021年10月29日
  • 实践的名人例子,有关实践的名人事例50字

    技术实践的名人例子,有关实践的名人事例50字1、李时珍在年轻的时候就听人说,有一种神奇的植物叫曼陀罗,李时珍费 了一些周折,终于找到了这种植物,他为了探明究竟,亲自服下了曼陀罗,发现它有麻醉和使人兴奋的作用,少量可以治病

    生活 2021年10月21日
  • nodejs官方模块是什么

    技术nodejs官方模块是什么这篇文章主要介绍了nodejs官方模块是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 no

    攻略 2021年11月11日
  • 如何显示PX2的CVBS视频输入

    技术如何将PX2的CVBS视频输入显示出来如何将PX2的CVBS视频输入显示出来,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PX2的板上自带两个视频输入,

    攻略 2021年12月22日
  • 12.16 Java继承

    技术12.16 Java继承 12.16 Java继承首先 :继承,指一个对象直接使用另一对象的属性和方法。继承的格式:public class 子类名 entends 父类名{} /* 表示前面的

    礼包 2021年12月17日
  • 苹果怎么设置铃声,苹果手机怎么设置铃声图解

    技术苹果怎么设置铃声,苹果手机怎么设置铃声图解步骤/方法如下苹果怎么设置铃声: 》》》》》》 下载并打开最新版本的iTunes,然后点击左上角的第一个按钮【文件】,然后选择【将文件添加到资料库】; 找到你想要添加的音乐文

    生活 2021年10月27日