02 2017 档案

摘要:1.求达到某个状态的最小值,考虑用动态规划方式求解。 2.考虑第i棵树的决策,他的颜色对答案及状态的贡献受两个因素的影响: ①上一颗树颜色的选取 ②考虑前i-1棵树已经分成了几段 定义dp[i][j][k] : 第i棵树 当涂j颜色 分成k段时的最小消耗是多少 如果已经涂上色了 dp[i][j][k 阅读全文
posted @ 2017-02-23 21:24 Lorazepam 阅读(266) 评论(0) 推荐(0) 编辑
摘要:直接Kruskal 但是注意一点的是 从起点到终点 只要起点和终点连通就可以停止添加路径了 因为再添加 就会减小weight最小的路 阅读全文
posted @ 2017-02-23 21:09 Lorazepam 阅读(145) 评论(0) 推荐(0) 编辑
摘要:暴力肯定是无法做的 当时做的时候 当成一道递推来做的 用到分治的思想 想象一串长度为2n+1的列 那么前n个为前一串数 后n个是前一串数的reverse 第n+1个数 为第几串的编号 例如 第几串 中间的那个数 中间那个数的位置 长度 1 1 1 1 2 2 2 3 3 3 4 7 n n 2^(n 阅读全文
posted @ 2017-02-23 21:05 Lorazepam 阅读(212) 评论(0) 推荐(0) 编辑
摘要:这道题确实是自己太蠢 每个数通过双倍或者三倍 能否达到同一个数 当时一直想用LCM/a[i]后来除以2 除以3看最后是否为1 然后一直WA On test49 当然知道是数据爆了 然后就卡住了 想想如果这n个数能够乘2 乘3 得到同一个数说明 这些数的约数 只在2 和 3的数量上不同 其他约数都应该 阅读全文
posted @ 2017-02-23 20:34 Lorazepam 阅读(246) 评论(0) 推荐(0) 编辑
摘要:简单搜索 判断是否能在最后一步下棋得到胜利 问题转化为 是否有可以胜利的x的摆法 那么就只有两种情况 1、有两个x相连 并且 在端点还有.可以落子 那么就可以在最后一步 胜利 2、两个x中间恰好有一个.空着 那么可以再这里落子胜利 搜索这两种情况 存在则胜利 不存在 则无法再最后一步胜利 阅读全文
posted @ 2017-02-23 20:23 Lorazepam 阅读(196) 评论(0) 推荐(0) 编辑
摘要:简单题 给出身份证号 判断住址 和出生年月 熟练字符串的操作 主要是string::substr(s, l)//s:起始位置 l长度 阅读全文
posted @ 2017-02-23 20:17 Lorazepam 阅读(256) 评论(0) 推荐(0) 编辑
摘要:下列程序 1、素数的判断 2、找x的约数 3、找x的质因数 4、艾氏筛法 筛出1..n的素数 思路 确定基准为2 那么从3 到n 去掉所有2的倍数 确定基准为3 那么从4 到n 去掉所有3的倍数 确定基准为下一个剩下的数a 从a到n 去掉所有 a的倍数 直到n 边筛选完毕 阅读全文
posted @ 2017-02-23 20:13 Lorazepam 阅读(145) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1930 小学奥数忘了吗 求无限循环小数的分数方法 //计算循环小数的公式/*用9和0做分母,首先有几个循环节就几个9,接着有几个没加入循环的数就加几个0,再用小数点后面的数减 没加入循环的数,比如0.43,3的循环,有一位数没加入循环,就在9后面 阅读全文
posted @ 2017-02-23 19:41 Lorazepam 阅读(288) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2429 给GCD 和 LCM 求对应的两个数 a b 要求 a+b最小 因为lcm(a, b) = a*b * gcd(a, b) 所以 可以得到 a*b = LCM / GCD 要求 a*b值最小 只要让a b尽量接近就好 也就是搜索LCM / 阅读全文
posted @ 2017-02-23 19:29 Lorazepam 阅读(203) 评论(0) 推荐(0) 编辑
摘要:/*题目描述 :一个双六上面有向前 向后无限延续的格子, 每个格子都写有整数。其中0号格子是起点,1号格子是终点。而骰子上只有a,b,-a,-b四个整数,所以根据a和b的值的不同,有可能无法到达终点掷出四个整数各多少次可以到达终点呢?如果解不唯一,输出任意一组即可。如果无解 输出-1 */ 问题就是 阅读全文
posted @ 2017-02-22 14:47 Lorazepam 阅读(903) 评论(0) 推荐(0) 编辑
摘要:/*问题描述:线段上的格点给定平面上的两个格点 P1 = (x1, y1) ; P2 = (x2, y2) 线段P1 P2上,除P1 和 P2以外一共有几个格点*//*分析过程在格点上画P1(0,5) P2(5,0) 连接起来发现 这条线上的经过的格子的格点都在P1 P2这条线段上将其不称 P1 P 阅读全文
posted @ 2017-02-21 23:57 Lorazepam 阅读(453) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2395 裸最小生成树 输出树中最大cost的边值 直接prim 阅读全文
posted @ 2017-02-21 23:49 Lorazepam 阅读(219) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2377 裸求最大生成树 阅读全文
posted @ 2017-02-15 23:39 Lorazepam 阅读(243) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1258 裸求最小生成树 这句话好像没什么影响"Physically, they are limited in length to 80 characters, so some lines continue onto others" 阅读全文
posted @ 2017-02-15 23:38 Lorazepam 阅读(194) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3169 //转化为有向图求 最短路//这道题 加深对Bellman_ford使用 和理解//但是太难了感觉确实 -->> 确实是差分约束系统的题 但是刚好和最短路 的推导形式相符 最短路的推导 如果u v之间有cost = w的边e(u,v) d 阅读全文
posted @ 2017-02-15 23:35 Lorazepam 阅读(182) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3723 这道题 把男生画一边 女生画一边 >是一个二部图的结构 就很容易看出 要pay最少 实际上就是找到一个连接所有点权值和最大的图 但是又要求 一个人只能使用一种关系减钱 所以不能有回路 >是一棵树 所以就是求最大生成树 有了前面并查集题目的 阅读全文
posted @ 2017-02-15 23:30 Lorazepam 阅读(210) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3255 这道题还是有点难度 要对最短路径的算法非常的了解 明晰 那么做适当的修改 就可以 关键之处 次短的路径: 设u 到 v的边权重为cost 那么到v的次短路径要么是 到u的次短路径+cost;要么是到u的最短路径+cost; 那么就在dij 阅读全文
posted @ 2017-02-15 23:25 Lorazepam 阅读(1447) 评论(0) 推荐(0) 编辑
摘要:prim算法的思路 和dijkstra是一样的 每次选取一个最近的点 然后去向新的节点扩张 注意这里的扩张 不再是 以前求最短路时候的到新的节点的最短距离 而是因为要生成一棵树 所以是要连一根最短的连枝 所以关键部分修改一下 dist[u] = min(dist[u], e.cost) >>e是连接 阅读全文
posted @ 2017-02-15 23:19 Lorazepam 阅读(452) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3268 有一个点X开party 求其他所有点 去的路程和返程的和的最小值中的最大值 这里有一个小技巧 总是把X当做原点 返程是正常的最短路 去程就把路径翻转 求最短路 这样只需要两次求最短路 阅读全文
posted @ 2017-02-14 23:21 Lorazepam 阅读(202) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3259 这道题的意思就是 考虑从任意一个点出发 经过任意回路 (普通道路是双向 虫洞是单向并且是负边) 问回到出发点时 时间是不是小于 出发时的时间 最开始直接想求所有点 到自己点的最短路 做着做着发现 如果可以的话 那不是没有最短路 因为每次都 阅读全文
posted @ 2017-02-14 23:17 Lorazepam 阅读(224) 评论(0) 推荐(0) 编辑
摘要:floyd-warshall算法 通过dp思想 求任意两点之间最短距离 重复利用数组实现方式dist[i][j] i - j的最短距离 for(int k = 1; k <= N; k++) for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j 阅读全文
posted @ 2017-02-14 23:10 Lorazepam 阅读(292) 评论(0) 推荐(0) 编辑
摘要:首先两个算法都是常用于 求单源最短路径 关键部分就在于松弛操作 实际上就是dp的感觉 if (dist[e.to] > dist[v] + e.cost) { dist[e.to] = dist[v] + e.cost; ... } bellman_ford O(E*V) 但是配合队列可以 有spf 阅读全文
posted @ 2017-02-14 22:59 Lorazepam 阅读(216) 评论(0) 推荐(0) 编辑
摘要:书上介绍了两种存储图的方式 >> 1、邻接矩阵 2、邻接表 邻接矩阵的优势在于 可以快速读取两个节点的连通情况 和权值O(1) 但是内存消耗太大 特别是图比较稀疏的时候浪费非常多 那么久有了邻接表的方式 struct Edge { int to , cost} vector<Edge> G[MAXV 阅读全文
posted @ 2017-02-14 22:49 Lorazepam 阅读(201) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2010 贪心策略 按score从大到小排列 枚举i位置 让i以前的cow中选N / 2个的aid和最小 l_aid[] 同理让i以后的cow中选N / 2的aid 和最小r_aid[] 正向一次求得l_aid[] 每次入队优先队列吐出最大的 算出 阅读全文
posted @ 2017-02-13 23:57 Lorazepam 阅读(229) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1703 应该是书上例题(食物链 POJ1822)的简单版 这里同样用书上很巧妙的思路 如何表达 在集合A 和 集合B 中 并不是 让i.set = A 类似于这样活着P[i] = A 而是将 这个变成一个隐形条件 并且 不用再关心 i到底是在A集 阅读全文
posted @ 2017-02-13 23:50 Lorazepam 阅读(347) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2236 并查集 预处理每两台之间的距离 这样不用再后面重复计算 用一个数组dist[i][j]存储 修好一台 就枚举N 合并集合 阅读全文
posted @ 2017-02-13 23:43 Lorazepam 阅读(142) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3614 贪心的思路: 因为每只cow有minSPF maxSPF这么一个区间 那么 先确定minSPF 这么一个值(从小到大排列 )-->>数组排 将lotion 的spf也从小到大排列 这样 相当于确定有多少 cow 可以在minSPF这个点满 阅读全文
posted @ 2017-02-13 23:39 Lorazepam 阅读(160) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2431 树上巧妙的思路 每次经过一个stop 就相当于获得一次加油的机会 但是 可以不用这个机会 当没油的时候再加 这个时候可以加的油 最优的方案就是 先按油多的加 优先队列 按按照油降序存储 很像蚂蚁那道题 巧妙的思维啊! 阅读全文
posted @ 2017-02-13 23:28 Lorazepam 阅读(256) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2845 审题 取一个点 那么相邻行的点和 这一行和它左右相连的点就不能再取了 涉及取舍的问题 整体无法考虑 只能从局部出发-->>动态规划 可惜没看出来 要进行状态压缩 就是很标准的dp了 1、先多每一行进dp求得 阅读全文
posted @ 2017-02-11 23:36 Lorazepam 阅读(217) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/744/A 这是一道考察连通块的题(做之前, 连通块是什么都不清楚) Note:点的集合 任意两点都有可达的路径 可以用并查集做 在一个政府管辖下的点 作为一个集合 根节点就是这个政府 再者 贪心 : 要求做多可以添加 阅读全文
posted @ 2017-02-11 23:27 Lorazepam 阅读(291) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/750/B 模拟题 审题 在南极点 只能向北走(不能向 南 东 西) 所以也就不存在走过南极点的情况 北极点同样 然后去模拟那个走的过程 不符合条件就fail即可 阅读全文
posted @ 2017-02-11 23:13 Lorazepam 阅读(269) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/601/A 这道题没想过来, 有点脑筋急转弯的感觉了 本质上就是找最短路径 但是卡在不能重复走同一个点 >>> 这是来坑人的 因为这是一个完全图(不是被road 连接 就是被rail连接 ) 所以一定有一条直接连1 和 阅读全文
posted @ 2017-02-11 23:10 Lorazepam 阅读(214) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/356/A 首先理解题意 每次给出l 和r 在l - r之间还有资格的选手中得出一个胜者 暴力思路: 首先维护还有资格的选手的集合 用一个数组 表示 这个选手被谁击败 每次遍历 l - r 然后把不是胜者 且 还在集合 阅读全文
posted @ 2017-02-11 23:03 Lorazepam 阅读(450) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1190 这道题 确实写完不知道怎么剪枝了 对代码要求很高 仿一波代码 剪枝的地方 1、 用mv[]记录最小体积 因为越到上面越小 那么最小的情况就是最高一层 r = 1 , h = 1 依次递增 但是不确定层数, 就像想一个倒置的蛋糕 这样每次都 阅读全文
posted @ 2017-02-09 20:59 Lorazepam 阅读(151) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2602 第一题 01背包问题 http://acm.hdu.edu.cn/showproblem.php?pid=1114 第二题 完全背包问题 http://acm.hdu.edu.cn/showproblem. 阅读全文
posted @ 2017-02-09 20:35 Lorazepam 阅读(142) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3176 定义dp[i][j] 到这个点 能取得的最大值 转移方程 阅读全文
posted @ 2017-02-08 23:44 Lorazepam 阅读(179) 评论(0) 推荐(0) 编辑
摘要:问题描述 有n个无区别的物品,将它们划分成不超过m组,求出划分方法数模M的余数 限制条件 1 <= m <= n <= 1000 2 <= m <= 10000 声明 将n 分成m 堆 这样称作 n的m划分 定义dp[i][j] i 的 j划分的个数 递推过程 考虑n的m划分ai(a0 +a1 + 阅读全文
posted @ 2017-02-08 23:40 Lorazepam 阅读(449) 评论(0) 推荐(0) 编辑
摘要:问题描述 有n中不同大小的数字ai,每种mi个。判断是否可以从这些数字之中选出若干个使它们的和恰好为K 限制条件 1 <= n <= 100 1 <= ai, mi, <= 100000 1 <= K <= 100000 方式一 定义bool dp[i+1][j] 前i个数(含)能否加和为 j 那么 阅读全文
posted @ 2017-02-08 23:11 Lorazepam 阅读(338) 评论(0) 推荐(0) 编辑
摘要:问题描述: 有一个长为n的数列a0, a1,..., an-1.请求出这个序列中最长的上升子序列。请求出这个序列中最长的上升子序列。 上升子序列:对于任意i<j都满足ai<aj的子序列. 限制条件 i <= n <= 1000 0 <= ai <= 1000000 两种定义方式 具体看程序注释 阅读全文
posted @ 2017-02-08 22:47 Lorazepam 阅读(295) 评论(0) 推荐(0) 编辑
摘要:问题描述 有n种重量和价值分贝为wi, vi的物品。 从这些物品中挑选总重量不超过W的物品, 求挑选物品总价值的最大值。在这里, 每种物品可以挑选任意多件。 限制条件 1 <= n <= 100 1 <= wi, vi <= 100 1 <= W <= 10000 方案一:再用一个循环来遍历所有的取 阅读全文
posted @ 2017-02-08 00:21 Lorazepam 阅读(177) 评论(2) 推荐(0) 编辑
摘要:问题描述 有n个重量和价值分别为wi, vi的物品, 从这些物品中挑选出总重量不超过W的物品吗,求所有挑选方案中价值总和的最大值 限制条件 1 <= n <= 100 1 <= w1, v1 <= 100 1 <= W <= 10000 定义数组dp[i][j] : 前i件物品(不含) 重量不超过j 阅读全文
posted @ 2017-02-07 23:31 Lorazepam 阅读(164) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3262 这道题和蝎子那道题是相同贪心思路 http://www.cnblogs.com/oscar-cnblogs/p/6329703.html //贪心方式一:列出函数关系式比较复杂//方式二:像蝎子那道题 先讨论两只 奶牛怎样送是最优的/*a 阅读全文
posted @ 2017-02-07 23:12 Lorazepam 阅读(138) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3040 这道题 没有思路欧 直接网上找到的证明 贪心,从大到小排序,只要不超额就能放多少就放多少,最后再从小的开始找一个放进去能超额的。 正确性证明,因为大的是小的倍数,所以大的放进去不超额一定要放进去,因为小的不管怎么取,再超过c之前一定会凑成 阅读全文
posted @ 2017-02-01 19:36 Lorazepam 阅读(275) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2393 贪心策略很简单 设第i周的酸奶在 第j周做(j <= i) 那么所花的钱是 m = (i-j)*s*y_i + (c_j * y_i) 所以即求m的最小值 化简得 m = ( (i-j)*s+c_j ) * y_i 也就是求(i-j)*s 阅读全文
posted @ 2017-02-01 19:32 Lorazepam 阅读(604) 评论(3) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1017 有1*1 2*2...6*6的物品 要装在 6*6的parcel中 问最少用多少个parcel 一直没有找到贪心的策略 问题应该出现在 总是在想怎么放入parcel中 使得最节省空间 其实这种角度是很麻烦的 情况太多 很难描述清楚 但是其 阅读全文
posted @ 2017-02-01 19:17 Lorazepam 阅读(390) 评论(0) 推荐(0) 编辑
摘要:因为 烟花的最大范围是各个方向150格 所以 最大的空间应该是 300*300 BFS和DFS均可 模拟每一个烟花爆炸的过程 但是要注意 需要一个数组来排重 在某一个爆炸点 如果爆炸的方向 和爆炸的层数是相同的 那么就不再讨论这个爆炸点 因此 这个排重数组需要记录的信息: x, y, dir, st 阅读全文
posted @ 2017-02-01 16:00 Lorazepam 阅读(526) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示