P1566 加等式
P1566 加等式
题目描述
对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和。如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是相同的加等式,也是这个集合唯一的加等式。给定一个整数集合,编程找出其所有的加等式的个数
输入输出格式
输入格式:
第一行为t,表示测试数据组数。(1≤t≤10);
接下来t 行,每行表示一组测试数据。其中第一个数m(1≤m≤30),表示集合元素的个数,接下来m 个不同的整数x 分别表示集合元素(1≤m≤1000)。
输出格式:
对于每个输入数据,输出一个整数,表示其中加等式的个数。
输入输出样例
洛谷题解:
使用01背包,求出方案总数。
f[c]=Σfc-w[i]
初始f[0]=1,其他f[i]=0
时间复杂度O(tm*max{x})
这道题是一道变形的01背包方法数问题。我们可以先求出每个数拆成其他数之和的方案总数,最后再相加。求每个数拆成其他数之和的状态转移方程是f[j]=sum(f[j],f[j-i]); 1<=i<=n a[i]<=j<=m(其中,m是所有数的最大的数)边界应是f[0]=1,最后把解算出来一定要减n!!!(因为还要去掉每个数自身的方案)
方便理解,我直接用程序打表就好,没必要空想。

每次都是用最后一样物品在试。
题目没看清,没说一定是两个数的和。
肯定会导致题目看不清。
#include <bits/stdc++.h>//万能头文件
using namespace std;
int a[],f[];//数组a是存放读入的数,数组f存放的每个数的拆成其他数或自己之和的方案总数
int main()
{
int t;
cin>>t;
while(t--)//读入t组数据
{
int m=-,ans=,n;
memset(f,,sizeof(f));//别忘了初始化
cin>>n;
for(int i=; i<=n; i++)
{
cin>>a[i];
m=max(m,a[i]);//m存放最大数
}
f[]=;//边界
for(int i=; i<=n; i++)
{
for(int j=m; j>=a[i]; j--)//是从m递减到a[i],不要写反了,不然就是完全背包的方案数了。
f[j]+=f[j-a[i]];//套用状态转移方程
}
for(int j=; j<=n; j++)
{
ans+=f[a[j]];//累加每个数的拆成其他数或自己之和的方案数
}
cout<<ans-n<<endl;//还要减掉每个数自身的方案
}
return ;
}
P1566 加等式的更多相关文章
- 洛谷 P1566 加等式
P1566 加等式 题目描述 对于一个整数集合,我们定义“加等式”如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ...
- luogu P1566 加等式
题目描述 对于一个整数集合,我们定义"加等式"如下:集合中的某一个元素可以表示成集合内其他元素之和.如集合{1,2,3}中就有一个加等式:3=1+2,而且3=1+2 和3=2+1是 ...
- Luogu P1566 【加等式】
看到这道题,我们首先注意到“找出其所有的加等式的个数”,自然地考虑运用计数DP求出若干数相加的和的个数 考虑将每个元素排序后DP处理若干数相加的和的个数 用f[i]表示 对于一个数a[i],对于前i- ...
- 【bzoj2118】 墨墨的等式
http://www.lydsy.com/JudgeOnline/problem.php?id=2118 (题目链接) 题意 给出${B}$的取值范围${[Bmin,Bmax]}$,求方程${a_{1 ...
- RSA 加解密算法
与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥. 就是有2把钥匙1.使用publicKey可以对数据进行加密2.使用Key才能对数据进行解密单方向传输用公钥加密的数据,只有私钥 ...
- 数论+spfa算法 bzoj 2118 墨墨的等式
2118: 墨墨的等式 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1283 Solved: 496 Description 墨墨突然对等式很感兴 ...
- TYVJ P1012 火柴棒等式 Label:枚举
背景 NOIP2008年提高组第二题 描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法 ...
- 整型数组处理算法(八)插入(+、-、空格)完成的等式:1 2 3 4 5 6 7 8 9=N[华为面试题]
有一个未完成的等式:1 2 3 4 5 6 7 8 9=N 当给出整数N的具体值后,请你在2,3,4,5,6,7,8,9这8个数字的每一个前面,或插入运算符号“+”,或插入一个运算符号“-”,或不插入 ...
- TensorFlow构建卷积神经网络/模型保存与加载/正则化
TensorFlow 官方文档:https://www.tensorflow.org/api_guides/python/math_ops # Arithmetic Operators import ...
随机推荐
- go构造函数
go构造函数 结构体没有构造函数,你可以创建一个函数返回一个相应类型的实例代替(类似一个工厂): func NewSaiyan(name string, power int) *Saiyan { re ...
- Repeatable Read
在Repeatable Read隔离级别下,一个事务可能会遇到幻读(Phantom Read)的问题. 幻读是指,在一个事务中,第一次查询某条记录,发现没有,但是,当试图更新这条不存在的记录时,竟然能 ...
- Linux环境下安装PHP的gd库
当前使用的安装包版本: freetype-2.4.0.tar.bz2 jpegsrc.v9.tar.gz libpng-1.6.28.tar.gz 1.安装freetype tar jxvf free ...
- [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)
Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要 玩家每天按时上线,完成打卡任务.这个游戏的地图 ...
- windows API 创建系统托盘图标
系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32 API实现,对理解系统托盘有些帮助. [cpp] view plaincopy #include <windows ...
- python pip时openssl的错误
也不知道看了哪个方法弄成这个样子的,也没办法,下面方法可用 https://blog.csdn.net/chr1341901410/article/details/80995451
- 教你一些IDE中比较骚的操作技巧!
本文转自微信公众号「程序员的成长之路」id:cxydczzl IDEA 有个很牛逼的功能,那就是后缀补全(不是自动补全),很多人竟然不知道这个操作,还在手动敲代码. 这个功能可以使用代码补全来模板式地 ...
- unzip失败,unzip:报错End-of-central-directory signature not found、scp:报错no space left on device
文章目录 问题 解决 拓展 问题 通过rz命令传本地文件到本地服务器,失败. 通过scp命令尝试报错: no space left on device 意思是目的机器内存不够用了,但是传过去了,但是没 ...
- 谷歌与Airbnb的JS代码规范
谷歌JS代码规范 规范代码原因:代码规范是为了保持源代码编写模式一致,便于维护代码,可读性高. 1.使用空格代替tab 规范随后指出应该使用2个,而不是4个空格带实现缩进.(除了每一行的终止符序列,A ...
- 剑指offer——66翻转字符串
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...