自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pengwill's Blog

一百年太短,只争朝夕

  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 UVA.10881 Piotr's Ants (思维题)

UVA.10881 Piotr’s Ants (思维题)题意分析有一根长度为L cm的木棍,上有n只蚂蚁,蚂蚁要么向左爬,要么向右,速度均为1cm/s,若2只蚂蚁相撞,则蚂蚁同时调头。求解第T秒时这n只蚂蚁的状态。 若此时相撞 输出:Turning 若此时已经掉下木棍 输出:Fell off 且要按照输入时的顺序输出各个蚂蚁的状态此题难点有2个: 1.其实相撞可以理解为交叉走过(因为速度相同

2017-02-27 23:08:30 313

原创 UVALive.2995 Image Is Everything (思维题 三维坐标转换)

UVALive.2995 Image Is Everything (思维题 三维坐标转换)题意分析这题实在是没思路,就照着打了一遍,把不理解的地方,写了注释。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define REP(i,n) for(int i = 0; i<(n) ;++i)

2017-02-27 22:54:01 352

原创 UVALive.3708 Graveyard (思维题)

UVALive.3708 Graveyard (思维题)题意分析这标题真悲伤,墓地。 在周长为1e4的圆周上等距分布着n个雕塑,现在要加入进来m个雕塑,最终还要使得这n+m个雕塑等距,那么原来的n个雕塑移动的最小距离是多少。W=W 依旧没思路,看了题解学习此种技巧。首先原先给出的n个雕塑中有一个假定不动。然后剩余的n-1的个雕塑移动到最近的目标点。目标点的定义如下: 将原圆周等距分为n+m份,每

2017-02-27 22:50:34 324

原创 UVALive.3708 Graveyard (思维题)

UVALive.3708 Graveyard (思维题)题意分析这标题真悲伤,墓地。 在周长为1e4的圆周上等距分布着n个雕塑,现在要加入进来m个雕塑,最终还要使得这n+m个雕塑等距,那么原来的n个雕塑移动的最小距离是多少。W=W 依旧没思路,看了题解学习此种技巧。首先原先给出的n个雕塑中有一个假定不动。然后剩余的n-1的个雕塑移动到最近的目标点。目标点的定义如下: 将原圆周等距分为n+m份,每

2017-02-27 22:50:10 270

原创 UVA.11300 Spreading the Wealth (思维题 中位数模型)

UVA.11300 Spreading the Wealth (思维题)题意分析现给出n个人,每个人手中有a[i]个数的金币,每个人能给其左右相邻的人金币,现在要求你安排传递金币的方案,使得每个人手中的金币个数相等,并求出转移金币的最小个数。保证(Σa[i])/n为整数。第一眼没有思绪,这种推导方式还是第一次见到。 设ai为第i个人初始金币数量,xi为第i个人转移给i-1个人金币的数量(i为1表示

2017-02-27 22:24:17 235

原创 UVA.11292 Dragon of Loowater (贪心)

UVA.11292 Dragon of Loowater (贪心)题意分析题干很长,废话很多。 (实在不懂那个图片是干啥) 现在要你屠龙,有n个头直径为dra[i]的龙,有m个最多能杀掉头直径为kni[i]的勇士(1<= i <=n)。你可去雇佣骑士来杀龙,每个其实的价格为kni[i],现在求屠完所有龙的最小花费是多少,若不能屠完所有的龙, 则要输出 Loowater is doomed!。 为

2017-02-27 21:54:55 230

原创 UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用)

UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用)题意分析绝对的好题。 先说做完此题的收获: 1.对数据结构又有了宏观的上的认识; 2.熟悉了常用STL(set,map,vector)的常用用法; 3.学习了一种问题转化的方式。 我想如果告诉我这题用STL解决,并且还能独立完成的话,那么STL应该算是过关了。有下列操作集: 1.PUSH:向栈顶

2017-02-23 00:46:57 395

原创 HDOJ(HDU).1412 {A} + {B} (STL SET)

HDOJ(HDU).1412 {A} + {B} (STL SET)点我挑战题目题意分析大水题,会了set直接用set即可。 利用的是set的互异性(同一元素有且仅有一项)。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <set>#define nmax 20005u

2017-02-23 00:33:56 381

原创 UVA.10474 Where is the Marble ( 排序 二分查找 )

UVA.10474 Where is the Marble ( 排序 二分查找 )题意分析大水题一道。排序好找到第一个目标数字的位置,返回其下标即可。暴力可过,强行写了一发BS,发现错误百出。应了那句话:基础不牢,地动山摇。 记录一下自己BS的常见错误: 1.需要传入的参数是,搜索的区间[l,r]和搜索的目标值t; 2.一般被搜索的对象以全局变量的身份出现,故不需要传参进去; 3.退出循环

2017-02-23 00:23:52 293

原创 HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值)

HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值)点我挑战题目题意分析从题目中可以看出是大数据的输入,和大量询问。基本操作有: 1.Q(i,j)代表求区间max(a[k]) k∈[i,j]; 2.U(i,j)代表a[i] = j; 对于询问U,用单点替换的操作维护线段树。对于询问Q,那么除了叶子节点,其他的节点应该保存的是左子树和右子树的最大值,因此pushup函

2017-02-23 00:13:40 307

原创 HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)

HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)点我挑战题目题意分析根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸。题中包括以下命令: 1.Add(i,j)表示 a[i]+=j; 2.Sub(i,j)表示 a[i]-=j; 3.Query(i,j)表示 Σ(a[i],a[j])。 Add操作和Sub操作分别是单点更新,Query是区间求和。题目比较

2017-02-22 23:56:45 394

转载 弱校的ACM奋斗史

感谢对手,是他让我们在最落魄的时候成长;感谢朋友,是他让我们在最寒冷的时候感到温暖……

2017-02-20 22:02:57 351

原创 动态规划总结(01背包 完全背包 多重背包)

动态规划总结(01背包 完全背包 多重背包)一、学习资料1.UVA DP 入门专题 2.夜深人静写算法(二) - 动态规划 3.算法之动态规划 4.什么是动态规划?动态规划的意义是什么? 5.01背包问题和完全背包问题 6.背包九讲二、练习题目1.01背包练习 2.完全背包 多重背包练习 3.UVA的部分题目三、模型总结(1)01背包问题1.模型大意有n件商品,每件商品仅有一件,并且每

2017-02-20 21:13:18 951

原创 HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)

HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)题意分析先把每种硬币按照二进制拆分好,然后做01背包即可。需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数。因此用0表示不可以,1表示可以。最后对dp数组扫描一遍即可。代码总览#include <iostream>#include <cstdio>#include <cstring>#include <a

2017-02-20 18:55:07 394

原创 HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)

HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)题意分析先把每种硬币按照二进制拆分好,然后做01背包即可。需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数。因此用0表示不可以,1表示可以。最后对dp数组扫描一遍即可。代码总览#include <iostream>#include <cstdio>#include <cstring>#include

2017-02-20 18:53:58 316

原创 HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化)

HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化)题意分析首先C表示测试数据的组数,然后给出经费的金额和大米的种类。接着是每袋大米的价格,重量和袋数。 每种大米的数量是有限的,应该能看出是多重背包的问题。关键是多重背包的处理方法。对多重背包采用二进制优化的方法。设同种大米的数量为n,每袋的价格为v,那么把同一种大米分别拆成1,2,4,

2017-02-20 18:50:07 451

原创 HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)

HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)题意分析与普通的完全背包大同小异,区别就在于多了一个个数限制,那么在普通的完全背包的基础上,增加一维,表示个数。同时for循环多写一层即可。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 105u

2017-02-20 16:55:42 530

原创 HDOJ(HDU).4508 湫湫系列故事――减肥记I (DP 完全背包)

HDOJ(HDU).4508 湫湫系列故事――减肥记I (DP 完全背包)题意分析裸完全背包代码总览#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 100005#define nn 105using namespace std;int dp[nmax];str

2017-02-20 16:44:23 273

原创 HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)

HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)题意分析裸的完全背包问题代码总览#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 33000#define ll long longusing namespace std;ll dp[nmax];in

2017-02-20 16:41:30 325

原创 HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)

HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)题意分析裸的完全背包代码总览#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 100000#define INF 0x3f3f3f3fusing namespace std;int we[nma

2017-02-20 16:37:54 299

原创 HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)

HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)题意分析要先排序,在做01背包,否则不满足无后效性,为什么呢? 等我理解了再补上。代码总览#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 505#define nn 5

2017-02-20 16:28:19 471

原创 POJ.3624 Charm Bracelet(DP 01背包)

POJ.3624 Charm Bracelet(DP 01背包)题意分析裸01背包代码总览#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 13000#define nnmax 3500using namespace std;int dp[nmax];int w

2017-02-20 16:22:01 265

原创 HDOJ(HDU).1864 最大报销额 (贪心)

HDOJ(HDU).1864 最大报销额题意分析题目有点问题,原题中说的单项物品的价值不得超过600元应该是单类物品的价值不能超过600元。一开始以为是01背包,后来按贪心写过了。一张一张发票处理,读入一整张发票的数据。然后检查一下里面是否有不能报销的类别(即除ABC)以外的其他类。然后看一下单类的价钱是否超过600。如都满足题目所说能够报销的要求,则把它存到b数组里面,接着对b数组按照金额降序排序

2017-02-20 16:15:43 322

原创 HDOJ(HDU).2546 饭卡(DP 01背包)

HDOJ(HDU).2546 饭卡(DP 01背包)题意分析首先要对钱数小于5的时候特别处理,直接输出0。若钱数大于5,所有菜按价格排序,背包容量为钱数-5,对出去价格最贵的菜做01背包。因为这时候还剩下5块钱,直接买最贵的那个菜,就可以保证剩下来的钱数是最小的。代码总览#include <iostream>#include <cstdio>#include <cstring>#include

2017-02-20 16:08:06 327

原创 HDOJ(HDU).2602 Bone Collector (DP 01背包)

HDOJ(HDU).2602 Bone Collector (DP 01背包)题意分析01背包的裸题#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define nmax 1005using namespace std;int v[nmax],w[nmax],dp[nmax];int

2017-02-20 16:02:06 246

原创 UVA.357 Let Me Count The Ways (DP 完全背包)

UVA.357 Let Me Count The Ways (DP 完全背包)题意分析与UVA.UVA.674 Coin Change是一模一样的题。需要注意的是,此题的数据量较大,dp数组需要使用long long 类型;另外输出方案为1个和多个的时候,语句是不同的。

2017-02-16 00:43:42 290

原创 UVA.10192 Vacation (DP LCS)

UVA.10192 Vacation (DP LCS)题意分析某人要指定旅游路线,父母分别给出了一系列城市的旅游顺序,求满足父母建议的最大的城市数量是多少。对于父母的建议分别作为2个子串,对其做LCS处理,最后的结果即为所求。核心状态转移方程: **if(c1[i] == c2[j]) dp[i][j] =dp[i-1][j-1]+1; else dp[i][j] = max(dp[i-1][j

2017-02-16 00:43:22 334

原创 UVA.10130 SuperSale (DP 01背包)

UVA.10130 SuperSale (DP 01背包)题意分析现在有一家人去超市购物。每个人都有所能携带的重量上限。超市中的每个商品有其相应的价值和重量,并且有规定,每人每种商品最多购买一个。求这一家人所能购买到的最大价值是多少。每个人的所能携带的最大重量即为背包容量。此题只是换成n个人而已。所以分别以每个人最大携带重量为背包容量,对所有商品做01背包,求出每个人的最大价值。这些最大价值之和即为

2017-02-16 00:42:54 367

原创 UVA.10066 The Twin Towers (DP LCS)

UVA.10066 The Twin Towers (DP LCS)题意分析有2座塔,分别由不同长度的石块组成。现在要求移走一些石块,使得这2座塔的高度相同,求高度最大是多少。问题的实质可以转化为LCS(最长公共子序列)问题。 推荐一篇写的比较好的博文: 动态规划求解最长公共子序列(LCS)核心的状态转移方程: **if(a[i] == b[j]) dp[i][j] = dp[i-1][j-1

2017-02-16 00:41:23 237

原创 UVA.562 Dividing coins (DP 01背包)

UVA.562 Dividing coins (DP)题意分析给出一堆不同面额的硬币,要求将这这些硬币分为价值接近的2堆(越接近越好,相等的情况最佳,且单个硬币不可再分),并最后输出这2堆硬币价值差值的绝对值。先累加求出这堆硬币的总和sum,然后令sum/2为背包容量,所有硬币为商品做01背包即可。最后求出的解为其中一堆最多能分多少价值的硬币(设为x),那么另一堆硬币的价值为sum-x,故两堆硬币的

2017-02-16 00:40:40 456

原创 UVA.674 Coin Change (DP 完全背包)

UVA.674 Coin Change (DP)题意分析有5种硬币, 面值分别为1、5、10、25、50,现在给出金额,问可以用多少种方式组成该面值。每种硬币的数量是无限的。典型完全背包。 状态转移方程 dp[j+c[i]] = dp[j] + dp[j+c[i]]代码总览/* Title:UVA.674 Author:pengwill Date:2017-2-16*/

2017-02-16 00:39:23 360

原创 HDOJ(HDU).2660 Accepted Necklace (DFS)

HDOJ(HDU).2660 Accepted Necklace (DFS)点我挑战题目题意分析给出一些石头,这些石头都有自身的价值和重量。现在要求从这些石头中选K个石头,求出重量不超过W的这些石头的最大价值是多少?类似于之前讨论到的数字选不选的问题,此处面临的情况是石头选不选,若选进行一个dfs,若不选择进行另外一个dfs。考虑递归边界: 1.当选够了K个的时候,终止递归; 2.当当前重量大于

2017-02-15 00:46:09 346

原创 HDOJ(HDU).1058 Humble Numbers (DP)

HDOJ(HDU).1058 Humble Numbers (DP)点我挑战题目题意分析水代码总览/* Title:HDOJ.1058 Author:pengwill Date:2017-2-15*/#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define n

2017-02-15 00:35:08 232

原创 HDOJ(HDU).1025 Constructing Roads In JGShining's Kingdom (DP)

HDOJ(HDU).1025 Constructing Roads In JGShining’s Kingdom (DP)点我挑战题目题目分析题目大意就是给出两两配对的poor city和rich city,求解最多能修几条不相交的路。此题可以转化为LIS问题。转化过程如下:数据中有2列,为方便表述,暂且叫做第一列和第二列。 1.若第一列是是递增的(给出的2个样例都是递增的),那么要想尽可能多的做

2017-02-15 00:29:39 637

原创 HDOJ(HDU).1003 Max Sum (DP)

HDOJ(HDU).1003 Max Sum (DP)点我挑战题目题意分析给出一段数字序列,求出最长连续子段和。典型的动态规划问题。用数组a表示存储的数字序列,sum表示当前子段和,maxsum表示最大子段和。不妨设想:当sum为负数的时候: 1.当下一个数字a[i]为正数的时候,sum+a[i] < a[i],不如将sum归零重新计算 2.当下一个数字为负数的时候,sum+a[i]< 0 ,若

2017-02-15 00:06:52 1117 1

原创 HDOJ(HDU).2266 How Many Equations Can You Find (DFS)

HDOJ(HDU).2266 How Many Equations Can You Find (DFS) [从零开始DFS(9)]点我挑战题目从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] — DFS思想与框架/双重DFS HDOJ.1010 Tempter of the Bone [从零开始DFS(1)] —DFS四向搜索/奇偶剪枝 HDOJ(HDU).101

2017-02-14 00:35:07 562

原创 POJ.1416 Shredding Company (DFS)

POJ.1416 Shredding Company [从零开始DFS(8)]点我挑战题目题意分析给出一个目标数字n和一串数字序列s,要求切割序列s为若干数字段s1,s2,s3……sn,最后求出最大的 不超过目标数字n的 序列s切割方式,和这些字段的和。若对于最大的数字有多种切割方式,则输出rejected;若没有这样的切割方式,则输出error。直接对给出的数字串操作有些不方便,我们不妨想想挡板

2017-02-14 00:23:42 408

原创 HDOJ(HDU).2044-2049 递推专题

HDOJ(HDU).2044-2049 递推专题点我挑战题目HDU.2044题意分析先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中走法。当n为上方格子的时候,由于只能向右走,所以也有2种走法。 不妨用a[n]来表示第n个格子有几种走法,根据上述描述,不难找出递推关系,a[n] = a[n-1] + a[n-2]。但是对于n<2的数

2017-02-13 20:11:22 320

原创 HDOJ(HDU).1045 Fire Net (DFS)

HDOJ(HDU).1045 Fire Net [从零开始DFS(7)]点我挑战题目从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] — DFS思想与框架/双重DFS HDOJ.1010 Tempter of the Bone [从零开始DFS(1)] —DFS四向搜索/奇偶剪枝 HDOJ(HDU).1015 Safecracker [从零开始DFS(2)] —

2017-02-09 14:26:09 987

原创 HDOJ(HDU).1258 Sum It Up (DFS)

每组数据给出要凑出的目标数字num和数字个数n,然后依次给出n个数字。要求从n个数字中选出若干个数字,是的数字之和为nun。**重复的组合只输出一次。**和之前做过的选数字的题目类似,也可以采用DFS的思想来做。这道题与[ HDOJ.1342 Lotto [从零开始DFS(0)]](http://blog.csdn.net/pengwill97/article/details/54850852)及其的相似:每个数

2017-02-08 21:17:16 846

algebra_2005_2006.zip

algebra_2005_2006数据集,常作为知识追踪的使用数据。KDD Cup 2010: Educational Data Mining Challenge使用的数据集之一。

2020-04-11

Dynamic Graph Algorithms

Dynamic Graph Algorithms Methodology & State of the Art Algorithmic Techniques & Experimen Conclusions

2018-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除