• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






This_poet——Only a poet

为省队而奋斗,为NOI而奋斗!This_poet@126.com
 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2011年8月31日

POJ 2227 The Wedding Juicer——堆的应用——Pku2227
摘要: 这是刘汝佳神牛《算法艺术与信息学竞赛》上有关堆的一道例题。主要思路如下:维护一个堆,存储的是水位和高度一样的格子的高度。1、首先把边缘点全部加到堆中2、每次取堆中最小的一个,做一次Floodfill,如果被fill到的点比队首元素高度高,那么将这个点加入堆中,否则将该点的水位设置为队首元素的水位。3、重复2,直到堆中没有元素。4、最后,统计答案为每个点水位高度与实际高度的差值和。CODE 1 const 2 maxn=90000; 3 maxp=300; 4 ddx:array[1..4]of integer=(0,0,1,-1); 5 ddy:arr... 阅读全文
posted @ 2011-08-31 20:17 This_poet 阅读(435) 评论(0) 推荐(0)
 
POJ1989 The Cow Lineup——贪心+扫描法——Pku1989
摘要: 开始的时候没有想出算法,上网查题解,居然有人说这题是动态规划……无奈。偶然间看到了上海交大马融牛的解题表格:只有一句话,从前向后扫描。才知道这道题用到的只不过是一个贪心思想。贪心思想:把序列划分成尽量多的连续子序列,使得每一个连续子序列都满足如下条件:1..k每个数字都在这个子序列中出现过一次,并且至少有一个数字只出现过一次。这样的子序列的个数+1就是答案贪心思想证明:要让长度为j的序列全部出现,必须满足第一个数字可以取1..k任意一个,第二个数字可以取1..k任意一个……以此类推当已经划分成j个子序列并无法向后划分的时候,说明第j+1个数是不能在1..k的范围内自由选择的。所以,最短不出现子 阅读全文
posted @ 2011-08-31 15:22 This_poet 阅读(299) 评论(0) 推荐(0)
 
POJ1991 Turning in Homework——贪心+动态规划——Pku1991
摘要: 贪心+ 动态规划。贪心思想:当有一段连续区间[i,j]未交时,取i或j是最优的。贪心思想证明:如果在[i,j]这段连续区间都没有被取的时候取了中间的m,那么后来一定要从m返回到i或者j,这时候是一定走了“冤枉路的”。而如果这时取了i或者j,那么到中间的时候m一定可以取。证毕。动态规划的方程这时候就简单了:f[i,j,0]表示[i+1,j]这一段连续区间都没有取,奶牛站在i上f[i,j,1]表示[i,j-1]这一段连续区间都没有取,奶牛站在j上方程:f[i,k,0]:=Min(Max(f[i-1,k,0]+a[i]-a[i-1],time[i]),Max(f[i,k+1,1]+a[k+1]-a[ 阅读全文
posted @ 2011-08-31 01:00 This_poet 阅读(527) 评论(0) 推荐(1)