BZOJ1736 [Usaco2005 jan]The Wedding Juicer 婚宴的榨汁机
从外面一点一点往里面拓展(floodfill),每次找出最小的一个点,计算它对答案的贡献就好了。。。
找最小的点的话,直接pq就行
/**************************************************************
Problem: 1736
User: rausen
Language: C++
Result: Accepted
Time:196 ms
Memory:2116 kb
****************************************************************/ #include <cstdio>
#include <queue> using namespace std;
typedef long long ll;
const int N = ;
const int dx[] = {, , , -};
const int dy[] = {, -, , }; inline int read(); struct data {
int x, y, h;
data(int _x = , int _y = , int _h = ) : x(_x), y(_y), h(_h) {} inline bool operator < (const data &d) const {
return h > d.h;
}
}; int n, m;
int mp[N][N], v[N][N];
priority_queue <data> h; inline ll work(){
ll res = ;
int x, y, k;
data now;
while (!h.empty()) {
now = h.top(), h.pop();
for (k = ; k < ; ++k) {
x = now.x + dx[k], y = now.y + dy[k];
if (x <= || y <= || x > n || y > m || v[x][y]) continue;
v[x][y] = ;
if (mp[x][y] < now.h)
res += now.h - mp[x][y], mp[x][y] = now.h;
h.push(data(x, y, mp[x][y]));
}
}
return res;
} int main() {
int i, j;
m = read(), n = read();
for (i = ; i <= n; ++i)
for (j = ; j <= m; ++j) mp[i][j] = read();
for (i = ; i <= n; ++i)
for (j = ; j <= m; ++j)
if (i == || j == || i == n || j == m)
h.push(data(i, j, mp[i][j])), v[i][j] = ;
printf("%lld\n", work());
return ;
} inline int read() {
static int x;
static char ch;
x = , ch = getchar();
while (ch < '' || '' < ch)
ch = getchar();
while ('' <= ch && ch <= '') {
x = x * + ch - '';
ch = getchar();
}
return x;
}
BZOJ1736 [Usaco2005 jan]The Wedding Juicer 婚宴的榨汁机的更多相关文章
- BZOJ1679: [Usaco2005 Jan]Moo Volume 牛的呼声
1679: [Usaco2005 Jan]Moo Volume 牛的呼声 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 723 Solved: 346[ ...
- BZOJ1677: [Usaco2005 Jan]Sumsets 求和
1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 570 Solved: 310[Submi ...
- BZOJ 1677: [Usaco2005 Jan]Sumsets 求和( dp )
完全背包.. --------------------------------------------------------------------------------------- #incl ...
- BZOJ 1679: [Usaco2005 Jan]Moo Volume 牛的呼声( )
一开始直接 O( n² ) 暴力..结果就 A 了... USACO 数据是有多弱 = = 先sort , 然后自己再YY一下就能想出来...具体看code --------------------- ...
- BZOJ 1677: [Usaco2005 Jan]Sumsets 求和
题目 1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 617 Solved: 344[Su ...
- 1677: [Usaco2005 Jan]Sumsets 求和
1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 626 Solved: 348[Submi ...
- bzoj 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场 最小点覆盖
链接 1735: [Usaco2005 jan]Muddy Fields 泥泞的牧场 思路 这就是个上一篇的稍微麻烦版(是变脸版,其实没麻烦) 用边长为1的模板覆盖地图上的没有长草的土地,不能覆盖草地 ...
- 【BZOJ1677】[Usaco2005 Jan]Sumsets 求和 递推
... #include <iostream> using namespace std; ]; int n,i; int main() { cin>>n; f[]=; ;i&l ...
- BZOJ1737 [Usaco2005 jan]Naptime 午睡时间
断环然后裸DP就好了... $f[i][j][k]$表示1号时间段没有被算入答案,到了第$i$个时间段,一共选了$j$个时间段,$k = 0 /1$表示第i个时间段有没有被算进答案的最优值 $g[i] ...
随机推荐
- C# 线程(四):生产者和消费者
From : http://kb.cnblogs.com/page/42530/ 前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时 ...
- box-shadow使用指南
Summary The box-shadow property describes one or more shadow effects as a comma-separated list. It e ...
- apiCloud中图片裁剪模块FNImageClip的使用
思路 1.获取需裁剪图片的地址 2.跳转到裁剪页面 3.裁剪成功返回新图片地址 4.替换原有图片地址 增加修饰和事件 str += '<li class="tu image" ...
- openfire消息通知推送
package cn.zsmy.utils.openfire; import java.io.BufferedReader; import java.io.InputStreamReader; imp ...
- iOS开发 自定义窗口 以及 点击scrollView置顶
static UIWindow *topWindow_; static UIScrollView *scrollView_; /** * 显示顶部窗口 */ + (void)show { dispat ...
- HMM隐马尔科夫模型
这是一个非常重要的模型,凡是学统计学.机器学习.数据挖掘的人都应该彻底搞懂. python包: hmmlearn 0.2.0 https://github.com/hmmlearn/hmmlearn ...
- 栈 - 从零开始实现by C++
参考链接:数据结构探险-栈篇 学了队列之后,栈就很简单了,换汤不换药. 栈 栈的模型 后进先出(电梯,进制转换,括号的匹配检测) 栈的基本元素 栈顶,栈底(一般很少用到),栈容量,栈长度 注意 ...
- De novo 测序基础知识
名词解释 De novo:拉丁文,从头开始的意思,de nove测序则是指在不需要任何参考序列的情况下对某一物种进行基因组测序,然后将测得的序列进行拼接.组装,从而绘制该物种的全基因组序列图谱. 重测 ...
- 在线读取Mongodb数据库下载EXCEL文件
版本:Mongodb2.4.8 通过页面下载Excel文件 jsp <%@ page language="java" contentType="text/html; ...
- linux笔记:搜索命令find,locate,which,whereis,grep
命令名称:find功能:文件搜索命令所在路径:/bin/find用法:find 搜索范围 匹配条件其他:举例:find /root -name initfind /root -size +1024fi ...