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






tim11

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理
上一页 1 ··· 3 4 5 6 7

2012年8月16日

hdu 3033 I love sneakers!(分组背包)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3033(1)本题为分组背包问题,输入时将数据存入到结构体中:struct node{ int p[120], v[120], tot;}brand[12];(2)每组至少要取一个,处理方式不叫特殊,自然也是本题的关键。首先要初始化:for(i=1;i<12;i++) for(j=0;j<=m;j++) dp[i][j]=-(1<<28);即除了 i=0 以外,均是非法数据(注意,i=0 的一组千万不能赋负无穷)。之后是核心的部分:for(i=1;i<=k;i++) for(j=. 阅读全文
posted @ 2012-08-16 14:23 tim11 阅读(153) 评论(0) 推荐(0)
 
hdu 2955 Robberies(01背包)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2955(1)概率的预处理(常识):rp[i]=1-rp[i],并将概率相乘。若将概率相加(定式思维),案例是可以全过的,就麻烦了。。(2)初始化dp数组:偷走0百万是安全的,这很关键(dp[0]=1),其他的都是危险的(dp[i]=0),因为背包必须装满;(3)用sum 记录最大可能出现的值,结果也是从sum开始验证,符合安全条件的输出。具体代码:View Code #include<stdio.h>#include<stdio.h>#include<algorithm>u 阅读全文
posted @ 2012-08-16 13:09 tim11 阅读(128) 评论(0) 推荐(0)
 
hdu 1203 I NEED A OFFER!(01背包)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1203(1)用到概率的一点常识,预处理:b[i]=1-b[i];(2)注意n和m的个子含义,n为钱数, m为组数,不能错用(如初始化时将m当做n用。。)(3)此题为简单的01背包问题。具体代码:View Code #include<stdio.h>#include<stdio.h>#include<algorithm>using namespace std;int n, m;int a[11000];float b[11000], dp[11000];int main(){ 阅读全文
posted @ 2012-08-16 12:43 tim11 阅读(143) 评论(0) 推荐(0)
 
opj 1948 Triangular Pastures(dp)
摘要: http://poj.org/problem?id=1948(1)用dp[i][j] 表示三角形的边为 i, j 存在与否,本质是对枚举的优化(dp), 另外,上限可取sum/2;(2)将 double p=sum/2.0 写错成 double p=sum/2,后果很严重;(3)存在两种更新方式: 1)for(i=1;i<=n;i++) for(j=sum/2;j>=0;j--) for(k=sum/2;k>=0;k--) { if(j>=a[i]) dp[j][k]=dp[j][k]||dp[j-a[i]][... 阅读全文
posted @ 2012-08-16 12:12 tim11 阅读(172) 评论(0) 推荐(0)
 
opj1837 Balance(dp)
摘要: http://poj.org/problem?id=1837(1)用dp[i][j]表示挂了 i 个重物时 平衡度为 j 的数目;(2)核心部分:for(j=1;j<=m;j++) for(k=0;k<=15000;k++) if(dp[j-1][k]) for(i=1;i<=n;i++) dp[j][k+c[i]*g[j]]+=dp[j-1][k];其中, j 表示重物编号, k 是背包, i 为所挂位置。注意循环的顺序,先确定重物,再打开背包,最后逐个转移平衡度。(3)由于力矩的变化才是本题的关键,将中间位置设为平衡位... 阅读全文
posted @ 2012-08-16 11:54 tim11 阅读(140) 评论(0) 推荐(0)
 

2012年8月15日

poj1191 棋盘分割(dp)
摘要: http://poj.org/problem?id=1191(1)棋盘任意分割不是这道题所要讨论的,注意到题目中提到的“不允许的分割”,故会出现 s=min(s, d(n-1, x1, y1, i, y2)+sum(i+1, y1, x2, y2)); s=min(s, sum(x1, y1, i, y2)+d(n-1, i+1, y1, x2, y2)); 这样的规划关系(横向分割时)。(2)比较两种写法: 1) float ans=d(k, 1, 1, 8, 8); ans=sqrt((float)ans/k-pow(sq... 阅读全文
posted @ 2012-08-15 20:12 tim11 阅读(134) 评论(0) 推荐(0)
 
poj1141 Brackets Sequence( 括号序列)(dp)
摘要: http://poj.org/problem?id=1141括号序列问题有几个注意点:(1)不能用scanf("%s", str), 而要用gets(str),因为输入可能含有空格(空序列'' "符合要求);(2)‘ l ’表示所考虑对象的长度, 从0到n-1枚举(故单独处理dp[i][i]);(3)dp[i][j]表示‘i ’到 ‘ j ’的最小长度,也可以换种意义,表示‘ i ’到‘ j ’的最小添加长度,此时所有dp[i][j]要做适当调整。具体代码:View Code #include<stdio.h>#include<s 阅读全文
posted @ 2012-08-15 15:33 tim11 阅读(175) 评论(0) 推荐(0)
 
zstu2462 求一元三次方程的根
摘要: http://acm.zstu.edu.cn:8080/JudgeOnline/showproblem?problem_id=2462本题用到了牛顿迭代法牛顿迭代公式 设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。 阅读全文
posted @ 2012-08-15 13:01 tim11 阅读(205) 评论(0) 推荐(0)
 
上一页 1 ··· 3 4 5 6 7