昨天 CF 的 2D
  • 板块学术版
  • 楼主__ex
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/8/29 12:09
  • 上次更新2025/8/29 17:49:50
查看原帖
昨天 CF 的 2D
389425
__ex楼主2025/8/29 12:09

赛时一直 T,然后知道主流做法也没什么区别

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
template<typename T>inline T read(){
    T a=0;bool s=0;
    char ch=getchar();
    while(ch>'9' || ch<'0'){
        if(ch=='-')s^=1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9'){
        a=(a<<3)+(a<<1)+(ch^48);
        ch=getchar();
    }
    return s?-a:a;
}
#define F(x) x.first
#define S(x) x.second
const ll mn=2e5+10;
ll t,n,k,mx,my,mmx,mmy;
int main(){
    t=read<ll>();
    for(ll cas=1;cas<=t;cas++){
        n=read<ll>();
        mx=my=mmx=-1e10;
        mmy=1e10;
        for(ll i=1;i<=n;i++){
            ll x=read<ll>(),y=read<ll>();
            if(x+y>mx+my)mx=x,my=y;
            if(x+y>mmx-mmy)mmx=x,mmy=y;
        }
        for(ll i=1;i<=2;i++){
            puts("? U 1000000000");
            fflush(stdout);
            read<ll>();
        }
        puts("? R 1000000000");
        fflush(stdout);
        read<ll>();
        puts("? R 1000000000");
        fflush(stdout);
        ll a=read<ll>();
        for(ll i=1;i<=3;i++){
            puts("? D 1000000000");
            fflush(stdout);
            read<ll>();
        }
        puts("? D 1000000000");
        fflush(stdout);
        ll b=read<ll>();
        a+=mx+my;b+=mmx-mmy;
        printf("! %d %d\n",(a+b)/2-4000000000ll,(a-b)/2);
        fflush(stdout);
    }
    return 0;
}
2025/8/29 12:09
加载中...