随笔分类 - HDU
摘要:题意:一个不愿意做在bus等时间的人想去旅游,给出n个城市,m条道路和q个询问 题意思路参考:传送门 PS:暴力求n次最小生成树肯定超时、因为边的个数达到了10的5次方
阅读全文
摘要:题意:一个人想买手表,给你n个价值的硬币,然后给你n个价值硬币对应的个数、但是呢,这个人只知道这个手表的价格不超过m元、问他最多能买多少种价值的手表 思路:dp背包专题 但是- - 一直不知道该怎么dp 终于想通了、 PS:对于背包dp说一说自己的理解吧(虽然不知道有什么用) 一旦涉及到dp 你就要
阅读全文
摘要:HDU 1114 Piggy-Bank 完全背包问题、 想想我们01背包是逆序遍历是为了保证什么? 保证每件物品只有两种状态,取或者不取.那么正序遍历呢? 这不就正好满足完全背包的条件了吗 means:给出小猪钱罐的重量和装满钱后的重量,然后是几组数据,每组数据包括每种钱币的价值与重量要求出装满钱罐
阅读全文
摘要:这题题意有点坑阿、感觉特别模糊、 我开始有一点没理解清楚、就是报销的话是整张整张支票报销的、也是我傻逼了 没一点常识 还有一点就是说单张支票总额不超过1000,每张支票中单类总额不超过600,我开始以为是题目数据会这样给、 没想到还要自己判断 并且不符合条件的支票要直接舍去、- -、只能怪自己题目做
阅读全文
摘要:裸的字典树还是挺简单的、 四个基本操作建立、查找、插入、删除 建立新结点我是用的c++中 new操作、当然也可以用malloc,都方便 不过指针阿、地址阿、这其中关系什么的我貌似还不是很清楚阿、 因为刚开始我的头结点也是定义的指针、然后程序就炸了、我不清楚原因呢、 有待弄清楚、
阅读全文
摘要:题意:一个人去抢银行,给你一个允许的最高被抓概率p,给你n个银行,然后给出n个银行的钱和抢劫该银行的被抓概率,求能获得的最大钱数 思路:开始一直在纠结那个被抓概率的小数问题,发现没办法直接去dp,得转化,可弱鸡我不会阿,看看题解,发现得方向转化一下,对不被抓概率dp 关键一个点我没想到抢多个银行之后
阅读全文
摘要:题意:HDU 要分为两个系,要求设备尽可能的平分、并且要求输出的A和B A>=B 思路:变相的01背包、时间限制有5s,所以可以将所有设备一个一个存到数组里面去、也就是化为01背包问题、每一件物品只有拿和不拿两种状态
阅读全文
摘要:这里5元是个什么意思呢、差不多就是特殊情况了、 就是说最贵的那个东西先不买、并且最后要留下5元去买那个最贵的、 也就是说对现在金钱-5 拿剩下的钱去对减去最贵的商品后的商品dp、看这些剩下的钱能买多少价值的商品
阅读全文
摘要:来谈谈自己对延迟标记(lazy标记)的理解吧、 lazy标记的主要作用是尽可能的降低时间复杂度、 这样说吧、 如果你不用lazy标记,那么你对于一个区间更新的话是要对其所有的子区间都更新一次,但如果用lazy标记的话、 就只需要更新这一个区间然后加一个标记,那么如果要访问这个区间的子区间,因为有la
阅读全文
摘要:从中间向两边递减的回文,特判一下就好
阅读全文
摘要:这题真尼玛坑、 后面那个输入起点和终点的 先输入列在输入行、 1 #include<iostream> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 #include<queue> 6 #include<cstdio> 7
阅读全文
摘要:#include<iostream> #include<cmath> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> #include<stack> using namespace std; const i
阅读全文
摘要:1 #include<cstdio> 2 #include<cmath> 3 #include<iostream> 4 #include<cstring> 5 const int qq=2000+50; 6 int v[qq],w[qq],dp[qq]; 7 using namespace std;
阅读全文
摘要:题意:给出一个t代表有t组数据,然后给出n,n代表有n种石头,v代表旅行者的背包容量,然后给出n种石头的价值和容量大小,求能带走的最大价值 思路:01背包问题,每种石头只有拿与不拿两种状态、(其实我是为理解dp而来的) 一维数组也能过、只是第二层必须反序来、顺序的话同一件物品可能会被取多次 贴一份W
阅读全文
摘要:题意:有一个存钱罐,空罐时的重量是e,满罐时的重量是f,现在有n种硬币,每一种有无限个,现在给出每一种硬币的价值p和重量w,问存钱罐中最少钱,输出最小钱,否则输出... 思路:变形的完全背包问题,只是求最小值 1 #include<cstdio> 2 #include<cstring> 3 #inc
阅读全文
摘要:1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 const int qq=1000+10; 5 double dist[qq]; 6 double city[qq][qq]; 7 int vis[qq]; 8 int n,m; 9
阅读全文
摘要:思路:枚举所有起点城市然后比较每个起点所去喜欢城市的最小距离 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 const int qq=1000+10; 5 const int MAX=1e7; 6 int s[qq],e[qq]
阅读全文
摘要:1 #include<stdio.h> 2 #include<math.h> 3 #include<string.h> 4 const int qq=100+10,MAX=1e7; 5 int vis[qq]; 6 int lowcost[qq][qq]; 7 int minimum[qq]; 8
阅读全文
摘要:1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #define MAX 0xffffffff //定义一个最小生成树中不可能达到的值 7 con
阅读全文
摘要:代码线段树入门整理中有介绍、 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 const int MAXNODE=1<<19; 7 cons
阅读全文