落谷
文章平均质量分 53
zi_wan
这个作者很懒,什么都没留下…
展开
-
堆排 luogu1090合并果子
此题为堆排的简单运用#include<cstdio>#include<iostream>using namespace std;int ans,s,hp[10005],n,siz,cnt;void pus(int x)//输(插)入 {cnt++;hp[cnt]=x;int now=cnt;int fa=cnt/2;while(now>1){if(hp[now]>...原创 2017-12-09 11:37:26 · 207 阅读 · 0 评论 -
01背包变式 luogu1064金明的预算方案
虽然还是01背包吧,但是这道题思路相对麻烦一些,所以单独用一篇博客来记录好了题面如下数据预处理用ad[i][j]数组来记录附件 表示第i个物品的第j个附件这样可以直接查找附件用bl[i]数组来标记第i个物品是附件还是主件 附件为1在dp的时候就可以把附件直接跳过思路框架因为情况复杂所以选用倒序循环一维的01背包模板接下来讨论每个主件中有哪些选择 分类列出状态转移方程截图来自题解【懒得打出来了emm...原创 2018-03-23 02:37:33 · 232 阅读 · 0 评论 -
01背包问题
今天是决定要好好学oi的第一天,虽然还是因为各种各样的原因耽搁了一会,但任务还是完成啦~01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方...原创 2018-03-21 01:40:00 · 248 阅读 · 0 评论 -
完全背包
完全背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i],每件物品可以使用无限次。求解将哪些物品装入背包可使价值总和最大。基本思路这个问题非常类似于01背包,所不同的是每种物品有无限件,也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……取[V/c]件等很多种。如果仍然按照解01背包时的思路,令f[v]表示前i种物品恰放入...原创 2018-03-27 00:34:12 · 97 阅读 · 0 评论 -
线性dp 1280尼克的任务
3.27题面如下大致思路反正大致是这样子的~代码(为什么我的代码也变成了数组套数组)原创 2018-03-29 00:21:38 · 109 阅读 · 0 评论 -
树形dp-luogu1352 没有上司的舞会
树形dp实现 动态规划在树形结构上的实现:任选一个点作为根节点,从而定义出每个节点的深度和每个子树的根。设计算法时,一般以节点由深到浅(子树由小到大)的顺序作为dp阶段,通常采用递归实现。状态表示 第一维通常是节点编号(代表以该节点为根的子树)。对于每个节点x,先递归在它的每个子节点上进行dp,在回溯时,从子节点向x进行状态转移。例题(luogu1352)思路 ...原创 2018-04-30 23:50:36 · 236 阅读 · 0 评论 -
区间dp-luogu3205[HNOI2010]CHORUS 合唱队
区间dp介绍 区间dp属于线性dp的一种,它以区间长度作为dp的stage,使用区间左、右端点来描述每个维度。在区间dp中,一个状态由若干个比它更小切且包含于它的区间所代表的状态转移而来,因此区间dp的决策往往是划分区间的方法。实现 初态一般由长度为1的“元区间”构成,枚举时先枚举阶段长度,再枚举左端点下标,由此计算右端点下标。例题(luogu3205[HN...原创 2018-05-01 15:21:12 · 225 阅读 · 0 评论 -
深度优先搜索-luogu1019单词接龙
#include<bits/stdc++.h>#define LL long long#define reg register int#define f(i,a,b) for(reg i=a;i<=b;i++)using namespace std;int n;int ans,mx;string s[25];char g;int vis[50];void df...原创 2018-05-02 22:53:21 · 179 阅读 · 0 评论 -
深度优先搜索—luogu1040加分二叉树
#include<iostream>#include<cstdio>using namespace std;int n;int a[35],dp[35][35],rt[35][35];int dfs(int l,int r){ if(dp[l][r])return dp[l][r]; if(l>r)return 1; if(l==r)...原创 2018-05-03 00:41:44 · 122 阅读 · 0 评论