Square Country
2024-09-28 14:49:38
原题链接:http://acm.timus.ru/problem.aspx?space=1&num=1073
分析:dp,dp[i]表示钱为i且恰好用完时能买的最少土地数,易知dp[i]=min(i,dp[i-j*j]+1)(1<=j<=sqrt(i)).
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
#define ll long long
#define maxn 60005
using namespace std;
int dp[maxn];
void solve()
{
memset(dp,0,sizeof(dp));
dp[0]=0;dp[1]=1;dp[2]=2;dp[3]=3;dp[4]=1;
for(int i=5;i<=60000;i++)
{
dp[i]=i;
for(int j=1;j*j<=i;j++)
dp[i]=min(dp[i],dp[i-j*j]+1);
}
}
int main()
{
int n;
solve();
cin>>n;
cout<<dp[n]<<endl;
return 0;
}
最新文章
- IOS开发基础知识--碎片31
- Dual Number
- javase基础复习攻略《八》
- Windows Azure Cloud Service (11) PaaS之Web Role, Worker Role(上)
- Spring MVC 事务配置
- Discuz 7.2 /faq.php SQL注入漏洞
- hdu4293Groups
- 4 Java学习之 反射Reflection
- expect 传参
- What’s New in Python 2.7 — Python 3.4.0b2 documentation
- c#后台输出javascript语句和一些通用验证的类
- 如何让celery接受定制的参数
- Linux指令--more,less
- freemarker.template.TemplateException:Error executing macro:mainSelect
- 死磕 java集合之CopyOnWriteArraySet源码分析——内含巧妙设计
- 扩展欧几里得(exgcd)与同余详解
- oracle插入数据问题
- Excel操作
- 在c++中实现反射的初步想法
- 给Android组件添加事件一个很好用的方法