首页 > 其他分享 >J. New Energy Vehicle

J. New Energy Vehicle

时间:2024-10-28 13:57:56浏览次数:3  
标签:cur int Energy 100005 n1 Vehicle New sum dis

  • 怎样实现自定义排序函数的堆呢?
  • 从 C++11 开始,如果使用 lambda 函数自定义 Compare 则需要将其作为构造函数的参数代入,如:
    priority_queue<int,vector<int>,decltype(cmp)>q(cmp);
  • decltype 说明符可以推断表达式的类型
  • 当然本题其实不需要自定义排序函数,因为在调用排序运算符时,决不能读取外部数值可能会改变的数组
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int a[100005],b[100005],x[100005],t[100005];
deque<int>q[100005];
priority_queue<pair<int,int> >cur;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int T;
	cin>>T;
	while(T--)
	{
		int n,m;
		cin>>n>>m;
		long long sum=0;
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			b[i]=a[i];
			sum+=a[i];
			q[i].clear();
		}
		for(int i=1;i<=m;i++)
		{
			cin>>x[i]>>t[i];
			q[t[i]].push_back(x[i]);
		}
		while(cur.size())
		{
			cur.pop();
		}
		for(int i=1;i<=n;i++)
		{
			q[i].push_back(INT_MAX);
			cur.push(make_pair(-q[i].front(),i));
		}
		for(int i=1;i<=m;i++)
		{
			int dis=x[i]-x[i-1];
			while(cur.size())
			{
				int n1=cur.top().second;
				if(-cur.top().first!=q[n1].front())
				{
					cur.pop();
					continue;
				}
				if(b[n1]>dis)
				{
					b[n1]-=dis;
					dis=0;
					break;
				}
				else if(b[n1]==dis)
				{
					b[n1]=0;
					dis=0;
					cur.pop();
					break;
				}
				else
				{
					dis-=b[n1];
					b[n1]=0;
					cur.pop();
				}
			}
			if(dis>0)
			{
				break;
			}
			sum=sum+a[t[i]]-b[t[i]];
			b[t[i]]=a[t[i]];
			q[t[i]].pop_front();
			cur.push(make_pair(-q[t[i]].front(),t[i]));
		}
		cout<<sum<<endl;
	}
	return 0;
}

标签:cur,int,Energy,100005,n1,Vehicle,New,sum,dis
From: https://www.cnblogs.com/watersail/p/18509936

相关文章

  • jsp ssm 校园新闻管理系统 新闻发布系统 news 项目源码 web java
    一、项目简介本项目是一套基于SSM的校园新闻管理系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、软件工具等。项目都经过严格调试,确保可以运行!二、技术实现​后端技术:Spring、SpringMVC、MyBatis前端技术:JSP、HTML、CSS、Ja......
  • Qt 反射 newInstance
    pragmaonceinclude<qobject.h>includeusingnamespacestd;classPerson:publicQObject{Q_OBJECTpublic:Q_INVOKABLEPerson(intage,stringname){this->_age=age;this->_name=name;}Person(constPerson&p)noexcept{this->_......
  • NewStar re ezencrypt wp
    NewStarreezencryptwpjadx打开[外链图片转存中…(img-qiKfNETY-1729913193217)]发现加密,点进去[外链图片转存中…(img-q5cEWSnD-1729913193218)]发现先AES加密,key是title,然后Base64编码,让母后doEncCheck,我们没找到doEncCHeck的源码官解提到有native标签说明函......
  • C++ 内存管理 堆和栈、内存泄漏、内存分配、指针与内存、智能指针、malloc和free、new
    1.堆和栈的区别1.**管理方式**:-**栈**:自动管理。当函数调用时,局部变量会自动分配在栈上。函数执行完毕后,这些变量会自动释放。-**堆**:手动管理。程序员需要使用`new`来在堆上分配内存,并在不再需要时使用`delete`来释放。2.**使用方式和寿命**:-**栈**:用......
  • 第九届能源系统、电气与电力国际学术会议 (ESEP 2024) 2024 9th International Confe
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍第九届能源系统、电气与电力国际学术会议(ESEP2024)定于2024年11月29-12月1日在中......
  • new、delete重载实现对象池
    new、delete重载实现对象池重载new之后,函数执行完成之后会自动调用构造函数;同样的delete是先析构在执行内存释放。对象池当有大量的开辟空间与释放空间的操作时,会影响程序的执行性能。因此,可以预先开辟出一块内存,需要创建对象的时候去取,需要释放的时候,归还内存。那么程序......
  • NewStar2024-week3-Crypto
    古典密码不想看而且最近很忙,wp就贴exp了Crypto不用谢喵fromCrypto.CipherimportAESfromCrypto.Util.numberimport*importosKEY=b"fake_key_fake_ke"FLAG="flag{fake_flag_fake_flag}"defdecrypt(c):AES_ECB=AES.new(KEY,AES.MODE_ECB)......
  • MIT-OC Electrochemical Energy Systems4-1
    四、输运现象L16浓度极化目录浓度极化的背景线性扩散与对流2.1费克定律2.2分子随机游走与扩散系数2.3质量守恒与对流扩散方程极限电流密度3.1浓度极化的三种基本机制3.2极限电流的定义3.3极限电流密度的推导固体氧化物燃料电池实例4.1电池反应及稳态扩散4.2......
  • malloc底层实现以及和new的比较
    背景:前几天去面试,被问到了一个问题:“malloc的底层实现是怎样的?怎样防止内存碎片?”当时答的不够好,现在再整理一下。(本文档通过收集整理网上博客而来。先挖个坑,等有时间了去看一下《深入理解操作系统》的第九章虚拟内存,再重新整理一篇)内存布局Linux中每个进程都有自己的虚拟地......
  • MIT-OC Electrochemical Energy Systems 3-4
    三、反应动力学L15离子吸附与嵌入目录中性物质的表面吸附与嵌入1.1平衡态1.1.1Langmuir等温线1.1.2Frumkin等温线1.2动力学1.2.1标准吸附动力学1.2.2过渡态模型1.2.2.1仅考虑排斥体积的模型1.2.2.2考虑相互作用的模型吸附/嵌入过程中的法拉第反应2.1......