YL 模拟赛总结 13
Problem
T1
略。
T2
略。
T3
考虑对于每一头向北的牛,计算它能够挡住 / 被挡住几头向东的牛。
一头向北的牛 \(i\) 能够被向东的牛 \(j\) 挡住的条件是:
-
\(x_i<x_j\) 且 \(y_i<y_j\)(\(x_i,y_i\) 分别表示牛 \(i\) 的 \(x\) 坐标与 \(y\) 坐标);
-
\(l_j\) 没有被更新(\(l_i\) 表示第 \(i\) 头牛吃的草的数量),因为如果 \(l_j\) 已经被更新则说明它已被另一头向北的牛挡住。
若牛 \(i\) 满足上述条件,则更新 \(l_i\) 为 \(\min(l_i,y_j-y_i)\)。
一头向北的牛 \(i\) 能够挡住向东的牛 \(j\) 的条件是:
-
\(x_i<x_j\) 且 \(y_i<y_j\);
-
\(x_j-x_i>y_i-y_j\);
-
\(l_i+y_i \ge y_j\)。
若牛 \(i\) 满足上述条件,则更新 \(l_j\) 为 \(\min(l_j,x_j-x_i)\)。
完结撒花~
#include<bits/stdc++.h> using namespace std; int n; struct node{ int x,y,z,d,l; }a[131]; int id[131]; bool cmp(int u,int v){ return a[u].x<a[v].x; } int main(){ cin>>n; char c; for(int i=1;i<=n;i++) cin>>c>>a[i].x>>a[i].y, a[i].z=a[i].x+a[i].y, a[i].d=(c=='N'), a[i].l=1e9, id[i]=i; sort(id+1,id+n+1,cmp); for(int i=1;i<=n;i++){ if(a[id[i]].d){ for(int j=1;j<i;j++) if(!a[id[j]].d&&a[id[j]].z>a[id[i]].z&&a[id[j]].l==1e9) a[id[i]].l=min(a[id[i]].l,a[id[j]].y-a[id[i]].y); for(int j=1;j<i;j++) if(!a[id[j]].d&&a[id[j]].z<a[id[i]].z&&a[id[i]].y<a[id[j]].y&&a[id[i]].l+a[id[i]].y>=a[id[j]].y) a[id[j]].l=min(a[id[j]].l,a[id[i]].x-a[id[j]].x); } } for(int i=1;i<=n;i++){ if(a[i].l==1e9) cout<<"Infinity\n"; else cout<<a[i].l<<'\n'; } return 0; }
T4
略。
标签:
YL 模拟赛总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】