AcWing 165. 小猫爬山 DFS】的更多相关文章

165. 小猫爬山 https://www.acwing.com/problem/content/description/167/ 题目 思路 dfs每一个小猫,对于要不要开新车的状态再进行dfs(注意dfs本质是回溯) 剪枝:1.从大到小排序,后续可选空间变少:2.所得到的方案大于当前最小值时,直接返回 代码 #include <iostream> #include <algorithm> using namespace std; const int N = 20; int a[…
翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. 索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CNC1.C2……CN. 当然,每辆缆车上的小猫的重量之和不能超过W. 每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 输入格式 第1行:包含两个用空格隔开的整数,N和W. 第2..N+1行:每行一个…
Analysis 这道题是搜索,类似于小木棍,加一些剪枝. 第一个剪枝是如果当前的答案已经大于了我们已知的最小答案,不用说直接return返回即可. 第二个剪枝是我们可以将小猫的体重从大到小排序,这样我们的搜索树就会缩短许多. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 18+10 using namespace std; typ…
P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 描述 Freda和rainbow只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,Freda和rainb…
P2018 「Nescafé26」小猫爬山 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 描述 Freda和rainbow只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,Freda和rainb…
CH2201 小猫爬山 背景 Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 描述 Freda和rainbow只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2--CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,Freda和rainbow就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 输入格式 第一行包含两…
题目描述: 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. 索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN. 当然,每辆缆车上的小猫的重量之和不能超过W. 每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 输入格式 第1行:包含两个用空格隔开的整数,N和W. 第2..N+1行:每行一个整数,…
题目 题目描述 Freda 和 rainbow 饲养了 N 只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们 终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Freda 和 rainbow 只好花钱让它们坐索道下山.索道上的缆车最大承重量为 W,而 N 只 小猫的重量分别是 C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过 W.每 租用一辆缆车,Freda 和 rainbow 就要付 1 美元,所以他们想知道,最少需要付多少美元才 能把这 N 只小猫都运送下…
题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,WD和LHX就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 输入输出格式 输入格式: 第一行包含两个用空格隔开的整数,N和W. 接下来N行每行一个整数,其中第i+1行…
题目描述 Description Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Freda和rainbow只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,Freda和rainbow就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 日常刷lyd书系列.qw…
https://www.luogu.org/problem/show?pid=1361#sub 题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,WD和LHX就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 输入输出格…
[题目描述]: Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Freda和rainbow只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,Freda和rainbow就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? [输入描述]: 第一行包含两个用空格隔开的…
题目描述 WD和LHX饲养了N只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了. WD和LHX只好花钱让它们坐索道下山.索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2……CN.当然,每辆缆车上的小猫的重量之和不能超过W.每租用一辆缆车,WD和LHX就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山? 输入输出格式 输入格式: 第一行包含两个用空格隔开的整数,N和W. 接下来N行每行一个整数,其中第i+1行…
原题链接 第一眼还以为是贪心,然后随便找了几组例子瞬间推翻贪心的想法.发现\(n\leqslant18\),显然是用爆搜+剪枝. 爆搜主体我是对小猫进行枚举,判断增添缆车,其实这是一个比较慢的搜法,而另一个更快的搜法是通过枚举缆车,这样只要剪一点枝即可过,而我用的方法则需要更多剪枝才可过. 显然当搜索过程中若缆车的数量已经比之前的搜出的缆车数量多,即可直接返回,因为当前不可能比之前的更优. 枚举小猫时,为了可以不用枚举已经登上缆车的小猫,可以使用双向链表来储存小猫,递归前将这次枚举的小猫\(O(…
2018,这个题号吼哇! 搜索第一题,巨水. WA了一次,因为忘了还原... #include <cstdio> ; int n, W, ans, weigh[N], cost[N]; inline void min(int &a, int b) { if(a > b) a = b; return; } void DFS(int k, int cnt) { ) { min(ans, cnt); return; } if(cnt >= ans) return; ; i <…
之前做过一道题"破锣摇滚乐队",把猫都编了号,每辆车只能装一些编号递增的猫,而且前一辆车的猫编号都比后一辆车小.那道题的DP状态是:f[i][j]表示装了前i只猫,使用了j辆车时第j辆车所剩空间的最大值.转移时,考虑第i只猫是新坐一辆车(从f[i-1][j-1]转移)还是坐第j辆车剩下的空位(从f[i-1][j]转移),当然要从某个子状态转移过来,必须保证这个子状态是存在的(f[i][j]存在就是说j辆车能够塞下前i只猫) 这个题,没有顺序的限制,所以无法直接套用那道题的状态.但n&l…
 Stamps  The government of Nova Mareterrania requires that various legal documents have stamps attached to them so that the government can derive revenue from them. In terms of recent legislation, each class of document is limited in the number of st…
搜索进阶 22.4.14 (PS:还有 字串变换 A*两题 生日蛋糕 回转游戏 没做) 感觉暂时用不上 BFS 1. Flood Fill 在线性时间复杂度内,找到某个点所在的连通块 思路 统计连通块个数(多个连通块):逮着一个就开搜 连通性问题(能走多远,迷宫性问题,一个连通块):起点开始搜 池塘计数 普通八连通 城堡问题 考察读入理解 int dx[] = {0, -1, 0, 1}, dy[] = {-1, 0, 1, 0}; //按照西北东南的顺序 int bfs (int x, int…
4题均为128M,1s 1. 锻炼计划(exercise.pas) 身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题.小x设计了自己的锻炼计划,但他不知道这个计划是否可行,换句话说如果计划不当可能会让他的体力超支,所以小x请你帮助他. 一天有1440分钟,所以小x列出的是这一整天第1至第1440分钟的计划.小x的体力用一个整数来表示,他会按照计划表进行锻炼,同时,每分钟小x的体力会自动增加1.如果某一分钟末小x的体力小于等于零,那么可怜的小x就累死了…… 输入(exe…
魔兽争霸 难度级别:C: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 小x正在销魂地玩魔兽他正控制着死亡骑士和n个食尸鬼(编号1-n)去打猎死亡骑士有个魔法,叫做“死亡缠绕”,可以给食尸鬼补充HP战斗过程中敌人会对食尸鬼实施攻击,食尸鬼的HP会减少,小x希望随时知道自己部队的情况,即HP值第k多的食尸鬼有多少HP,以便决定如何施放魔法.请同学们帮助他:)小x向你发出3种信号:(下划线在输入数据中表现为空格)A_i_a表示敌军向第i个食…
1. 锻炼计划(exercise.pas) 身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题.小x设计了自己的锻炼计划,但他不知道这个计划是否可行,换句话说如果计划不当可能会让他的体力超支,所以小x请你帮助他. 一天有1440分钟,所以小x列出的是这一整天第1至第1440分钟的计划.小x的体力用一个整数来表示,他会按照计划表进行锻炼,同时,每分钟小x的体力会自动增加1.如果某一分钟末小x的体力小于等于零,那么可怜的小x就累死了…… 输入(exercise.in) 第一…
我好菜啊!连暴搜都不会! 注意边界退出! 特开此帖,记录搜索学习之路!(逃) 1.全排列 2.八皇后 3.数的划分 由于此题有同一划分方法算一个的限制,我们为了避免搜多,可以使搜出的结果满足单调不降性,那么就要在dfs时传一个pre参数. 由于要使划分后数之和为n,记录当前搜的总值sum. 由于有划分k个的限制,记录当前搜出了几个. 小总结,dfs函数的参数由其限制条件得出. 4.拼三角形 hihocoder offer收割#70(有模拟赛题解) 5.小猫爬山 貌似是刷到最值的第一题??之前好像…
这里基本就是入门吧. 可达性统计 用bitset搞的判重,发现这东西是真好用哈,空间还小 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<map> #include<bitset> using namespace std; ma…
题目:https://www.acwing.com/problem/content/230/ 题意:有一个图,每条边有一个权值,现在求1-n的一条路径的最大异或和,一条边能经过多次,相应的也要计算那么多次权值 思路:首先最大异或和一看就是线性基的经典操作,然后主要是我们要如何确定这条路径, 我们首先随便计算出一条1-n路径上的最大异或和,然后再是一些环,因为一条路径异或上其他的环的话就是变成了一条新的路径 所以我们只要dfs出一条路径,然后存下所有的环,我们把这些环跑个线性基,然后就可以利用线性…
乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位. 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度. 请你设计一个程序,帮助乔治计算木棒的可能最小长度. 每一节木棍的长度都用大于零的整数表示. 注意: 数据中可能包含长度大于50的木棒,请在处理时忽略这些木棒. 输入格式 输入包含多组数据,每组数据包括两行. 第一行是一个不超过64的整数,表示砍断之后共有多少节木棍. 第二行是截断以后,所得到的各节木棍的长度. 在最后一组数…
给定一个树,树上的边都具有权值. 树中一条路径的异或长度被定义为路径上所有边的权值的异或和: ⊕ 为异或符号. 给定上述的具有n个节点的树,你能找到异或长度最大的路径吗? 输入格式 第一行包含整数n,表示树的节点数目. 接下来n-1行,每行包括三个整数u,v,w,表示节点u和节点v之间有一条边权重为w. 输出格式 输出一个整数,表示异或长度最大的路径的最大异或和. 数据范围 1≤n≤1000001≤n≤100000,0≤u,v<n0≤u,v<n,0≤w<2310≤w<231 输入样…
解题代码 #include<iostream> #include<algorithm> #include<cmath> using namespace std; #define rep(i,a,n) for(int i = a; i <= n; i++) const int N = 20; int a[N]; int n,ans; int st[N]; int check(int x){ int y = sqrt(x); return y * y == x; }…
链接: https://www.acwing.com/problem/content/167/ 题意: 翰翰和达达饲养了N只小猫,这天,小猫们要去爬山. 经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). 翰翰和达达只好花钱让它们坐索道下山. 索道上的缆车最大承重量为W,而N只小猫的重量分别是C1.C2--CN. 当然,每辆缆车上的小猫的重量之和不能超过W. 每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下…
这道题目甚长, 代码也是甚长, 但是思路却不是太难.然而有好多代码实现的细节, 确是十分的巧妙. 对代码阅读能力, 代码理解能力, 代码实现能力, 代码实现技巧, DFS方法都大有裨益, 敬请有兴趣者耐心细读.(也许由于博主太弱, 才有此等感觉). 题目: UVa 1103 In order to understand early civilizations, archaeologists often study texts written in  ancient languages. One…
pty爬山(mountain) 在Pty学校附近,有一座名之为岳之麓的高山.Pty很喜欢和(哔--)一起爬山.山的平面模型如下:山由一个顶点集:A1,A2-An给定,保证Ai的x单调递增.我们将Ai和Ai+1之间连上线段,表示山的某一段.如下图所示:Pty想要爬到这座山的最高的顶点,当两个顶点的高度相同时,我们认为x比较大的顶点要高一些.Pty不是盲人,所以他将会在爬山时采取一些策略,使得他能够尽量快的到达最高的顶点.Pty从初始的顶点出发,往左右看去,他将朝他能够看到的最高的顶点方向走去.当走…