AcWing登山】的更多相关文章

这是2006北大举办的ACM的一道题. 题意为:给定景点海拔高度,队员们不去游览相同高度的景点,一开始往上爬,一但往下爬就不能再向上爬,求最多可以游览多少个景点.那么我们可以得到一个结论:以一个最高点为区分,前面的是最大上升子序列,后面的是最大下降子序列.然后我们就彻底把此传化为了LIS问题.我们开始思考:集合?以峰值为终点的最大子序列长度(一个1-n;一个n~1).属性?最大值.划分依据与计算?以a[i]结尾的序列a[1],a[2],a[i-1],a[i]里找到a[j]<a[i[,那么状态则可…
#include<iostream> using namespace std ; ; int f[N],g[N]; int w[N]; int main() { int n; cin>>n; ; ; i<=n; i++) cin>>w[i]; ; i<=n; i++) { f[i]=; ; j<i; j++) { ); } } ; i--) { g[i]=; for(int j=n; j>i; j--) { ); } } ; i<=n; i…
题目: Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi.  小修从西往东登山.每到一座山峰,她就回头观望自己走过的艰辛历程.在第i座山峰,她记录下自己回头能看到的山峰数si.  何谓"能看到"?如果在第i座山峰,存在j < k < i,hj < hk,那么第j座山峰就是不可见的.除了不可见的山峰,其余的山峰都是可见的.  回家之后,小修把所有的si加起来得到S作为她此次旅行快乐值…
题目链接:https://www.acwing.com/problem/content/605/ 题目大意: 略 分析: 用dp[i][j]表示用j元钱能在前i只怪兽上所能贿赂到的最大武力值. 有一种情况就是打到第i只怪兽所需的最低花费大于j,那么令dp[i][j] = -1. 那么dp[i + 1][j],也就是同样用j元钱能在前i + 1只怪兽上所能贿赂到的最大武力值是多少呢?有3种情况: 1:dp[i][j] = -1,显然dp[i + 1][j] = -1. 2:dp[i][j] < d…
描述 五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号.同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了.队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么? 输入Line 1: N (2 <= N <= 1000) 景点数Line 2: N个整数,每个景点的海拔输出最多能浏览的景点数样例输入 8 1…
https://www.acwing.com/problem/content/145 #include <iostream> #include <algorithm> using namespace std; ; int n; int a[N]; class TrieNode { public: TrieNode() {}; TrieNode* children[]; }; class Trie { public: Trie() { root = new TrieNode; } v…
https://www.acwing.com/problem/content/155/ #include <cstring> #include <iostream> #include <algorithm> #include <stack> using namespace std; const int N = 1010; int n; int a[N], minv[N]; bool g[N][N]; int color[N]; bool dfs(int u,…
登山 Time Limit: 10 Sec  Memory Limit: 256 MB Description 恶梦是一个登山爱好者,今天他来到了黄山 俗话说的好,不走回头路.所以在黄山,你只能往前走,或者往上走. 并且很显然的是,当你走到山脊的时候,你不能够往上走,你只能往前走一步再往上走. 抽象一点而言就是,你可以把黄山视为一个N * N格点图,恶梦从(0,0)开始出发,要走到 (N,N). 当他走到位置(x,y)的时候,它可以往(x + 1,y),或(x,y+1)走. 并且当他走到(x,x…
习题地址 https://www.acwing.com/problem/content/description/3/ 题目描述有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用. 第 i 种物品的体积是 vi,价值是 wi. 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大.输出最大价值. 输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积. 接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值. 输出…
给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量. 输入格式 第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边. 输出格式 输出共N行,表示每个点能够到达的点的数量. 数据范围 1≤N,M≤30000 显然可以用拓扑排序+状态压缩来做, 用一个n位的二进制数存每一个f[x], 其中第i位是1表示x能到i,0则不能到i, 这样就相当于存在x 到 y的一条边,f[x] |= f[y], 再预处理处拓扑序, 反向枚举, 最后判断每个f[i]中的个数,…