首页 > 其他分享 >P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒

P8611 [蓝桥杯 2014 省 AB] 蚂蚁感冒

时间:2023-11-19 17:55:39浏览次数:35  
标签:tmp AB P8611 int mid 蓝桥 include find size

这道题采用贪心,两只蚂蚁相互传染后再同时掉头走,相当于穿过了对方,若无其事地走,并不会影响最后感冒的传播结果。

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <queue>
using namespace std;

const int N = 55;

int n, x0, st;
vector<int> r, l;

int find_less(vector<int> &v, int x)
{
    int l = 0, r = v.size() - 1;
    while(l < r)
    {
        int mid = l + r + 1 >> 1;
        if(v[mid] < x) l = mid;
        else r = mid - 1;
    }
    if(v[l] < x) return l;
    return 100;
}

int find_greater(vector<int> &v, int x)
{
    int l = 0, r = v.size() - 1;
    while(l < r)
    {
        int mid = l + r >> 1;
        if(v[mid] > x) r = mid;
        else l = mid + 1;
    }
    if(v[l] > x) return l;
    return 100;
}

int main()
{
    priority_queue<int, vector<int>, greater<int>> q;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        int x;
        cin >> x;
        if (i == 1)
            x0 = x;
        if (x < 0)
        {
            l.push_back(-x);
        }
        else
        {
            r.push_back(x);
        }
    }
    sort(l.begin(), l.end());
    sort(r.begin(), r.end());
    /*cout << "right: ";
    for (auto i : r)
        cout << i << " ";
    cout << "\n";
    cout << "left:  ";
    for (auto i : l)
        cout << i << " ";
    cout << "\n";*/
    st = abs(x0);
    int rp, lp;
    int ans = 0;
    if (x0 > 0)
    {
        rp = st;
        int tmp = find_greater(l, rp);
        if (tmp >= 0 && tmp < l.size())
        {
            lp = l[tmp];
            ans += l.size() - tmp;
            tmp = find_less(r, lp);
            ans += tmp + 1;
        }
    }
    else
    {
        lp = st;
        int tmp = find_less(r, lp);
        if(tmp >= 0 && tmp <r.size())
        {
            rp = r[tmp];
            //cout << tmp << endl;
            ans += tmp + 1;
            tmp = find_greater(l, rp);
            ans += l.size() - tmp;
        }
    }
    cout << (ans?ans:1) << endl;
    system("pause");
    return 0;
}

 

标签:tmp,AB,P8611,int,mid,蓝桥,include,find,size
From: https://www.cnblogs.com/smartljy/p/17842337.html

相关文章

  • CUDA:页锁定内存(pinned memory)和按页分配内存(pageable memory )
    CUDA架构而言,主机端的内存分为两种,一种是可分页内存(pageablememroy),一种是页锁定内存(page-lock或pinned)。可分页内存是由操作系统APImalloc()在主机上分配,页锁定内存是由CUDA函数cudaMallocHost()和cudaHostAlloc()在主机内存中分配,页锁定内存的重要属性是主机的操作系统......
  • Docker - Run PostgreSQL database
    zzh@ZZHPC:~$dockerpullpostgres:alpinezzh@ZZHPC:~$dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEpostgresalpine642d75c6be0c9daysago245MB zzh@ZZHPC:~$dockerrun--namepostgres16-p5432:5432-ePOSTGRES_......
  • Jenkins+.net Care7+GitLab+docker desktop 实现自动化部署(完结)
    1.上一篇文章大家各种环境搭建好了之后2.创建一个仓库开启远程访问权限3.开启gitlab允许对本地网络发送请求这个主要为webhook做准备的,否则gitlab不允许项目添加本地网络的webhook以管理员身份登录gitlab 4.没有这个的话得下载插件可以去   下载这几个插件就可以......
  • [ABC329E]Stamp
    为了方便,我们记\(T\)为印章。不可能出现上图的情况(或者说无效),区间都必须是左右端点严格递增的。发现新增一个区间,无非就是放在上面/下面两种情况。考虑用\(f[i][j]\)表示前\(i\)个字母全部匹配,且第\(i\)个字母恰好在最右侧的模式串的第\(j\)个位置是否可行。三种方......
  • 【231119-1】如图,在正方形ABCD中,以AB为腰向正方形内部作等腰三角线ABE,点G在CD上,且CG=3
    【题目】如图,在正方形ABCD中,以AB为腰向正方形内部作等腰三角线ABE,点G在CD上,且CG=3DG,链接BG并延长,与AE交于F,与AD延长线交于H。连接DE交BH于点K,连接CK。若AE^2=BFBH,FG=13/5根号5.求:四边形EFKC的面积?【解答】......
  • Jenkins+.net Care7+GitLab+docker desktop 实现自动化部署(1)
    1.首先在电脑上安装jenkins+java17这个不做过多讲解网上教程都有2在docker安装GitLab查看版本dockersearchgitlab拉取指定版本:dockerpulltwang2218/gitlab-ce-zhdockerrun-d#后台运行,全称:detach-p8443:443#将容器内部端口向外映射......
  • [ABC326C] Peak 题解
    题目链接题目思路这个问题要求找到一个半开区间,使得在这个区间内包含尽可能多的礼物。首先,我们需要将输入的礼物坐标按照从小到大的顺序进行排序。然后,我们可以使用双指针的方法来寻找最佳的区间。代码以下是代码解释:#include<bits/stdc++.h>usingnamespacestd;constint......
  • [ABC328C] Consecutive 题解
    HelloWorld链接这道题是一个很明显的前缀和,我们把$sum_i$表示为前$i$个字符有多少个有重复,查询的时候就用$sum_{r-1}-sum_{l-1}$就行了。代码#include<bits/stdc++.h>usingnamespacestd;strings;intsum[300010];intmain(){ intn,q; cin>>n>>q>>s; for(in......
  • SpringCloudAlibaba
    SpringCloudAlibaba官网地址什么是SpringCloudAlibabaSpringCloudAlibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务。依托SpringCloudAlibaba,您只需要......
  • SpringCloudAlibaba版本关系
    SpringCloudAlibaba版本关系官方云原生应用脚手架由于SpringBoot3.0,SpringBoot2.7~2.4和2.4以下版本之间变化较大,目前企业级客户老项目相关SpringBoot版本仍停留在SpringBoot2.4以下,为了同时满足存量用户和新用户不同需求,社区以SpringBoot3.0和2.4分别为......