接水问题(NOIP 2010 PJT2)
题目:
使用优先队列。
开优先队列:priority_queue<int,vector<int>,greater<int>> que;
1.输入
输入 n(<=10000),m(<=100)(m<=n)
将输入的打水时间存入a数组中。
2.处理数据
2.1遍历a[i]数组,i<=m时,将a[i]推入que中。
i>m时,将a[i]加上que.top(),再que.pop(),最后将a[i]入队。
3.输出 队尾元素;
程序:
#include<bits/stdc++.h> using namespace std; int n,m,a[10090]={0}; priority_queue<int,vector<int>,greater<int>> que; int main() { #ifdef LOCAL freopen( "1.in", "r", stdin ); freopen( "1.out", "w", stdout ); #endif scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } for(int i=1;i<=n;i++) { if(i<=m) { que.push(a[i]); } else { a[i]+=que.top(); que.pop(); que.push(a[i]); } } for(int i=1;i<m;i++) que.pop(); printf("%d\n",que.top()); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」