首页 > 其他分享 >YL 模拟赛总结 13

YL 模拟赛总结 13

时间:2024-03-02 17:25:03浏览次数:30  
标签:13 YL 向北 min int 挡住 更新 id 模拟

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

略。

标签:13,YL,向北,min,int,挡住,更新,id,模拟
From: https://www.cnblogs.com/XOF-0-0/p/18048915

相关文章

  • YL 模拟赛总结 12
    ProblemT1略。T2最理想的情况当然是奇偶交替,每个数单独成为一组。考虑不理想的情况:偶数个数\(>\)奇数个数,此时需要可以先奇偶交替,再将最后剩下的偶数单独分为一组,答案为奇数个数\(\times\2+1\)。奇数个数\(>\)偶数个数,此时再分出两种情况:若奇数个数\(-\)......
  • YL 模拟赛总结 10
    ProblemT1二分板子。对于\(c_i\)降序排序,然后二分\(h\)指数,在check中贪心地使用综述增加引用次数即可。T2通过观察可以发现,在一篇论文的贡献列表中,若某一位置出现了比它前面的名字的字典序更小的情况,则说明从这个位置开始,后面的人的资历一定\(\ge\)前面的人。根据......
  • YL 模拟赛总结 9
    ProblemT1我们考虑一种贪心策略:对于价格前\(n-1\)小的咖啡,我们求出一种最优方案使得按照此方案买完咖啡后钱数\(\ge20\)且最接近\(20\)。至于如何求出最优方案,进行一遍01背包即可。#include<bits/stdc++.h>usingnamespacestd;intn,k;inta[1031],dp[1031];i......
  • YL 模拟赛总结 6
    ProblemT1为了方便处理,我们令男生为\(1\),女生为\(-1\)。求一遍前缀和\(sum\),若存在两个下标\(l,r\)使得\(sum_l=sum_r\),则说明区间\([l+1,r]\)的和为\(0\),即男女人数相等。在这样的区间中取长度最大的即可。需要特殊处理\(sum_0\)。#include<bits/stdc++.h>#defi......
  • YL 模拟赛总结 7
    ProblemT1预处理出前\(10^4\)个格子需要填什么数,然后输出即可。具体地,我们记录\(e\)为当前层数,\(o\)为上一层的最后一个的位置,\(last\)为上一个填的格子的位置。我们知道,一个格子要么在一层的起点,要么在一层的中间,要么在一层的末尾。枚举\(1\sim5\)分别对这三种情......
  • YL 模拟赛总结 11
    ProblemT1略。T2略。T3结论题。令所有牛的最终饥饿值为\(x\),则分别对于每一头牛进行考虑:对于第一头牛,它需要的最少玉米袋数为\(h_1-x\);对于第二头牛,它单独需要的最少玉米袋数为\(h_2-x\),而第一头牛已经用了\(h_1-x\)袋玉米,因此它需要的最少玉米袋数为\(h_2-x-......
  • 解决Puppeteersharp 被检测到的方法, 顺带学习了js如何实现 模拟点击拖动事件
    varlaunchOptions=newLaunchOptions{Headless=false,DefaultViewport=null,IgnoreHTTPSErrors=true,ExecutablePath=path+"\\.local-chromium\\chrome-win\\chr......
  • Youth可以是一个Child,是一个Teenager,是一个Young Adult; 但是Teenager就是介于13岁-19
    Youth可以是一个Child,是一个Teenager,是一个YoungAdult;但是Teenager就是介于13岁-19岁的小孩。  新时代青年要与时代同频共振_ 让青春同时代共振peer和peers的区别Peer和peers的区别主要在于它们的用法和所指的上下文环境。以下是它们的主要区别:......
  • 问题:模拟qq自动登录时候截不到验证码图片
    -超级鹰-注册:普通用户-登录:普通用户-题分查询:充值-创建一个软件(id)-下载实例代码-下载核心代码利用超级鹰进行图片验证的模拟登录fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysfromsele......
  • SC5312A SC5313A丨IQ解调器
    产品简介:300MHz至6GHz的直接IQ解调器更多信息请加weixin-pt890111获取 SC5312A和SC5313A是300MHz至6GHz的直接IQ解调器,将RF直接下变频为模拟同相和正交IF或IQ基带。直流耦合差分IQ对可馈送到任何双通道数字转换器进行模数转换。本地振荡器(LO)由外部源(如分别为SC5505A和SC......