NOIP 2013 花匠】的更多相关文章

有多种方案,找拐点数目最简单O(n) 注意此题有相邻点价值一样,代码改变一点 #include <cstdio> #include<iostream> #include<cstdlib> #include<algorithm> int s,n,k,i,a,b; int main() { while(~scanf("%d%d",&n,&a)) { ; i<n; ++i) { scanf("%d",&…
题目:https://www.luogu.org/problemnew/show/P1970 今天又学习了一个新的神仙操作: 标签是DP,想了一下,没什么心情写,默默打开题解——(狂喜!) 一位大佬(LittlePrincess)的思路简直是颠覆脑回路!! 根据A,B两个条件的描述,只要求有几个波峰波谷就好了.如果在上升突然下降ans就++: 反之同理: 注意,如果在最后的时候还在下降要把最后的一个加上: 因为在最后还在上升时,h[n+1](=0)<h[n] 所以ans会加上: 但是在最后还在下…
NOIP 2013 货车运输[树链剖分] 树链剖分 题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. 输入描述 Input Description 第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道路.接下来 m 行每行 3 个整数 x.y.z,每两个整数之间用一个空格隔开,表示…
Luogu 1979 NOIP 2013 华容道(搜索,最短路径) Description 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 B 玩的华容道与经典的华容道游戏略有不同,游戏规则是这样的: 在一个 nm 棋盘上有 nm 个格子,其中有且只有一个格子是空白的,其余 nm-1个格子上每个格子上有一个棋子,每个棋子的大小都是 11 的: 有些棋子是固定的,有些棋子…
[Noip 2013 Day1-3] 货车运输 做法总结 Online Judge:Luogu-1967 Label:启发式合并,离线,整体二分,按秩合并,倍增,最大生成树 打模拟离线赛时做到,顺便总结一下. 一.启发式合并 离线询问,将询问存在端点上.将每条边按照权值从大到小排列. 依照刚才的顺序依次连上这m条边,利用并查集维护图的连通性.合并时采用启发式合并的思维--将所含元素较小的集合连上较大的集合.对于那个较小的集合,我们直接暴力遍历其中的每个点,再暴力回答那个节点上的询问. 总的时间复…
题目描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定 把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希 望剩下的花排列得比较别致. 具体而言,栋栋的花的高度可以看成一列整数h1,h2..hn.设当一部分花被移走后,剩下的花的高度依次为g1,g2..gn,则栋栋希望下面两个条件中至少有一个满足: 条件 A:对于所有g(2i)>g(2i-1),g(2i)>g(2i+1) 条件 B:对于所有g(2i)<g(2i-1),g(2i)…
http://codevs.cn/problem/3289/ dp转移,树状数组维护前缀max和后缀max进行优化,$O(nlogn)$. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 100003; int in() { int k = 0, fh = 1; char c = getchar(); for(; c < '0' ||…
[算法]贪心 [题解] DP可以f[i][0],f[i][1]表示选了i分别满足条件AB的答案,其优化也是利用了下面的性质,不多赘述. 想象数列的波动,最大值一定是取每个波峰和每个波谷,那么只要O(n)统计就可以了. #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #define ll long long using n…
传送门 解题思路 好多大佬用的dp啊,貌似贪心可以做,每次所选的一定是每个连续递增或递减序列的最后,直接模拟就行了,注意判断一下头和尾相等的情况. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; inline int rd(){ ,f=;char ch=getchar(); :;ch=getchar();} )+(…
http://codevs.cn/problem/3290/ 据说2013年的noip非常难,但Purpleslz学长还是AK了.能A掉这道题真心orz. 设状态$(i,j,k)$表示目标棋子在$(i,j)$这个位置,空格在紧贴着目标棋子的$k$方向,$0≤k<4$. 因为目标棋子要移动,空格肯定在它旁边.往空格的方向走一步,空格便出现在它另一边.对于这两个状态连边,边权为1. 为了使目标棋子向某一方向移动,需要目标棋子不动,空格从紧贴着目标棋子的某一方向移动到紧贴着目标棋子的另一个方向.对于固…