At Coder ABC#467
2026-07-19 10:04:27
发布于:浙江
前言
此贴只讲 。因为其他的我不会写
A
BMI计算,已经被pq1猜中要点了,用long double,但要注意单位换算。
#include <iostream>
using namespace syh;
int main()
{
long double h, w;
cin>>h>>w;
long double x=(h/100.0*h/100.0);
if(w/x<25) cout<<"No";
else cout<<"Yes";
}
B
显然,收到找零的肯定不会有损失,那么我们只要统计 的次数,每次加上多花的钱就行。
#include <iostream>
using namespace syh;
int main()
{
int n, ans=0;
cin>>n;
for(int i = 1;i<=n;i++)
{
int a, b;
string s;
cin>>a>>b>>s;
if(s=="keep")
{
ans+=b-a;
}
}
cout<<ans;
}
C
注意到在模的情况下加法就是异或操作,所以我们的条件就是 ,也就是说,当 时,有;当时,有,所以一旦确定的值,整个数组就被确定了,因为(下面的是DeepSeek生成的,因为我LaTeX拉四了)
所以只有 种可能的目标数组,就是 为 或 的两种情况,那么答案显然就是两种序列操作次数的最小值。
//赛时代码可能和讲的不太一样,但是意思是一样的
#include <iostream>
#include <vector>
using namespace syh;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, m, ans1=0, ans2=0;
cin>>n>>m;
vector<int> a(n), b(n-1), ve(n);
ve[0]=0;
for(int i = 0;i<n;i++) cin>>a[i];
for(int i = 0;i<n-1;i++) cin>>b[i];
for(int i = 0;i<n-1;i++)
{
ve[i+1]=ve[i]^b[i];
}
for(int i = 0;i<n;i++)
{
//这里的判断就是看要不要进行翻转
if(a[i]!=ve[i]) ans1++;
if(a[i]!=(ve[i]^1)) ans2++;
}
cout<<min(ans1,ans2);
return 0;
}
D
是不是卡常。
题面好像几何题,说人话就是 圆 经过 和 两点 → 圆心到 和 的距离相等 → 圆心在 的垂直平分线上;圆 经过 和 两点 → 圆心到 和 的距离相等 → 圆心在 的垂直平分线上。
两条垂直平分线是否相交或重合?
我们可以列出一个垂直平分线方程,对于两点和,这个方程为
(上面的小都是平方的意思)
也就是 。
其中
(上面的小都是平方的意思)
我们计算行列式,,如果 ,就说明两条线不平行,那就是相交,因为是同一平面,输出 ,否则就判断是否重合,不重合就说明无交点,有就说明有交点,对应输出就行。
#include <iostream>
using namespace syh;
typedef long long ll;
inline ll read()
{
ll x=0, f=1;
char c=getchar_unlocked();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar_unlocked();
}
while(c>='0'&&c<='9')
{
x=(x<<3)+(x<<1)+(c^48);
c=getchar_unlocked();
}
return x*f;
}
void func(ll x1,ll x2,ll y1,ll y2,ll &a,ll &b,ll &c)
{
ll x=x2-x1;
ll y=y2-y1;
a=2*x;
b=2*y;
c=x*(x1+x2)+y*(y1+y2);
}
int main()
{
int t=read();
while(t--)
{
ll px=read(), py=read(), qx=read(), qy=read();
ll rx=read(), ry=read(), sx=read(), sy=read();
ll a1, b1, c1, a2, b2, c2;
func(px,qx,py,qy,a1,b1,c1);
func(rx,sx,ry,sy,a2,b2,c2);
__int128 d=(__int128)a1*b2-(__int128)a2*b1;
if(d!=0)
{
cout<<"Yes"<<"\n";
continue;
}
else
{
bool f=((__int128)a1*c2==(__int128)a2*c1)&&((__int128)b1*c2==(__int128)b2*c1);
if(f) cout<<"Yes"<<"\n";
else cout<<"No"<<"\n";
}
}
return 0;
}
为啥快读,因为我以为WA是没快读加上long long 导致的,但是好像要开__int128。
后言(hou ji)
本次 ABC#467 爽吃,如果知道 题解法的可以发个帖子,我们来做个接龙,看看能不能把这场的题解都写完。
@🥥
@Eucatastrophe
@yh24chenyiming
@cjdst
/bx/bx/bx
全部评论 1
%%%
2天前 来自 上海
0F是线段树
2天前 来自 上海
0大佬咋给我取关了
2天前 来自 浙江
0没注意,那我关回来
2天前 来自 上海
0


















有帮助,赞一个