完全背包---P1679 神奇的四次方数
P1679 神奇的四次方数
题解
一看这就是个完全背包
m最多不会超过18^4,所以我们把x^4用数组存起来,然后考虑如何填满m,注意存到18^4,不然会像我一样RE。。。
那么问题就转化成完全背包问题,因为一个四次方数可以用多次
设计状态:
f [ i ] [ j ] 表示前 i 个数中,总和不超过 j ,的数的最少个数,
然后我们降一维实现代码即 f [ j ]
注意初始化 f[0]=0
代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<queue> using namespace std; typedef long long ll; inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''||ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} int m,n;
int s[],f[]; int main()
{
m=read();
for(int i=;i<=;i++) s[i]=i*i*i*i; //之前只算到17,然后我就RE了
// for(int i=0;i<=17;i++) printf("%d:%d\n",i,p[i]);
memset(f,0x7f,sizeof(f));
f[]=; //这里初始化0
for(int i=;s[i]<=m;i++)
for(int j=s[i];j<=m;j++){
f[j]=min(f[j-s[i]]+,f[j]); //数组下标总不能是负数吧
}
printf("%d\n",f[m]);
return ;
}
彩蛋
拉格朗日四平方和定理:
四平方和定理说明每个正整数均可表示为n个整数的平方和。(n<=4)
虽然我也不知道这东西有啥用QWQ
完全背包---P1679 神奇的四次方数的更多相关文章
- P1679 神奇的四次方数
P1679 神奇的四次方数用一些什么东西组成一个什么东西,要求什么东西最优,这时候要考虑背包,不过要分析清楚是什么类型的背包.这题显然是个完全背包. #include<iostream> ...
- 洛谷——P1679 神奇的四次方数
P1679 神奇的四次方数 题目描述 在你的帮助下,v神终于帮同学找到了最合适的大学,接下来就要通知同学了.在班级里负责联络网的是dm同学,于是v神便找到了dm同学,可dm同学正在忙于研究一道有趣的数 ...
- 洛谷 P1679 神奇的四次方数
P1679 神奇的四次方数 题目描述 在你的帮助下,v神终于帮同学找到了最合适的大学,接下来就要通知同学了.在班级里负责联络网的是dm同学,于是v神便找到了dm同学,可dm同学正在忙于研究一道有趣的数 ...
- 洛谷P1679神奇的四次方数--DP
原题请戳>>https://www.luogu.org/problem/show?pid=1679<< 题目描述 在你的帮助下,v神终于帮同学找到了最合适的大学,接下来就要通知 ...
- 两个简单的动态规划问题,0-1背包和最大不相邻数累加和,附递归c代码
最近面试经常被问到动态规划,所以自己做了一个总结,希望能进行深入的理解然后尝试能不能找到通用的解决手段.我觉得动态规划思想好理解,难的是怎么找出全部并且合理的子问题和出口. 我一般把问题分为两类,一类 ...
- day116:MoFang:显示背包解锁/未解锁格子数&显示背包的道具物品&背包解锁
目录 1.显示背包的已解锁/未解锁格子数 2.显示背包中的道具物品 3.用户购买道具的时候,判断背包存储是否达到上限 4.道具也可以使用积分购买 5.在商城界面根据金额/积分显示不同商品 6.背包解锁 ...
- DP(第三版(较简单))
突然很想找点DP题(被虐虐) 前言 我竟然还能想起来当时是怎么做的233,题都是随便找的,跟以前的代码重了就重了吧,反正风格变了qaq [2017-11-18]其实本来打算写好多好多的水题来着,不过要 ...
- 洛谷P3537 [POI2012]SZA-Cloakroom(背包)
传送门 蠢了……还以为背包只能用来维护方案数呢……没想到背包这么神奇…… 我们用$dp[i]$表示当$c$的和为$i$时,所有的方案中使得最小的$b$最大时最小的$b$是多少 然后把所有的点按照$a$ ...
- --hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
解题思路: 多重背包:第 i 件物品有 j 个可用. 本题中 第 p[i] 类大米 有 c[i] 袋大米可买 ,故本题为多重背包. n(总钱数).m(种类) p[i] 单价 h[i] 重量 c[i] ...
随机推荐
- JS实现数组去重(重复元素保留一个)
1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5, ...
- 批量更新sql
跨库 批量更新 UPDATE a.table_1upINNER JOIN ( SELECT user_id, user_org_company_id, FROM b.table_2) AS tmp O ...
- TightVNC安装
软件版本:tightvnc-2.8.8-gpl-setup-64bit.msi 后面一路默认,虚拟机端口默认从5900开始递增.
- php+redis一步一步测试秒杀
1.普通的秒杀查库减库存: <?php /** 100个用户同时访问100次会出现超卖 **/ //连接数据库 $dsn = "mysql:host=localhost;dbname= ...
- oss打包下载
private static final String OSS_ENDPOINT = PropertiesUtil.getString("oss.endpoint"); priva ...
- LightOJ - 1151 Snakes and Ladders
LightOJ - 1151 思路: 将期望dp[x]看成自变量,那么递推式就可以看成方程组,用高斯消元求方程组的解就能求解出期望值 高斯消元求解的过程也是期望逆推的过程,注意边界情况的常数项,是6/ ...
- replace函数实现
##replace函数,跟split函数处理类似,比split简单 #coding=gbk ss='** *axx* *bv** *ctt** **dff***' print(ss) result=[ ...
- Dijkstra算法和Floyd算法
一.简介 迪杰斯特拉(Dijkstra)算法和弗洛伊德(Flyod)算法均是用于求解有向图或无向图从一点到另外一个点最短路径. 二.Dijkstra 迪杰斯特拉算法也是图论中的明星算法,主要是其采用的 ...
- 处理 read_csv 报错 OSError:Initializing from file failed
1.问题发现 df=pd.read_csv("X-go报表_交易20191118.csv") print(df.info()) File "pandas/_libs/pa ...
- 2019牛客多校第四场J free——分层图&&最短路
题意 一张无向图,每条边有权值,可以选择不超过 $k$ 条路使其权值变成0,求 $S$ 到 $T$ 的最短路.(同洛谷 P4568) 分析 首先,分层图最短路可以有效解决这种带有 「阶段性」的最短路, ...