G - Galactic Collegiate Programming Contest

2023-10-26

题目链接
题解:因为这个题我们只需要数出所有的比1队要强的队是多少,所以我们可以维护一个vector,数组存的的是当前所有的比队伍1强的队,然后每次来了之后根据信息更新即可。
下面是RTE3的代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> vec;
const int N=1e6+10;
int pro[N],plenty[N];
bool st[N];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int id,p;
        scanf("%d%d",&id,&p);
        pro[id]++;
        plenty[id]+=p;
        if(pro[id]>pro[1]||pro[id]==pro[1]&&plenty[id]<plenty[1])
        {
            if(!st[id])//没有在数组内
            {
                vec.push_back(id);
                st[id]=true;
            }
            //在数组内的话不用管
        }
        else if(id==1)//假设增加的是他本身,需要访问数组
        {
                int len=vec.size();
                for(int j=0;j<len;j++)
                {
                    int x=vec[j];
                    if(pro[x]<pro[1]||pro[x]==pro[1]&&plenty[x]>=plenty[1])
                    {
                        vec.erase(vec.begin()+j,vec.begin()+j+1);
                        st[x]=false;//已经不在数组内
                    }
                }
        }
        printf("%d\n",vec.size()+1);//数组内留的都是大于1的数
    }
    return 0;
}

开始看了半天不知道哪错了,但是后来发现那个vector删除就是erase那错了,因为每次删除后len–,随之j–,所以下面是AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> vec;
const int N=1e6+10;
int pro[N],plenty[N];
bool st[N];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int id,p;
        scanf("%d%d",&id,&p);
        pro[id]++;
        plenty[id]+=p;
        if(pro[id]>pro[1]||pro[id]==pro[1]&&plenty[id]<plenty[1])
        {
            if(!st[id])//没有在数组内
            {
                vec.push_back(id);
                st[id]=true;
            }
            //在数组内的话不用管
        }
        else if(id==1)//假设增加的是他本身,需要访问数组
        {
                int len=vec.size();
                for(int j=0;j<len;j++)
                {
                    int x=vec[j];
                    if(pro[x]<pro[1]||pro[x]==pro[1]&&plenty[x]>=plenty[1])
                    {
                        vec.erase(vec.begin()+j,vec.begin()+j+1);
                        j--;
                        len--;
                        st[x]=false;//已经不在数组内
                    }
                }
        }
        printf("%d\n",vec.size()+1);//数组内留的都是大于1的数
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

G - Galactic Collegiate Programming Contest 的相关文章

随机推荐

  • Postman循环调用Post接口(Body多字段传参详细设置)

    背景 由于线上数据库 普通开发用户是无法进行增删改操作 所以如果需要调用线上的某个接口 但是又不通过界面进行操作的话 就可以通过Postman进行操作了 具体操作 新建项目 创建接口 编辑接口 单击新建的接口 输入相应的url及登录toke
  • chatgpt平替,清华chatglm本地化部署

    ChatGLM 6B 是一个开源的 支持中英双语的对话语言模型 基于 General Language Model GLM 架构 具有 62 亿参数 因为我的cpu跑不了 在linux服务器端进行部署 前提是conda已经安装并配置好 因为
  • Shell-脚本介绍

    目录 一 Shell介绍 二 Shell脚本的规则 三 比较运算符 四 Case循环语 五 If语句 分支结构 六 For循环 七 While循环 一 Shell介绍 Shell与Python都是弱语言 定义变量规则 变量名 值 Shell
  • 【华为OD机试真题】等和子数组最小和(C++&java&python)满分 详细代码注释 代码解读

    等和子数组最小和 给定一个数组nums 将元素分为若干个组 使得每组和相等 求出满足条件的所有分组中 组内元素和的最小值 输入描述 第一行输入m 接着输入m个数 表示此数组 数据范围 1 lt M lt 50 1 lt nums i lt
  • c 语言实现的简单屏幕烟花程序

    include stdlib h include graphics h include stdio h include math h include conio h define PI 3 1425926 main int gdriver
  • conda install 最常见错误的解决方案

    Conda 安装库错误 conda install pytorch 1 7 0 安装时相关错误 Collecting package metadata current repodata json failed gt gt gt gt gt
  • mac系统空间占用大解决方案

    本人mac2017 pro 120G 系统空间占用90G 一直提示空间不足 删除各种无用文件后才释放10G空间 网上搜索解决方案 弹出mackeeper mac 清理软件 广告 搜索mackeeper 发现网上骂声一片 基本上断定流氓软件
  • go语言的defer语句

    go语言defer语句的用法 参考 https www jianshu com p 5b0b36f398a2 defer的语法 defer后面必须是函数调用语句 不能是其他语句 否则编译器会出错 package main import lo
  • 华为OD题目:任务混部

    华为OD题目 任务混部 知识点差分Q 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 公司创新实验室正在研究如何最小化资源成本 最大化资源利用率 请你设计算法帮他们解决一个任务混部问题 有taskNum项任务 每个任务有开始
  • JS 元素遍历

    1 循环遍历从getElementsByClassName返回的所有元素 var elements document getElementsByClassName classname Array prototype forEach call
  • python

    coding utf 8 Created on Wed Nov 6 16 23 18 2019 author weiping from sklearn ensemble import RandomForestClassifier as rf
  • matlab 图像二值化 后0、1像素的个数统计

    目标 批量处理RGB图像 对其进行二值化处理 需要考虑二值化的阈值设置 此处不展开 统计二值化之后 各个黑白图像中0 1 的像素点数目 使用折线图的方式 展示出统计的结果 首先进行输入文件夹 与输出目标文件夹的路径定义 input path
  • 【Visual Studio】生成.i文件

    环境 VS版本 VS2013 问题 如何生成 i预编译文件 步骤 1 打开VS项目属性 打开C C 预处理器页面 预处理到文件 选择是 开启 2 生成文件如下 3 正常编译需要关闭此选项
  • 02 链表的插入实现:头插、尾插、指定位置插入(Linked List 链表)

    实现代码 include
  • node下各种常用插件列表

    react 目录 目录 1 nodemon 1 2 mongoose 2 3 babel plugin import 3 1 nodemon 简介 由于node指令无法进行热部署 而在开发环境下 往往需要一个工具来自动重启项目工程 node
  • Python bprogram - chapter2 base programing

    Python bprogram chapter2 base programing 1 tcp server usr bin python coding UTF 8 tcp server from python black hat pro d
  • 清理入侵痕迹

    清理入侵痕迹 清除本次登录的history记录 清除本次登录的last记录 清除vim记录 清除secure记录 清除autdit记录 清除本次登录的history记录 1 首先在HISTCONTROL ignorespace 使后面以空格
  • flutter 抓包工具charles

    本来的代码是忽略证书 忽略https证书校验 也就是能请求https的地址了 dio httpClientAdapter as DefaultHttpClientAdapter onHttpClientCreate HttpClient c
  • React实现拖拽功能

    我们都知道 js实现元素的拖拽分为下面三步 1 拖拽元素绑定onmousedown onmouseup事件 2 记录拖拽起始位置 鼠标按下时document绑定onmousemove事件 实时改变元素的布局style 3 鼠标放开时docu
  • G - Galactic Collegiate Programming Contest

    题目链接 题解 因为这个题我们只需要数出所有的比1队要强的队是多少 所以我们可以维护一个vector 数组存的的是当前所有的比队伍1强的队 然后每次来了之后根据信息更新即可 下面是RTE3的代码 include