XJTUPC2023同步赛 题解
所有题面
A. 大水题
纯签
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
::sync_with_stdio(false);
iosint n;
>>n;
cinif(n<=6)
<<"water"<<'\n';
coutelse
<<"dry"<<'\n';
coutreturn 0;
}
B. 原粥率
纯签
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
::sync_with_stdio(false);
iosdouble a,b;
>>a>>b;
cin<<a/b<<'\n';
coutreturn 0;
}
C. 话剧
算个概率
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
::sync_with_stdio(false);
iosdouble x,y,z;
("%lf %lf %lf",&x,&y,&z);
scanf("%.6lf\n",z/x/y);
printfreturn 0;
}
D. 点集扩张
发现需要是一个包含原点的矩形,判断一下就行
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
<pair<int,int>>A,B;
setint main() {
::sync_with_stdio(false);
iosint n;
>>n;
cinint x_min=1e9,x_max=-1e9,y_min=1e9,y_max=-1e9;
for(int i=1;i<=n;i++)
{
int x,y;
>>x>>y;
cin=min(x_min,x);
x_min=max(x,x_max);
x_max=min(y,y_min);
y_min=max(y,y_max);
y_max.insert({x,y});
B}
if((y_max-y_min+1)*(x_max-x_min+1)!=B.size())
<<-1<<'\n';
coutelse if(x_min>0||x_max<0||y_min>0||y_max<0)
<<-1<<'\n';
coutelse
{
bool flag=false;
for(int i=x_min;i<=x_max;i++)
{
for(int j=y_min;j<=y_max;j++)
{
if(B.count({i,j})==0)
{
=true;
flagbreak;
}
}
}
if(flag)
<<-1<<'\n';
coutelse
<<x_max-x_min+y_max-y_min<<'\n';
cout}
return 0;
}
E. 全错
先把图建起来,然后看是否是题目的条件
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=205;
int v[N];
bool vis[N];
void init(int n)
{
(vis,false,sizeof(vis));
memsetfor(int i=1;i<=n;i++)
[i]=i;
v}
bool isExist(vector<int> q,int x)
{
for(auto it:q)
if(it==x)
return true;
return false;
}
int dfs(int x)
{
if(vis[x])
return 0;
int temp=x;
while(v[x]!=x)
{
[x]=true;
visif(v[x]==temp)
return 0;
else if(vis[v[x]])
return 1;
=v[x];
x}
return 1;
}
int main() {
::sync_with_stdio(false);
iosint T;
>>T;
cinwhile(T--)
{
int n;
double b;
>>n>>b;
cin(n);
initfor(int i=1;i<=n;i++)
{
double _max=-10;
int cur=-1;
double x;
for(int j=1;j<=n;j++)
{
>>x;
cinif(j==i)
continue;
if(x>=b&&x>_max)
{
=x;
_max=j;
cur}
}
if(cur!=-1)
[i]=cur;
v}
if(n==1)
{
<<"kono jinsei, imi ga nai!"<<'\n';
coutcontinue;
}
bool flag=false;
for(int i=1;i<=n;i++)
{
int F=dfs(i);
if(F==1)
=true;
flag}
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
=true;
flagbreak;
}
}
if(flag)
<<"hbxql"<<'\n';
coutelse
<<"wish you the best in your search"<<'\n';
cout}
return 0;
}