@TOC
前言
好经典的一场hh
交互题D不打算补,准备补E,F
传送门 :
A.数学
我们先将左边划为 $ \frac{(x*u+u*y)}{(u*v)} $
然后左右两边化简,最后会获得
$ x*v^2 + u^2*y = 0 $
所以我们令 $x=-u^2 \ y=v^2$
这样子就是一组答案了hh
CODE
void solve()
{
ll a,b;cin>>a>>b;
cout<<(-(a*a)) <<" "<<((b*b))<<endl;
}
B.贪心
我们发现一个蓝色,最多拥有$2$个红色,横着或者竖着
所以如果行可以被$3$整除,我们就按行分
如果列可以被$3$整除,我们就按列分
否则我们在此基础上$+1$(+1靠感觉来的hh)
CODE
void solve()
{
int n,m;
cin>>n>>m;
if(n%3 == 0 || m%3 == 0 )
{
cout<<1ll*n*m/3<<endl;
return;
}
cout<<n*m/3+1<<endl;
}
C.经典题
又是这种经典题 (容斥原理 ?)
这种,+1,-1或者是变成涂色什么问题,反正就是一个意思
先排序(找到该数字对应的位置) 因为这种操作是一一对应的
如果有一个地方不满足那么就输出 NO 否则 YES
因为这个地方不满足,你无法从其他地方填过来,因为各司其职,如果你从别的地方挖
一个数过来,那么被挖过来的那个数对应的位置就没有地方补充了
CODE
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
cin>>b[i];
sort(b+1,b+1+n);
for(int i=1;i<=n;i++)
if(a[i]-b[i]!=-1 && a[i]-b[i]!=0)
{
cout<<"NO"<<endl;
return;
}
cout<<"YES"<<endl;
}