nyoj 547 优先队列
#include<stdio.h>
#include<string.h>
#include<queue>//水杯盛水问题,用优先队列不断从最小的边缘开始
using namespace std;
int n,m;
#define N 400
int p[N][N];
struct node {
int x,y,w;
friend bool operator<(node a,node b) {//优先队列
return a.w>b.w;//从小到大出队
}
};
int visit[N][N];
int dis[4][2]={1,0,0,1,-1,0,0,-1};//四个方向
int judge(int x,int y) {
if(x<=n&&x>=1&&y<=m&&y>=1&&!visit[x][y])
return 1;
return 0;
}
int main() {
int i,j,sum;
while(scanf("%d%d",&m,&n)!=EOF) {
priority_queue<node>q;
node cur,next;
memset(visit,0,sizeof(visit));
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) {
scanf("%d",&p[i][j]);
if(j==1||j==m||i==1||i==n) {//先将杯子的边缘加入
cur.x=i;cur.y=j;
cur.w=p[i][j];
visit[i][j]=1;//标记边缘不能搜索
q.push(cur);
}
}
sum=0;
while(!q.empty()) {//每次从最小的边缘开始
cur=q.top();
q.pop();
for(i=0;i<4;i++) {
int xx=next.x=cur.x+dis[i][0];
int yy=next.y=cur.y+dis[i][1];
if(judge(xx,yy)) {//判断
visit[xx][yy]=1;
if(p[xx][yy]<cur.w) {//如果当前的边缘大于水杯内部
sum+=cur.w-p[xx][yy];//高度差即为所能盛的水
next.w=cur.w;//改变当前点值
q.push(next);
}
else {//
next.w=p[xx][yy];/
q.push(next);//
}
}
}
}
printf("%d\n",sum);//
}
return 0;
}
nyoj 547 优先队列的更多相关文章
- nyoj 284 坦克大战 (优先队列)
题目链接:http://acm.nyist.net/JudgeOnline/status.php?pid=284 特殊数据: 5 5 BBEEY EEERB SSERB SSERB SSETB 7 非 ...
- nyoj 1022 最少步数【优先队列+广搜】
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- nyoj 757 期末考试【优先队列+贪心】
期末考试 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没 交作业就会扣 ...
- NYOJ 1107 最高的奖励(贪心+优先队列)
最高的奖励 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 请问:挖掘机技术哪家强?AC了告诉你! 给你N(N<=3*10^4)个任务,每个任务有一个截止完成时 ...
- NYOJ 284 坦克大战 bfs + 优先队列
这类带权的边的图,直接广搜不行,要加上优先队列,这样得到的结果才是最优的,这样每次先找权值最小的,代码如下 #include <stdio.h> #include <iostream ...
- nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
懒省事的小明 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的 ...
- NYOJ 284 坦克大战 【BFS】+【优先队列】
坦克大战 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 Many of us had played the game "Battle city" ...
- nyoj 55 懒省事的小明(priority_queue优先队列)
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- nyoj 483 Nightmare【bfs+优先队列】
Nightmare 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Ignatius had a nightmare last night. He found him ...
随机推荐
- 使用playonlinux安装windows软件
转载 http://qspy.is-programmer.com/posts/40913.html Wine提供了一个用来运行Windows程序的平台.PlayOnLinux 是使用 Python 写 ...
- 【POJ 2248】 Addition Chain
[题目链接] http://poj.org/problem?id=2248 [算法] 搜索剪枝 剪枝1 : 优化搜索顺序,从大到小枚举 剪枝2 : Ai + Aj可能相等,只需搜一次即可 剪枝3 : ...
- 关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案 目录 关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案 目录 安装VC redite ...
- 把一个文件夹下的多个csv文件合并到一个excel的多个sheet
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import pandas as pd import os import re if __name__ = ...
- Swift备忘录
Swift 备忘录 2015-4 一.简介 1.Swift 语言由苹果公司在2010年7月开始设计,在 2014 年6月推出,在 2015 年 12 月 3 日开源 2.特点(官方): (1)苹果宣称 ...
- Gym - 101981G The 2018 ICPC Asia Nanjing Regional Contest G.Pyramid 找规律
题面 题意:数一个n阶三角形中,有多少个全等三角形,n<=1e9 题解:拿到题想找规律,手画开始一直数漏....,最后还是打了个表 (打表就是随便定个点为(0,0),然后(2,0),(4,0), ...
- im4java+GraphicsMagick
package com.jeeplus.modules.isp.utils; import java.io.ByteArrayInputStream; import java.io.ByteArray ...
- C# 多线程系列(四)
Parallel类 Parallel类定义了for.foreach和invoke的静态方法.Parallel类使用多个任务,因此使用多个线程来完成这个作业. Parallel.For Parallel ...
- Android开放百度地图集成
1.创建应用 获取AK (我理解为Application key) 通过百度账号登录百度地图开放平台,进入API控制台 http://lbsyun.baidu.com/apiconsole/key ...
- mui图片懒加载
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...