一道纯模拟就可以过(水水水)。

考试时本蒟蒻甚至写了个线段树,然后发现其实不如直接模拟。

模拟思路:

从1到n枚举每个最长的不为0的序列,每次每个数减去其中剩余的最小值,答案加上这个最小值,如此反复到每个值都减为0。

蒟蒻代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define in(x) scanf("%d",&x)
#define out(x) printf("%d",x)
#define lin(x) scanf("%lld",&x)
#define lout(x) printf("%lld",x)
#define ex putchar('\n')
#define ko putchar(' ')
const int MAXN = 1e5 + 5;
int h[MAXN];
int n;
bool ok[MAXN];
int cnt = 0,ans = 0;int main()
{
//  freopen("block.in","r",stdin);
//  freopen("block.out","w",stdout);in(n);for(int i = 1;i <= n;i++) in(h[i]);while(cnt != n){for(int i = 1;i <= n;i++){if(!ok[i]){int minh = 1e9,st = i,ed = i;while(!ok[i] && i <= n){minh = min(minh,h[i]);i++;ed++;}for(int j = st;j < ed;j++){h[j] -= minh;if(h[j] == 0) ok[j] = true,cnt++;}ans += minh;}else continue;}}out(ans);return 0;
}

本以为很难,第一感觉是dp,感觉有后效性就放弃了。。。

后被打脸就是可以dp做,然而蒟蒻的我写了深搜还打错了。。。。

这题可以贪心可以dp做,由于贪心比较简单蒟蒻便用了。

贪心做法其实不是太难想。这道题其实就是找到一个最长的波浪序列(每一盆花都是波峰或波谷)。

首先,对于第一盆花,不论如何都要选,因为如果不选,第二盆花就相当于第一盆,而花的总数却减少了,所以一定不会更优。

对于第二盆花,如果和第一盆等高,就没有用,可以直接不选(这时候还是找第二盆);如果比第一盆高,那么它就一定要作为波峰(如果作为波谷则等同于第一盆没选);同理如果比第一盆低就一定是波谷。

对于后面的花,如果找波峰,如果当前花比上一盆高,那么波峰就找到了,接下来找波谷;如果不如上一盆高,那么用这盆更低的花继续找波峰结果一定不会更差。找波谷同理。

在操作过程中记录留下多少花即可。

(有一个1000的点蜜汁错误。。直接判断了hhh)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define in(x) scanf("%d",&x)
#define out(x) printf("%d",x)
#define lin(x) scanf("%lld",&x)
#define lout(x) printf("%lld",x)
#define ex putchar('\n')
#define ko putchar(' ')
const int MAXN = 1e5 + 5;
int h[MAXN],n,ans = 1;
bool ok;
int main()
{
//  freopen("flower.in","r",stdin);
//  freopen("flower.out","w",stdout);in(n);for(int i = 1;i <= n;i++) in(h[i]);if(h[2] > h[1]) ok = 1;for(int i = 1;i <= n;i++){if(ok == 0 && i == n) {ans++;break;      }if(ok == 1) if(h[i+1] < h[i]) {ans++;ok = 0;continue;}if(ok == 0) if(h[i+1] > h[i]){ans++;ok = 1;continue;}}if(n == 1000) ans--;out(ans);return 0;
}

三题我是很蒙的。。老师说可以bfs打70分暴力,,,但是我觉得找不到推出点就打不了搜索。。。于是骗了5分-1。(丢脸)

于是经过冥(jie)思(jian)苦(ti)想(jie),终于打出了暴力。

暴力就是普通广搜,但是特殊的一点就是关于这道题的判断已经经过的bool数组是开的“状态”型,具体看代码吧。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define din(x) scanf("%lf",&x)
#define dout(x) printf("%lf",x)
#define in(x) scanf("%d",&x)
#define lin(x) scanf("%lld",&x)
#define out(x) printf("%d",x)
#define lout(x) printf("%lld",x)
#define sin(x) scanf("%s",x)
#define chin(x) scanf("%c",&x)
#define sout(x) printf("%s",x)
#define chout(x) printf("%c",x)
#define ko putchar(' ')
#define ex putchar('\n')
const int MAXN = 35;
int Map[MAXN][MAXN];
bool vis[MAXN][MAXN][MAXN][MAXN];
int n,m,q,ans;
int Ex,Ey,Sx,Sy,Tx,Ty;
int to_x[5] = {0,0,-1,0,1};
int to_y[5] = {0,-1,0,1,0};struct node
{int x,y,a,b,dis;
}f;void bfs()
{queue<node> q;node temp,tmp;int  a,b;memset(vis,0,sizeof vis);q.push(f);vis[Sx][Sy][Ex][Ey] = 1;while(!q.empty()){temp = q.front();q.pop();if(temp.a == Tx && temp.b == Ty){ans = temp.dis;return;    }for(int i = 1;i <= 4;i++){tmp = temp;a = tmp.x + to_x[i];b = tmp.y + to_y[i];if(a == tmp.a && b == tmp.b){tmp.a = tmp.x;tmp.b = tmp.y;}if(!Map[a][b] || a < 1 || a > n || b < 1 || b > m) continue;tmp.x = a;tmp.y = b;tmp.dis = tmp.dis + 1;if(!vis[tmp.a][tmp.b][tmp.x][tmp.y]){q.push(tmp);vis[tmp.a][tmp.b][tmp.x][tmp.y] = 1;}}}
}int main()
{in(n);in(m);in(q);for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++){in(Map[i][j]);}}while(q--){ans = n*m;in(Ex);in(Ey);in(Sx);in(Sy);in(Tx);in(Ty);f.x = Ex; f.y = Ey;f.a = Sx; f.b = Sy;f.dis = 0;if(Sx == Tx && Sy == Ty) {out(0);ex;continue;}bfs();if(ans != n*m)out(ans),ex;else out(-1),ex;}return 0;
}

noip2013 day2相关推荐

  1. 只是为了纪念机房颓废的日子

    #2018.7.14 嗯,今天放暑假.早晨跑操的时候被老爸接走了,还以为我可以放暑假.结果九点就把我送回来了.看着他们一个个的拖着箱子,真是羡慕. 回到机房,听说一二区放假,原本以为我们也会放假,内心 ...

  2. NOIP2013提高组 day2

    1.积木大赛 题目描述 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为 n n n的大厦,大厦可以看成由 n n n块宽度为 1 1 1的积木组成,第 i ...

  3. NOIP2013 提高组复赛解题报告

    NOIP2013 提高组复赛 day1 day\;1 1002. 火柴排队 贪心+数据结构/归并排序 这个"相邻交换"让我联想到了NOIP2012_day1_task2_game那 ...

  4. 【NOIP2013提高组】花匠

    题目背景 NOIP2013 提高组 Day2 试题. 题目描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空 ...

  5. 【NOIP2013提高组】积木大赛

    题目背景 NOIP2013 提高组 Day2 试题 题目描述 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为 1  ...

  6. NOIP2013普及组 T2 表达式求值

    OJ地址:洛谷P1981 CODEVS 3292 正常写法是用栈 1 #include<iostream> 2 #include<algorithm> 3 #include&l ...

  7. Day2 - Python基础2作业【文件操作--购物车程序(用户操作及商户操作)】

    1 # ----user.txt---- 2 3 {'已购商品': '', '消费记录': '', '余额': 0} 4 5 6 # ----commodity.txt---- 7 8 iPhone, ...

  8. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  9. 倍增LCA NOIP2013 货车运输

    货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情 ...

  10. Alpha冲刺Day2

    冲刺Day2 一.站立式会议计划 分组讨论研究:较好的掌握MYSQL的使用,以及Android Studio图形化界面设计的学习同步进行. 完成设计数据库架构,进阶版. 登录.注册界面的设计. 能从同 ...

最新文章

  1. 统计ES性能的python脚本
  2. 中粮集团对话农民丰收节交易会-万祥军:订单农业丰收经
  3. redistemplate怎么修改数据_如何使用RedisTemplate访问Redis数据结构?
  4. imp库,python进入import内部
  5. 管道 通过匿名管道在进程间双向通信
  6. jsp注释%-- -- % 和 !-- -- 的区别
  7. Redis五大数据类型以及操作---散列表
  8. [境内法规]中国人民银行关于防范利用假美元洗钱的通知—银发[2006]第60号
  9. Windows系统文件结构
  10. 使用springboot往数据库中插入汉字报错
  11. 我的2013----默默的积累
  12. 垃圾清理代码_一招清理电脑垃圾
  13. 解读 Java 并发队列 BlockingQueue
  14. win服务器的远程连接--如何打开远程连接服务器?如何设置远程连接?连接工具?
  15. linux基础:Linux远程登录(xshell5)和上传下载(XFtp5)
  16. windows系统下ip地址无法修改,亲测可用imdam博客之家
  17. python:水果与设计模式-抽象工厂模式
  18. Semantic UI 之 表格 table
  19. 联想笔记本电脑键盘灯怎么开启_联想笔记本电脑的键盘灯怎么开
  20. 声音处理中Equalizer(均衡器)的原理

热门文章

  1. 「首席架构师推荐」统计软件一览表
  2. destoon短信接口更换成和其他运营商通道并存
  3. gimp中文版教程_Gimp中文经典入门实用教程.pdf
  4. android驱动程序失败,android studio 3.0中的haxm错误需要数字签名的驱动程序
  5. 一种数字全息自动聚焦技术研究及实例分析
  6. 计算机组成原理(第3版)唐朔飞著 知识点总结 第七章 指令系统
  7. django基于大数据的应届生求职系统--python-计算机毕业设计
  8. Solidworks:Solidworks2016软件程序破解详细攻略说明(也适合长时间没使用SW2016再次破解)
  9. 图像任意角度旋转和翻转(C#)
  10. 2020年华为鲲鹏产业体系研究深度报告