07 2018 档案
发表于 2018-07-31 16:18阅读:353评论:0推荐:0
摘要:这个题确实没想到用bfs进行分层处理,后来看到了大佬的题解之后才想到了这一点 bfs dfs早就学了,可是还是不大会应用到这上面 可以分为三层,起始点,中间点,尾点,需要的数据是中间点到尾点的访问次数,这样就能得出形成的三角形了 因为是单向所以也不必考虑重复的问题 #include <iostrea
阅读全文 »
发表于 2018-07-31 10:50阅读:221评论:0推荐:0
摘要:路径优化——见过很多的版本——这个应该是见过最多的一个啦 在FInd函数中查找到树根后,不要忙着退出 设定一个变量tmp在模拟找一次,但是中途所有经过的点 int Find(int x) { int rt = x,tmp; while(pre[rt] != rt)rt = pre[rt]; whil
阅读全文 »
发表于 2018-07-30 20:27阅读:240评论:0推荐:0
摘要:题目大意:看完之后,觉得不肯能让我暴力,比较好想的就是初始化——每个点都求个最短路spfa,sum数组记录每个点到各个点的最短路之和,ans作为总和,之后一一删除边u-v,求关于u的最短路,如果dis[v]是无穷大——》输出INF,否则连通——》求出sum【u】——用一个新的变量num1记录不可覆盖
阅读全文 »
发表于 2018-07-27 08:42阅读:236评论:0推荐:0
摘要:POJ3046选蚂蚁创建集合 一个人的精力是有限的呢,如果一直做一件事迟早会疲惫,所以自己要把握好,不要一直埋头于一件事,否则效率低下还浪费时间 题目大意:一共有T(1,2.。。n为其种类)种蚂蚁,A个蚂蚁,问你从这T种蚂蚁中选取[S,B]个,可以构成多少个集合 dp[i][j]表示前i种蚂蚁我选j
阅读全文 »
发表于 2018-07-26 19:29阅读:269评论:0推荐:0
摘要:python————web && 爬虫 Django pyramid Tornado Bottle Flask GUI图形开发 QT 想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下: ——————P6——
阅读全文 »
发表于 2018-07-26 16:58阅读:256评论:0推荐:0
摘要:POJ 1745 线性和差取余判断 题目大意:每个数都必须取到,相加或相减去,问所有的方案最后的得数中有没有一个方案可以整除k 这个题目的难点在于dp数组的安排上面 其实也就是手动模仿了一下 比如 一个数,不用说,第一个数之前不用加符号就是本身,那么本身直接对K取余, 那么取17的时候有个余数为2—
阅读全文 »
发表于 2018-07-26 10:23阅读:214评论:0推荐:0
摘要:m个物品放n个盒子,盒子物品都相同,问你放的方法总数是多少 看着像个排列组合,算着算着就发现我排列组合都忘得差不多啦,哎,什么时候能打败遗忘呢 然后想用dp做,但是转移的方面没有想好 看了看题解感觉这个思路太符合逻辑了 递归和非递归的都差不多,非递归的初值要赋好,递归的呢只要赋值好所有可能的结束条件
阅读全文 »
发表于 2018-07-25 19:49阅读:230评论:0推荐:0
摘要:1.直线分割问题: 当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。而每条射线和线断将以有的区域一分为二。这样就多出了2+(n-2)个区域。 f(
阅读全文 »
发表于 2018-07-25 11:24阅读:366评论:0推荐:0
摘要:POJ2779 线性DP 或 杨氏三角 和 钩子公式 本来就想回顾一下基础的线性DP谁知道今早碰到的都是这种大难题,QQQQ,不会 这个也没有去理解线性DP的解法,了解了杨氏三角和钩子公式,做出了POJ2779 杨氏矩阵和勾长公式 杨氏矩阵又叫杨氏图表,它是这样一个矩阵,满足条件: (1)如果格子(
阅读全文 »
发表于 2018-07-25 09:14阅读:171评论:0推荐:0
摘要:POJ3666 线性dp_离散化_贪心 就DP而言这个题不算难,但是难就难在贪心,还有离散化的思想上 题目大意:n个土堆,问你最少移动多少单位的图,可以使得这n个土堆变成单调的 dp[i][j]表示前i个土堆高变为j时最优值 dp[i][j] = abs(j - a[i]) + min(dp[i-1
阅读全文 »
发表于 2018-07-24 21:03阅读:399评论:0推荐:0
摘要:棋盘分割问题 题目大意,将一个棋盘分割成k-1个矩形,每个矩形都对应一个权值,让所有的权值最小求分法 很像区间DP,但是也不能说就是 我们只要想好了一个怎么变成两个,剩下的就好了,但是怎么变,就是变化的必要条件是什么 k——分割的个数肯定是必须的,而表示一个矩形,至少要知道两个点,所以x1,y1,x
阅读全文 »
发表于 2018-07-24 15:57阅读:262评论:0推荐:0
摘要:区间DP-刷字符问题-思维考察 翻译了一下这个题,一看还是有点难以入手,标明了是区间DP问题,但是如何DP呢 来捋一捋思路吧 dp[i][j]肯定是从i刷到j所要的次数但是它的i和j是s1串还是s2串呢,怎么能把两个串结合起来考虑呢,这是一个问题,它的转移方程是什么呢 没有想到先去考虑母串的情况 是
阅读全文 »
发表于 2018-07-24 10:55阅读:554评论:0推荐:0
摘要:HDU3506环形石子合并问题 线性的石子合并问题比较好理解,环形的转成线性的方法就是扩展数组 1 2 3 . . . n 1 2 3 ... n 依据是我们最优的取值可以是 1 n也能是 2 n + 1,所以完全可以线性来做 for(int i = 1;i <= 2 * n;i++) { if(i
阅读全文 »
发表于 2018-07-24 09:26阅读:416评论:0推荐:0
摘要:HDU3480_区间DP平行四边形优化 做到现在能一眼看出来是区间DP的问题了 也能够知道dp[i][j]表示前 i 个节点被分为 j 个区间所取得的最优值的情况 cost[i][j]表示从i到j元素区间中的值,这里可以直接排序后简单求出——也就是我们的代价函数 这样其实就能够做出来了,但是空间复杂
阅读全文 »
发表于 2018-07-23 16:00阅读:196评论:0推荐:0
摘要:HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的区间DP问题 d p[i][j]表示前i个节点,分为j个区间的最优策略值 cost[i][j]为从i到j节点的策略值
阅读全文 »
发表于 2018-07-23 13:09阅读:599评论:0推荐:0
摘要:POJ1160 题目大意:一系列村庄在一维坐标系上有序的排列,建设p个邮局,问各个村庄到邮局的最短距离和。 线性区间DP问题 dp数组的值为最短/最优距离 村庄和邮局为限制 dp[i][j]表示前i个村庄有j个邮局的最优解 分析最小子问题可得前i个村庄有1个邮局的最优解——中间的村庄 所以分解区间d
阅读全文 »
发表于 2018-07-23 10:45阅读:276评论:0推荐:0
摘要:入门区间DP,第一个问题就是线性的规模小的石子合并问题 dp数组的含义是第i堆到第j堆进行合并的最优值 就是说dp[i][j]可以由dp[i][k]和dp[k+1][j]转移过来 状态转移方程 dp[i][j] = min(dp[i][j],dp[i][k] + dp[k+1][j] + sum[i
阅读全文 »
发表于 2018-07-21 08:40阅读:390评论:0推荐:0
摘要:HDU2159_二维完全背包问题 输入有:经验,忍耐度,怪物种数,限制杀怪数 每一种怪物对应获得的经验值和消耗的耐久值 输出:剩下的最大忍耐度 限制:忍耐度,杀怪个数 在这里把忍耐度看成背包的容量,杀怪个数限制作为第二维 dp[i][j]表示在背包容量为i的时候,放了j件物品所产生的价值 接下来就是
阅读全文 »
发表于 2018-07-20 19:05阅读:250评论:0推荐:0
摘要:HDU2844买表多重背包问题题目大意都不大好懂,是利用手头上的硬币看看能组合出多少种价格,也就是跑完背包,看看有多少背包符合要求 剩下的就是多重背包的问题了1.第一个处理办法就是直接当01背包进行存储和处理2.第二个处理办法就是扫描物品时,当这个物品和数量产生的总价格大于限制时,采用完全背包的方法
阅读全文 »
发表于 2018-07-20 16:38阅读:124评论:0推荐:0
摘要:做01背包做到的这个LIS,常见的n2会超时,所以才有nlogn可行 先来介绍一下n2 dp[i] 表示该序列以a[i]为结尾的最长上升子序列的长度 所以第一层循环循环数组a,第二层循环循环第i个元素前面的元素,里面做一个基本升序判断,然后找最大值 定义一个外部变量记录最大值 nlogn 用了一个数
阅读全文 »
发表于 2018-07-20 09:42阅读:1235评论:0推荐:0
摘要:hdu1024 最大m子序列和 给定你一个序列,让你求取m个子段(不想交的子段)并求取这m个子段和的最大值 从二维开始来看dp[i][j]表示取第j个数作为第i个子段的元素所得到的前i个子段和的最大值,那么第j个元素必取 1.第j个元素是第i个子段的开头——dp[i][j] = max(dp[i-1
阅读全文 »
发表于 2018-07-20 08:47阅读:1280评论:0推荐:0
摘要:HDU1864_最大报销额 针对规定的条件,对输入的数据进行一番处理之后,可以得到一个价值数组,代表每一张可以报销的发票能报销的额度 if(n == 0)break; getchar();//吃回车 v_idx = 0; for(int i = 0;i < n;i++) { int cnt; sca
阅读全文 »
发表于 2018-07-19 11:36阅读:437评论:0推荐:1
摘要:其实这个问题,真的挺好想的,但是我咋想了那么久呢~~ 很好理解,第K大01背包一定基于01背包,dp数组也很容易的想到由dp[V] > dp[V][K],来表示背包容量是V时候的第K大背包 然后就是状态转移方程了,多写一写,你也能手推出来的,不能被吓到 dp[V][1] = max_第一大(dp[v
阅读全文 »
发表于 2018-07-12 16:20阅读:121评论:0推荐:0
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2955 题目大意:给你一个劫匪抢银行的最高安全概率,给你银行得到钱数,和劫匪在这个银行可以逃跑的概率,问你最多能抢多少钱 ———————— 按照一般的思路,背包的容量都想定义为最高安全概率,但是这是浮点数,所以只能
阅读全文 »