noip2012借教室_noip小学组

noip2012借教室_noip小学组这个题首先很容易想到枚举1-m,再一个一个加起来,判断一下(最直白的暴力)于是又很容易想到用差分数组可以优化一下。就像这样#include<iostream>#include<cstdio>usingnamespacestd;constintmaxn=1000005;intd[maxn],s[maxn],t[maxn],r[maxn];…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

这个题首先很容易想到枚举1-m,再一个一个加起来,判断一下(最直白的暴力)

于是又很容易想到用差分数组可以优化一下。

就像这样

#include <iostream>
#include <cstdio>

using namespace std;
const int maxn=1000005;
int d[maxn],s[maxn],t[maxn],r[maxn];
int c[maxn];int n,m; 
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&r[i]);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&d[i],&s[i],&t[i]);
	}
	for(int i=1;i<=m;i++)
	{
		c[s[i]]+=d[i];c[t[i]+1]-=d[i];
		int sum=0;
		for(int j=1;j<=n;j++)
		{
			sum+=c[j];if(sum>r[j]) 
				{cout<<"-1"<<endl<<i<<endl;return 0;}
		} 
	}
	cout<<0<<endl;
	return 0;
}

然而这样只有40分。。。

我们又发现外层循换i=1-m是满足单调性的

SO,可以二分一下x(x是指1-x都满足条件)

就很愉快的ac了

#include <iostream>
#include <cstdio>
#include <cstring>
 
using namespace std;
const int maxn=1000005;
int d[maxn],s[maxn],t[maxn],r[maxn];
int c[maxn];int n,m;
int ok(int x)
{
	memset(c,0,sizeof(c));
	for(int i=1;i<=x;i++)
	{
		c[s[i]]+=d[i];c[t[i]+1]-=d[i];	
	} 
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		sum+=c[i];if(sum>r[i]) return 0;
	}
	return 1;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&r[i]);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&d[i],&s[i],&t[i]);
	}
	int l=0,r=m;int ans=-1;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ok(mid)) {ans=mid;l=mid+1;}
		else r=mid-1;
	}
	//printf("%d",ans);
	if(ans==m) {printf("%d\n",0);}
	else {printf("-1\n%d",ans+1);}
	return 0;
 } 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172065.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月22日 上午11:36
下一篇 2022年8月22日 上午11:36


相关推荐

  • js修改html中classname,JS中的className操作

    js修改html中classname,JS中的className操作添加 className 1 修改元素的 所有 的 class 用新的 class 替换掉原有的所有 class 可以设置 className 属性 document getElementBy MyElement className MyClass 如果想替换为多个 class 可以使用空格分隔 2 为元素添加新的 class 如果想添加一个新的 class 并保留所有原有的 c

    2026年2月17日
    4
  • oracle连接出现ora-12154,与虚拟机Oracle连接出现ora-12154问题的解决方法

    oracle连接出现ora-12154,与虚拟机Oracle连接出现ora-12154问题的解决方法谈到ora-12154问题,网上有一大堆解决方法,原因基本统一:tns或listener配置不正确。对于listener配置不正确的一般较少发生,大多数人都是按照默认配置一路“下一步”过来的,基本都是orcl的服务名,如果说本地可以连通orcl,别的机子就连不通那应该跟listener关系不大。大部分都是tns配置不正确。我遇到的现象是:在本机建了一个2003的虚拟机,虚拟机里面装了oracle1…

    2022年7月19日
    17
  • Pycharm断点调试说明

    Pycharm断点调试说明给程序加断点 鼠标单击代码左侧有数字的地方

    2026年3月17日
    2
  • HTTP 302错误和HTTP 404错误浅析

    HTTP 302错误和HTTP 404错误浅析HTTP302 错误和 HTTP404 错误浅析 HTTP 返回状态码的含义比较丰富 随着 HTTP 版本的变化 状态码也在逐渐增加 以满足越来越多的状态信息传递 nbsp nbsp nbsp nbsp nbsp 302 错误表示被请求的资源暂时转移 Movedtempora 然后会给出一个转移后的 URL 而浏览器在处理服务器返回的 302 错误时 原则上会重新建立一个 TCP 连接 然后再取重定向后的 URL 的页面 但是如果页面存在于缓存中

    2026年3月17日
    19
  • STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)

    STM32入门开发: 介绍IIC总线、读写AT24C02(EEPROM)(采用模拟时序)一 环境介绍编程软件 keil5 操作系统 win10MCU 型号 STM32F103ZET 编程方式 寄存器开发 方便程序移植到其他单片机 IIC 总线 STM32 本身支持 IIC 硬件时序的 本文采用的是模拟时序 下篇文章就介绍配置 STM32 的 IIC 硬件时序读写 AT24C02 和 AT24C08 模拟时序更加方便移植到其他单片机 通用性更高 不分 MCU 硬件时序效率更高 单每个 MCU 配置方法不同 依赖硬件本身支持 目前器件 采用 AT24C02EEPRO 存储芯

    2026年3月19日
    2
  • 关于广告投放需要懂的几个关键词(DAU,DNU等等)

    关于广告投放需要懂的几个关键词(DAU,DNU等等)DAU 单日活跃用户 DNU 单日新增用户 CPM 按千次展现计费 千次展现价格 ECPM 每千次展示可以获得的广告收入 CPM 是对广告主说的词 你要花多少钱 买一千次广告展示机会 eCPM 是对媒体说的词 你每展示一千次广告 能赚多少钱 CPA 每次行动成本 按用户行为作为指标来计费的广告 一般指消费量 转化量 计算 CPA 广告花费金额 转化数量 ARPU 每用户平均收入 LTV 生命周期总价值 ROAS 目标广告支出回报率 用于衡量每组广告花费能带来多少收入 计算 ROAS 总收入 广告花费 1

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号