随笔 - 32  文章 - 2  trackbacks - 0
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(3)

随笔档案

文章档案

搜索

  •  

积分与排名

  • 积分 - 8800
  • 排名 - 1247

最新评论

阅读排行榜

评论排行榜

很简单的dp,贪心会WA
 1 #include <iostream>
 2 using namespace std;
 3 const int OO=1000000;
 4 int n;
 5 int num[261];
 6 int dp[60001];
 7 int main(){
 8     scanf("%d",&n);
 9     for (int i=1;i<=260;++i) num[i]=i*i;
10     int ans=0;
11     int p=260;
12     while (num[p]>n) --p;
13     for (int i=1;i<=n;++i) dp[i]=OO;
14     for (int i=0;i<=n;++i)
15         for (int j=1;j<=p;++j) if (i+num[j]<=n&&dp[i]+1<dp[i+num[j]]) dp[i+num[j]]=dp[i]+1;
16     cout<<dp[n];
17 }


posted on 2008-11-08 17:54 Joseph 阅读(163) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理