糖糖别胡说,我真的不是签到题目(前缀和)

2023-11-13

题目

题目描述:
从前,有 n 只萌萌的糖糖,他们分成了两组一起玩游戏。他们会排成一排,第 i 只糖糖会随机得到一个能力值 b i b_i bi 。从第 i 秒的时候,第 i 只糖糖就可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的糖糖。
为了使游戏更加有趣,糖糖的爸爸,娇姐,会发功 m 次,第i次发功的时间为 c i c_i ci,则在第 c i c_i ci 秒结束后, b 1 , b 2 , . . . . . , b c i b_1,b_2,.....,b_{ci} b1,b2,.....,bci 都会增加 1.
现在,娇姐想知道在第 n 秒后,会有多少只糖糖存活下来。
输入描述:
第一行只有一个整数 T(T < 6),表示测试数据的组数。
第二行有两个整数n,m。表示糖糖的个数以及娇姐发功的次数。 ( 1 ≤ n ≤ 50000 , 1 ≤ m ≤ 1000000 ) (1 \leq n \leq 50000,1 \leq m \leq 1000000) 1n50000,1m1000000
第三行到 n+2 行,每行有两个整数 a i , b i a_i,b_i ai,bi,表示第 i 只糖糖属于哪一组以及他的能力值。 ( 0 ≤ a i ≤ 1 , 1 ≤ b i ≤ 1000000 ) (0 \leq a_i \leq 1,1 \leq b_i \leq1000000) 0ai1,1bi1000000
第 n+3 行到第 n+m+2 行,每行有一个整数 c i c_i ci,表示GTW第i次发功的时间。 ( 1 ≤ c i ≤ n ) (1 \leq c_i \leq n) (1cin)
输出描述:
总共 T 行,第 i 行表示第 i 组数据中,糖糖存活的个数。

样例1

输入

1 
4 3 
0 3 
1 2 
0 3 
1 1 
1 
3 
4

输出

3

提交链接

https://ac.nowcoder.com/acm/problem/14583

解析

最开始想的,外层循环从 1 到 n 枚举每一个糖糖,碰到发功的时刻 i,对于小于 i 的糖糖战斗力++,时间复杂度 n 2 n^2 n2,超时。
优化:
对于每一个发功的时刻,其前面的糖糖的战斗力都要加 1,可以前缀和维护第 i 秒时一共发功了多少次。

假设:j<i
编号为j的糖糖的战斗力增加了sum[i]-sum[j-1]
编号为i的糖糖的战斗力增加了sum[i]-sum[i-1]

若 j 位置的糖糖被i位置的糖糖消去的条件是:
j<i && group[j]!=group[i] && fight[j]<fight[i]

fight[j]=fight[j]+sum[i]-sum[j-1]
fight[i]=fight[i]+sum[i]-sum[i-1]

fight[j]<fight[i]可以转化为:fight[j]-sum[j-1]<fight[i]-sum[i-1]

细节条件:所有的糖糖要么是0组的,要么是1组的。

s[0],s[1]分别记录所在组的最大的fight[i]-sum[i-1]
倒着扫描,更新最大值

        int s[2];
        s[0]=s[1]=-2e7;  //初始化为最小值
        int res=n;
        for(int i=n; i>=1; i--)
        {
            if(fight[i]<s[group[i]^1])///group[i]^1记录不同组,因为是倒序的,s[group[i]^1]记录的是比此时的i大的战斗力
                res--;
            s[group[i]]=max(s[group[i]],fight[i]);
        }

完整代码:

#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=5*1e4+10;
int group[N];
int fight[N];
int sum[N];
int n,m;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        for(int i=1; i<=n; i++)
        {
            scanf("%d%d",&group[i],&fight[i]);
            sum[i]=0;
        }
        while(m--)
        {
            int x;
            scanf("%d",&x);
            sum[x]+=1;
        }
        for(int i=1; i<=n; i++)
        {
            sum[i]+=sum[i-1];///前缀和 第i秒时一共加了sum[i]
            fight[i]-=sum[i-1];
        }
        int s[2];
        s[0]=s[1]=-2e7;///初值一定要大
        int res=n;
        for(int i=n; i>=1; i--)
        {
            if(fight[i]<s[group[i]^1])
                res--;
            s[group[i]]=max(s[group[i]],fight[i]);
        }
        printf("%d\n",res);
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

糖糖别胡说,我真的不是签到题目(前缀和) 的相关文章

  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 【C++】匿名对象

    文章目录 一 基本概念 二 使用场景 三 注意事项 一 基本概念 匿名对象 也叫作临时对象 就是创建时不用取名的对象 它的生命周期只有一行 例子 class A int main 创建匿名对象 A 生命周期只有这一行 下一行就自动调用析构函
  • 如何在 seaborn 中创建三角相关热图?

    在本教程中 我们将学习在 seaborn 中创建三角形相关热图 顾名思义 相关性是一种度量 用于显示变量的相关程度 相关热图是一种表示数值变量之间关系的图 这些图用于了解哪些变量彼此相关以及它们之间的关系强度 而热图是使用不同颜色的数据的二
  • css text-shadow

  • 喜讯

    日前 华院计算因其在AIGC领域的技术突破和创新成果入选数据猿 2023中国AIGC领域最具商业合作价值企业盘点 基于其数智人产品及解决方案 为不同细分场景 行业 领域提供交互式智能终端 虚拟直播平台和智能视频生成平台等产品及服务 凭借其在
  • 【PKMS】- Settings中应用详情页卸载还原系统应用但数据未清除

    PKMS Settings中应用详情页卸载还原系统应用但数据未清除 一 问题描述 最近工作中出现一个问题 系统应用卸载后重装还原发现应用数据还在 复现操作 1 系统预置该应用在system priv app下 手机里预置的是旧版本的该应用
  • 隐私计算 FATE - 多分类神经网络算法测试

    一 说明 本文分享基于 Fate 使用 横向联邦 神经网络算法 对 多分类 的数据进行 模型训练 并使用该模型对数据进行 多分类预测 二分类算法 是指待预测的 label 标签的取值只有两种 直白来讲就是每个实例的可能类别只有两种 0 或者
  • calico单个pod固定IP多pod固定ip池

    原理 主要利用calico组件的两个kubernetes注解 1 cni projectcalico org ipAddrs 2 cni projectcalico org ipv4pools 单个pod固定IP 利用注解cni proje
  • SpringSecurity实现OAuth2.0 - 基础版授权服务

    OAuth2 0协议 OAuth3 0概述 OAuth2 0是一个关于授权的开放网络协议 该协议在第三方应用与服务提供平台之间设置了一个授权层 第三方应用需要服务资源时 并不是直接使用用户帐号密码登录服务提供平台 而是通过服务提供平台的授权
  • Python求100以内的素数和并输出

    求100以内的素数并输出 def isPrime num for i in range 2 num if num i 0 return False return True sum 2 1不是素数 2是素数 对 3 100 内的整数逐一进行判
  • Sublime Text 3 tab快捷键失效解决办法

    快速搭建html框架快捷键 tab发现失效 查资料发现缺少Emmet插件 解决办法如下 1 Ctrl Shift P 搜索package control install 2 按下回车搜索emmet 3 安装emmet 4 安装完成后可通过P
  • 【第01题】A + B

    文章目录 零 写在前面 一 例题1 1 题目描述 2 解题思路 3 代码详解 二 例题2 1 题目描述 2 解题思路 3 代码详解 三 例题3 1 题目描述 2 解题思路 3 代码详解 四 例题4 1 题目描述 2 解题思路 3 代码详解
  • Unity 简单几句代码实现无限循环列表(Scroll View)

    先看效果 这里是Scroll View的设置 using System Collections using System Collections Generic using UnityEngine using UnityEngine UI
  • 第三章 套接字相关数据结构--基于Linux3.10

    本章是对socket通信过程中使用到的比较重要的据结构罗列和意义的阐述 在阅读其它层的代码前 先来看几个重要的数据结构 这几个数据结构贯串四层模型 3 1 socket对应的内核结构体 在用户空间使用socket 函数创建一个套接字 对应的
  • 数据中台模块介绍

    搭建一款集数据采集 存储 搜索 加工 分析为一体的海关外贸企业大数据平台 融合结构化数据 非结构化数据 实现了统一数据架构 对海量异构数据的存储归档 信息组织 搜索访问 安全控制 分析可视化 以及数据挖掘 数据治理等 如图1所示 1 数据分
  • URAL 1981. Parallel and Perpendicular 对角线的平行和垂直

    1981 Parallel and Perpendicular Time limit 0 5 second Memory limit 64 MB You are given a regular n gon Your task is to c
  • react采用forEach或map两种方式遍历数组

    之前写代码 从后台提取数据并渲染到前台 由于有多组数据 用map遍历会相对方便一点 但是 map不能遍历array数组 只能遍历object对象 所以如果遇到这样的问题可以采用forEach试一下 forEach import React
  • mfc入门基础(二)框架流程与消息机制

    里面有些类名称等承接 mfc入门基础 一 以下内容改编至以下博客 参考博客 VS2010 MFC编程入门之四 MFC应用程序框架分析 软件开发 鸡啄米 VS2010 MFC编程入门之五 MFC消息映射机制概述 软件开发 鸡啄米 一 mfc主
  • IDEA插件推荐

    工具插件 1 IDE Eval Reset 不能多说 福利插件 2 Aixcoder 代码提示 代码纠错 3 MybatisX xml跳转 添加插件后在dao层会多一只戴红色头巾的小鸟 同样在对应xml文件方法前也会对应一直戴蓝色头巾的小鸟
  • iOS(七)在线订餐系统 一:工程初建

    在寻找工作的同时练练项目 在经历了几次的项目后 比当初懂了很多东西 哈哈 想当初添加第三方框架时 一个一个添加进去 现在都用cocoa pods 确实方便 这次就说说cocoa pods吧 1 cocoa pods是什么 当我们在开发iOS
  • 糖糖别胡说,我真的不是签到题目(前缀和)

    文章目录 题目 样例1 提交链接 解析 题目 题目描述 从前 有 n 只萌萌的糖糖 他们分成了两组一起玩游戏 他们会排成一排 第 i 只糖糖会随机得到一个能力值 b i b i bi 从第 i 秒的时候 第 i 只糖糖就可以消灭掉所有排在他