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

  • 联系
  • 订阅
  • 管理

02 2011 档案

zoj 2109 FatMouse' Trade 部分背包
摘要:部分背包问题,贪心 先按J[i] / F[i] 升序排序,每次选取J[i] / F[i]的最大值,如果不能取满J[i],则取把背包填满的容量即可。原因很简单,每次取J[i] / F[i]的最大值就使得背包单位体积价值最多。从大到小选择,自然会得到最优解。 #include <iostream>#include <algorithm>#include <cstdio>using namespace... 阅读全文

posted @ 2011-02-27 21:24 sysuwhj 阅读(423) 评论(0) 推荐(0)

zoj 1076 Gene Assembly 贪心
摘要:这题就是任务调度,给定任务的起始和结束时间,求能完成任务的最大数目。 贪心,先按任务的结束时间递减排序,再逐个选择。选择活动的起始时间大于已选择活动的结束时间 #include <iostream>#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int N = 50005;struct... 阅读全文

posted @ 2011-02-27 21:18 sysuwhj 阅读(501) 评论(0) 推荐(0)

sicily 1694 Spiral 蛇形矩阵
摘要:题目给出蛇形矩阵,要求计算给定的值在蛇形矩阵的位置。 注意到,矩阵的右上角的值是某个奇数的平方,从内到外依次是1,3,5…的平方。先求出要求的数对应的右上角的数的坐标,再根据与距离来计算指定数的坐标 #include <iostream>#include <cstdio>using namespace std;int n, m;void find(){ int place_zero = n/2+... 阅读全文

posted @ 2011-02-26 22:12 sysuwhj 阅读(411) 评论(0) 推荐(0)

poj 1976 A Mini Locomotive 动规
摘要:这题有些像求连续子序列和的最大值 设dp[i][j]表示i个火车头拉动j个火车舱的人数和的最大值,状态方程如下:dp[i][j] = max(dp[i-1][j-times]+num[j]+..+num[j-times+1], dp[i][k]) #include <iostream>#include <cstdio>#include <cstring>using namespace std;c... 阅读全文

posted @ 2011-02-25 22:19 sysuwhj 阅读(447) 评论(0) 推荐(0)

poj 2184 Cow Exhibition 背包
摘要:这题想了很久,虽然知道是01背包,但加了两个约束条件后,就不知道如何做了。 直到看到解题报告才懂这题思路。先定死一个变量,求另外一个变量,得到各个结果再找出最优解。 设dp[i][v]为前i头牛给定smart为v时的最大fun值之和。就可以转化为01背包。 dp[i][v] = max(dp[i-1][v-s[i]] + f[i], dp[i-1][v])。注意由于smart可以是负的,要把sm... 阅读全文

posted @ 2011-02-25 20:23 sysuwhj 阅读(624) 评论(1) 推荐(1)

poj 3211 Washing Clothes 背包
摘要:这题做得相当顺利,1A 题意是求夫妇两人洗完衣服用的最小时间。先按衣颜色分类,对于每种颜色的衣服,最优解是都平分即V/2,背包容量为洗衣服的花费,用01背包来标记是否可以通过组合组成某个容量。若不能平均分,就从V/2开始搜索,最接近V/2的较大值就为两人洗完每种颜色衣服的最短时间,把各种颜色衣服的解加起来即为答案 #include <iostream>#include <map>#include... 阅读全文

posted @ 2011-02-24 21:04 sysuwhj 阅读(348) 评论(0) 推荐(0)

hdu 1028 Ignatius and the Princess III 完全背包
摘要:这题以前是母函数做的,今天看了DD的背包九讲,该用背包模型做。 这题是完全背包。设dp[i][v] 为用前i个数组成v的方案数,状态方程如下:dp[i][v] = sum(dp[i-1][v-k*i]) #include <iostream>using namespace std;const int N = 122;//dp[i][v] 为用前i个数组成v的方案数//dp[i][v] = sum... 阅读全文

posted @ 2011-02-22 23:54 sysuwhj 阅读(366) 评论(0) 推荐(0)

结束,新学期开始
摘要:寒假结束了,新学期将要开始了。上学期,一个字总结——宅。寒假,总结也是——宅。放假一个月来都宅在家了,每天都重复着看书做题。新的学期,给自己定义目标:好好学习,好好看书,好好做题,好好学英语。不想再搞项目了。那三本厚厚的教材光看到都蛋疼了,这个学期的任务还是很重的况且这学期的课程感觉蛮重要的。 阅读全文

posted @ 2011-02-20 22:39 sysuwhj 阅读(185) 评论(0) 推荐(0)

hdu 1024 Max Sum Plus Plus m段连续子序列最大和 dp
摘要://这题的方程不会列,看了别人解题报告才懂 //设dp[i][j]为i段以a[j]结尾子序列的最大和 //dp[i][j] = max(dp[i][j-1]+a[j], dp[i-1][k]+a[j]) //由于题目规模巨大,不能使用二维数组存,需要优化 //经分析,可以优化成两个一维数组 //dp[j]为以a[j]结尾的子序列最大和,pre[j]则是记录前个段(即第i-1段)到a[j-1]为止的... 阅读全文

posted @ 2011-02-18 22:49 sysuwhj 阅读(507) 评论(0) 推荐(0)

poj 1466 Girls and Boys 最大独立集
摘要:根据性别分为两个集合,然后求最大独立集。由于题目没有给出性别,可以不划分集合,每个集合都为n个,求最大匹配数,最后除2即可。 阅读全文

posted @ 2011-02-10 19:00 sysuwhj 阅读(540) 评论(0) 推荐(0)

hdu 2768 Cat vs. Dog 最大独立集
摘要:开始误解了题目意思,认为观众留下是要同时满足两个条件。后来看了解题报告才明白过来。当观众想要留下来的宠物出局时,这个观众才认为会离开 。 以cat_lover和dog_lover把观众分为两个集合。只要两个集合内的人的选择有冲突,这两个顶点连接,边代表矛盾,然后求最大独立集。 最大独立集 = 顶点数 - 最小顶点覆盖数(最大匹配数) 阅读全文

posted @ 2011-02-10 18:56 sysuwhj 阅读(785) 评论(0) 推荐(0)

poj 3041 Asteroids 最小点覆盖
摘要:构图方式如下: 以row行号作为x集合顶点, col行号作为y集合顶点,根据题目给出的坐标x,y用边连接X,Y集合的顶点,求最小点覆盖数 阅读全文

posted @ 2011-02-10 12:17 sysuwhj 阅读(257) 评论(0) 推荐(0)

poj 2226 Muddy Fields 最小点覆盖
摘要:转换成求最小点覆盖数 构图方式如下:横行的连续*方块作为X集合里的顶点,纵行的连续*方块作为Y集合的顶点,若两个方块相交,则用边把这两个顶点相连。然后求最小点覆盖数(求最大匹配),即为答案。 要注意构图后的顶点数。 阅读全文

posted @ 2011-02-10 12:06 sysuwhj 阅读(535) 评论(0) 推荐(0)

zoj 1654 Place the Robots 最大二分匹配
摘要:转换成最大匹配。 每个横向的'o’和'#’块(必须包含'o’)作为X集合一个顶点,每个纵向的'o’和'#’块(必须包含'o’)作为Y集合一个顶点 当横向块和纵向块的交点的'o’时,二分图该两个顶点有边相连接。 这题因为下标不小心打错了,调了很久才ac,纳闷。 阅读全文

posted @ 2011-02-09 23:19 sysuwhj 阅读(424) 评论(0) 推荐(0)

zoj 3362 Beer Problem 最小费用流
摘要:别人都说是赤裸裸的最小费用流,自己想了很久,都想不到如何做,最后看了别人解题报告才懂。 关键还是在构图和转化。源点是1,添加一个汇点,汇点到各个城市的边的容量是各个城市卖啤酒的钱的相反数。通过spfa求cost的最短路径,若最短路径的cost小于0,说明这条路径是赚钱的,否则是亏本的,算法停止。 阅读全文

posted @ 2011-02-09 19:48 sysuwhj 阅读(370) 评论(0) 推荐(0)

poj 2195 Going Home 二分图最大权匹配
摘要:求二分图最小权匹配,转换成最大权匹配。 方法一,初始化边e为负的权值,取反输出答案; 方法二,lx[]用min初始化,求slack时用max, 从最小值逐渐增大。 感觉二分图最大权匹配的思想与差分约束求最大值有些像。 差分约束求最大值一直保持d[u] &lt;= d[v]+ e(u, v),而最大权匹配则是通过顶标,先从最大的权值边匹配,若不能构成完全匹配,就在相等子图里添加边。都是... 阅读全文

posted @ 2011-02-09 16:01 sysuwhj 阅读(659) 评论(0) 推荐(0)

 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3