2024牛客暑期多校训练营赛后补题
G.Horse Drinks Water
题意:将军饮马。
#include <bits/stdc++.h>
#define maxn 201
using namespace std;
bool rd[maxn][maxn];
int a[maxn],dp[maxn],p[maxn],pos;
int solve(){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
double cnt=min(sqrt(pow(x1+x2,2)+pow(abs(y1-y2),2)),sqrt(pow(abs(x1-x2),2)+pow(y1+y2,2)));
printf("%.10lf\n",cnt);
return 0;
}
signed main(){
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}
I.Friends
题意:有
n
n
n个人站成一排,从左到右依次为1到
n
n
n。在这些人中,有$
m
对朋友。定义区间
m对朋友。定义区间
m对朋友。定义区间[l,r]$为友好当且仅当区间内的每对人都是朋友。问有多少个友好间歇?
题解:从左向右枚举。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int sum[N];
int main()
{
int n, m;
cin>>n>>m;
vector< set<int> >a(n + 1);
vector<int> x(n + 2);
for(int i=1;i<=m;i++)
{
int x, y;
cin>>x>>y;
a[x].insert(y);
}
for(int i=n;i>=1;i--)
{
int j = i;
while ( ( i == j || a[i].count(j) ) && x[i] <= x[i + 1] )
{
x[i]++, j++;
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
ans += x[i];
}
cout<<ans<<endl;
return 0;
}