CH2401 送礼物(双向dfs)】的更多相关文章

CH2401 送礼物 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_-b),他一次可以搬动重量和在w(w<=2^31-1)以下的任意多个物品.GY希望一次搬掉尽量重的一些物品,请你告诉他在他的力气范围内一次性能搬动的最大重量是多少. 输入格式 第一行两个整数,分别代表W和N.以后N行,每行一个正整数表示G[i],G[i]<= 2^31-1. 输出格式 仅一个整数,表…
双向dfs 数据不是很大,但是如果直接暴搜的话2^45肯定过不了的.. 所以想到乱搞!!要让程序跑的更快,肯定要减下搜索树的规模,再加上这道题双搜的暗示比较明显(逃),所以就来乱搞+双搜求解 所以先从1-n/2(我的电脑测出来是n/2+2最快)开始枚举所有可能的重量,放进数组.. 这里注意,一定要先按降序排列,减小搜索树的规模,不然倒数第二个点死活过不去.. 然后再搜后半段,当后半段枚举到可能的答案t时,我们在之前的前半段可能组合的重量里二分查找W-t的前驱,这样就能组合成更大的结果来更新答案了…
双向搜索:把前一半的可行状态搜出来,然后sort+unique,之后搜后一半时,结束时二分一下前一半的答案,拼出一个与W尽量接近的ans来更新 ps:距LYD说前一半取n/2+2时跑的最快...不知,,, #include<iostream> #include<cstdio> #include<algorithm> #define R register int #define uint unsigned int using namespace std; inline i…
CH2401 送礼物 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_-b),他一次可以搬动重量和在w(w<=2^31-1)以下的任意多个物品.GY希望一次搬掉尽量重的一些物品,请你告诉他在他的力气范围内一次性能搬动的最大重量是多少. 输入格式 第一行两个整数,分别代表W和N. 以后N行,每行一个正整数表示G[i],G[i]<= 2^31-1. 输出格式 仅一个整数,…
题目链接 题意:给你n个礼物重量,给你一个M力量,看你一次性搬动不超过M的礼物重量. 思路:看似背包,但M太大.所以要用DFS,但n也有45,所以考虑双向DFS先搜前半部分满足情况的所有重量,然后去重,再往后半部分搜索,并二分找答案. #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<map> #include<queue>…
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_-b),他一次可以搬动重量和在w(w<=2^31-1)以下的任意多个物品.GY希望一次搬掉尽量重的一些物品,请你告诉他在他的力气范围内一次性能搬动的最大重量是多少. 输入格式 第一行两个整数,分别代表W和N.以后N行,每行一个正整数表示G[…
题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是GY的力气也异常的大(-_-b),他一次可以搬动重量和在w(w<=2^31-1)以下的任意多个物品.GY希望一次搬掉尽量重的一些物品,请你告诉他在他的力气范围内一次性能搬动的最大重量是多少. 输入格式 第一行两个整数,分别代表W和N.以后…
BZOJ_4476_[Jsoi2015]送礼物_01分数规划+单调队列 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都排成一列,而且相邻 的礼物之间有一种神秘的美感.于是,JYY决定从中挑选连续的一些礼物,但究 竟选哪些呢? [问题描述] 假设礼品店一共有N件礼物排成一列,每件礼物都有它的美观度.排在第i 1< =i< =N个位置的礼物美观度为正整数Ai,.JYY决定选出其中连续的一段, 即…
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 20476    Accepted Submission(s): 8917 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A…
[BZOJ4476][Jsoi2015]送礼物 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物.萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都排成一列,而且相邻的礼物之间有一种神秘的美感.于是,JYY决定从中挑选连续的一些礼物,但究竟选哪些呢?[问题描述]假设礼品店一共有N件礼物排成一列,每件礼物都有它的美观度.排在第i1< =i< =N个位置的礼物美观度为正整数Ai,.JYY决定选出其中连续的一段,即编号为礼物i,i+1,…,j-1,j的…
[BZOJ4476] [JSOI2015]送礼物 Description JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都排成一列,而且相邻的礼物之间有一种神秘的美感.于是,JYY决定从中挑选连续的一些礼物,但究竟选哪些呢? [问题描述] 假设礼品店一共有N件礼物排成一列,每件礼物都有它的美观度.排在第i1< =i< =N个位置的礼物美观度为正整数Ai,.JYY决定选出其中连续的一段,即编号为礼物i,i+1,-,j-…
HDU 1401 Solitaire 双向DFS 题意 给定一个\(8*8\)的棋盘,棋盘上有4个棋子.每一步操作可以把任意一个棋子移动到它周围四个方向上的空格子上,或者可以跳过它四个方向上的棋子(就像跳棋那样).给定初始状态和末状态,问能否在8步之内,从初始状态变换到末状态. 解题思路 这是是看的学长写的题解,很好,也算自己简单知道了双向BFS是什么情况了. 给定了初始状态和末状态,又有最多只能走8步的限制,所以我们很容易就可以想到进行双向BFS.但是一定要注意对冗余状态的剪枝.我们可以对这四…
[BZOJ4476] [JSOI2015] 送礼物 (01分数规划+ST表) 题面 给出n,k,l,r和序列a,要求从a中选一段连续的区间[i,j]出来,使得M(i,j)-m(i,j)/(j-i+k)最大,且[i,j]长度在区间[l,r]内. M(i,j)表示[i,j]中的最大值,m(i,j)表示[i,j]中的最小值. Ai< =10^8,N,K< = 50,000 分析 看到\(\frac{max(i,j)-min(i,j)}{j-i+k}\)的形式,我们敏感的想到01分数规划.考虑最终答案…
P1340 送礼物 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到礼物之后,他就不这么认为了.某神牛有N个礼物,且异常沉重,但是 GY的力气也异常的大(-_-b),他一次可以搬动重量和在w(w<=2^31-1)以下的任意多个物品.GY希望一次搬掉尽量重的一些物品,请你 告诉他在他的力气范围内一次性能搬动的最大重量是多少. 输入格式 第一行两个整数,分别代表W和N.以后N行…
「JSOI2015」送礼物 传送门 看到这题首先想到分数规划. 我们发现对于当前区间,如果它的最大值和最小值不是分居区间的两个端点的话,那么我们显然可以把两端多出去的部分舍掉,因为,在区间最大值最小值都不变的情况下,区间肯定是越短越优的. 但是要注意一点就是区间长度也是有下界的. 所以说我们就先处理所有区间长度为下界 \(L\) 的情况,然后再对区间长度位于 \([L + 1, R]\) 的区间做处理. 二分答案 \(mid\) ,假设当前区间是 \([l, r]\) 那么就有: \[ \fra…
LINK:送礼物 原本想了一个 \(nlog^2\)的做法 然后由于线段树常数过大 T到30. 以为这道题卡\(log^2\)没想到真的有神仙写\(log^2\)的过了 是我常数大了 抱歉. 能过的\(log^2\)的做法是看到了一个 决策单调性优化的dp 证明我不会. 不过由此得到的启示是 一些类似或者就是dp的题目 要多往决策单调性上想 大胆猜想 不管证明. 线段树的做法是二分之后 也是维护dp的决策最优性.发现换set很难更换 所以放弃治疗. 正解是一个log的做法: 考虑 M(i,j)…
P6087 [JSOI2015]送礼物 01分数规划+单调队列+ST表 题目背景 \(JYY\) 和 \(CX\) 的结婚纪念日即将到来,\(JYY\) 来到萌萌开的礼品店选购纪念礼物. 萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都排成一列,而且相邻 的礼物之间有一种神秘的美感.于是,\(JYY\) 决定从中挑选连续的一些礼物,但究 竟选哪些呢? 题目描述 假设礼品店一共有 \(N\) 件礼物排成一列,每件礼物都有它的美观度.排在第 \(i\ (1\leqslant i\leqslant…
题目大意:NPC 子集和问题. 题解:先搜索一半的物品重量和,记录在一个数组中,并将该数组排序并去重.再搜索另一半物品,到达目标状态后,在前一半物品记录的重量中查找小于当前剩余重量的最大值,更新答案即可.时间复杂度为 \(O(n*2^{n \over 2})\). 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=50; typedef long long LL; LL n,mid,w,ans,g[maxn],s…
开言: 以前lufy前辈写过叫“ HTML5游戏开发-零基础开发RPG游戏”的系列文章,在那里面我学习了他的引擎以及了解了游戏脚本.自从看了那几篇文章,我便对游戏开发有了基本的认识.今天我也以零基础为视点,为大家讲述如何开发一款简单的游戏.希望大家看了这篇文章,能使你对理解游戏开发有帮助. 你可以先测试一下游戏: http://lufylegend.com/lufylegend_developers/yorhom_Christmas/index.html 1,如何进行游戏开发   1.1游戏开发…
效果图 类库的介绍 org.dync.giftlibrary.widget GiftAnimationUtil.java 动画类GiftControl.java 给外部调用的类(核心)GiftFrameLayout.java 礼物布局类GiftModel.java 给礼物布局填充数据类以上是礼物动画一(推荐使用礼物动画一,在demo中的Gift1Activity.java使用) LeftGiftControl.java 给外部调用的类(核心)LeftGiftsItemLayout.java 礼物…
[题目描述] 礼品店一共有N件礼物排成一列,每件礼物都有它的美观度.排在第\(i(1\leq i\leq N)\)个位置的礼物美观度为正整数\(A_I\).JYY决定选出其中连续的一段,即编号为礼物\(i,i+1,-,j-1,j\)的礼物.选出这些礼物的美观程度定义为:\((M(i,j)-m(i,j))/(j-i+K)\),其中\(M(i,j)\)表示\(max\{A_i,A_{i+1}....A_j\}\),\(m(i,j)\)表示\(min\{A_i,A_{i+1}....A_j\}\),\…
题目描述 JYY和CX的结婚纪念日即将到来,JYY来到萌萌开的礼品店选购纪念礼物.萌萌的礼品店很神奇,所有出售的礼物都按照特定的顺序都排成一列,而且相邻的礼物之间有一种神秘的美感.于是,JYY决定从中挑选连续的一些礼物,但究竟选哪些呢?假设礼品店一共有N件礼物排成一列,每件礼物都有它的美观度.排在第i(1\leq i\leq N1≤i≤N)个位置的礼物美观度为正整数A_iAi​.JYY决定选出其中连续的一段,即编号为礼物i,i+1,…,j-1,ji,i+1,…,j−1,j的礼物.选出这些礼物的美…
Book of Evil Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n settlements numbered from 1 to n. Moving through the swamp is very difficult, so people tramped exactly n - 1 paths. Each of these paths co…
B. Book of Evil time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n settlements numbered from…
化简式子 $M>=m+ans*(r-l+k)$ 发现$M,m$确定时,总区间长度越小越好,于是假定右端点为最小值$M+ans*l>=m+ans*r+ans*k$, 右面都确定了,但最大值仍然有两种情况,一是最大值就在要求的区间内,二是在要求的区间右侧, 对于第一种情况,直接把每个点的val扔进单调队列就可以了,第二种呢,因为要求区间长度最小,所以左端点即为$r-L+1$,单调队列维护$i-L+1~i$的最大值即可, 左端点为最小值也一样. 而且不需要判断在我们选的区间内是否有比$a[i]$更小…
论搜索顺序的优越性. 从小到大搜索,T到怀疑人生. 从大到小搜索,轻松AC. 双向搜索. 是这样的.我们首先排序一下,然后翻转.(当然也可以写cmp) 然后我们搜前半部分,把结果记录在某一数组中. 然后把结果排序(去重),再搜另一部分. 接下来有两种想法: 1.同样方式处理另一部分,然后双指针扫描. 2.第二次每次搜到终点,二分更新ans. 还可以加上剪枝:如果当前的和加上后面所有再加上第一部分最大值都达不到ans,剪枝. 还可以用set,但是CE了...不知道为什么. 细节顺序还可以更优,但是…
题意 题目链接 分析 分数规划之后可以得到式子:\(max-min-r*mid+l*mid\geq k*mid\) . 贪心选择,肯定区间的端点是极小或者极大值.特殊处理区间长度 \(\leq L\) 的情况. 有两种情况分别对应 \(r\) 作为最大和最小值. \(r\) 作为最大值:枚举 \(a_r-r*mid\),查询 \(min\{a_l-l*mid\}\)并减去. \(r\) 作为最小值:枚举 \(a_l+l*mid\),查询 \(min\{a_r+r*mid\}\)并减去. 单调队列…
看到这个式子当然先二分答案.得max-min-(j-i+k)ans>=0. 显然max-min相同的情况下所选区间长度越短越好,所以max和min都应该取在边界.那么实际上我们根本不用管端点是否真的是max或min,因为即使不是将他们计入也不会对最终答案造成影响.不妨设右端点是max,则要最大化aj-ai-(j-i)ans=(aj-jans)-(ai-ians),单调队列维护即可.左端点是max同理. 为了防止不存在长度在l~r的这样的区间,先对长度l的区间单调队列暴力跑一次. #include…
这道题真是有趣呀. 其实就是一个分数规划问题,用一个二分加log来得去掉分母. 分四种情况讨论 1.lenth > L && num ( max ) > num ( min ) 2.lenth > L && num ( max ) < num ( min ) 3.lenth == L && num ( max ) > num ( min ) 4.lenth == L && num ( max ) < num…
依据题意的话最多32条边,直接暴力的话 2 ^ 32肯定超时了.我们能够分两次搜索时间复杂度降低为 2 * 2  ^ 16 唯一须要注意的就是对眼下状态的哈希处理. 我採用的是 十进制表示法 跑的还是比較快的,可能是用STL函数的原因添加了一些常数复杂度. #include<map> #include<vector> #include<cstdio> #include<cstring> #include<algorithm> using name…