完全背包---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] ...
随机推荐
- MSPBSL_Scripter编译
The BSL Scripter is a PC application that is available for Windows, Linux and Mac OS X. It is a user ...
- jq 停止/结束多个ajax请求
页面按钮: <button id="song">abort</button> 请求: var str = {} str.xhr = $.ajax({ typ ...
- 理解JVM之对象的生命周期
1.对象的创建 1) 当虚拟机遇到一条new的指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载,解析和初始化过. 2) 在类加载检查通 ...
- MySQL增量备份与恢复实例
小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志. 本次操作 ...
- xtrabackup数据库备份工具
下来我来介绍一下更强大的备份工具:xtrabackup xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速 ...
- C#中两个List<TModel>中根据指定条件--判断并获取不同数据的数据集合2
方式一:Linq List<Test> list = new List<Test>(); list.Add(new Test { score = 10, name = &quo ...
- 快速认识Python
1.数字和表达式 什么是表达式,1+2*3 就是一个表达式,这里的加号和乘号叫做运算符,1.2.3叫做操作数.1+2*3 经过计算后得到的结果是7,就1+2*3 = 7.我们可以将计算结果保存在一个变 ...
- sql/pl 安装并连接Oracle数据库
1,首先,先下载pl/sql devloper 安装包.下载对应版本的安装包 下载地址 https://www.allroundautomations.com/bodyplsqldevreg.htm ...
- mongo operations
Check Mongo Operate Logs db.getCollection('oplog.rs').find({'ns':{$in:['sxa.sxacc-organizations','sx ...
- Sort Letters by Case
Given a string which contains only letters. Sort it by lower case first and upper case second. Examp ...