当前位置: 首页 > wzjs >正文

在线h5免费制作网站中国菲律宾最新局势

在线h5免费制作网站,中国菲律宾最新局势,软件开发工作稳定吗,百度账号中心题目 P1466 [USACO2.2] 集合 Subset Sums 分析 感觉本题最难的难点就是想出用01背包做。特征:1~n的连续整数集合中挑选某些数。要求两个子集合的数字和是相等的,就相当于给定了限制条件在1~n中挑数字。 先分析状态表示,状态表示一般跟着…

题目

P1466 [USACO2.2] 集合 Subset Sums
在这里插入图片描述

分析

感觉本题最难的难点就是想出用01背包做。特征:1~n的连续整数集合中挑选某些数。要求两个子集合的数字和是相等的,就相当于给定了限制条件在1~n中挑数字。

先分析状态表示,状态表示一般跟着题目要求什么来设置。本题要求划分方案数,那么我们的状态表示就设置成方案数。
f[i][j]:从前 i 个数中选出数值和为 j 的方案数
但是注意,题目要求的实际上是划分成两个子集合这样的方案有多少个,而我们的状态表示最终求的是有多少个数值和为sum/2的子集合,所以最后结果要除以2

状态转移方程:
方案数 = 不选 + 选
f[i][j] = f[i-1][j] + f[i-1][j-i]
代码实现上,如果写的是二维的状态转移方程,由于“选”是有条件限制的,所以“选”和“不选”是分开讨论的。
如果写成一维的,由于将条件省略进了循环中,就可以写在一起。

重要:当状态表示为方案数的时候,不要忘记初始化!!!

AC代码

#include<iostream>using namespace std;typedef long long LL; int n;LL f[40][800]; //f[i][j]:从前i个数中选出数值和为j的方案数 int main()
{cin >> n;int sum = (1 + n) * n / 2; //等差数列求和 if(sum % 2 == 1) //总和是奇数就凑不出来两堆数值相同的 {cout << 0;return 0;}sum /= 2; //sum/2作为限制条件 f[0][0] = 1; //当状态表示为方案数的时候,不要忘记初始化!!! for(int i=1;i<=n;i++){for(int j=0;j<=sum;j++){f[i][j] += f[i-1][j]; //不选 if(j >= i) f[i][j] += f[i-1][j-i]; //选 }}	cout << f[n][sum] / 2; //题目问的是可以分成多少对 return 0;
}
http://www.dtcms.com/wzjs/547263.html

相关文章:

  • 优秀甜品网站杭州做网站hzfwwl
  • 贵州网站开发流程东莞阳光网入口
  • 简洁大气网站设计wordpress的站点是什么
  • 外贸网站建设海外推广codeus wordpress
  • 提高网站知名度app推广方案怎么写
  • seo网站托管汕头快速建站模板
  • 泰州做企业网站的哪里好wordpress 获得分类名称
  • 兰州建设厅评职称网站友链提交入口
  • 做网站界面用的软件建材类网站模板
  • 做网站空间不给账号密码开发小程序大概多少钱
  • 网站搭建php源码做牙网站
  • 网站索引量下降设计公司企业官网
  • 建网站多少钱一个平台桂林网络开发
  • 手机算命网站建设网络营销能做什么?
  • 淘宝官方网站登录页面搜索引擎广告收费方式
  • 在建设部网站首页网站在线制作生成
  • 半月报网站建设商务代表工作总结药品网站建设
  • 嘉华伊美网站建设网站让图片充满屏幕怎么做
  • 暗网是什么网站wordpress速度慢解决方法
  • 手机微信网站怎么做南阳卧龙区高端网站建设价格
  • 做一个网站要多久淮南网云置业有限公司
  • 胶州市住房建设局网站网站建设岗位的认知
  • 网站开发需要学习网站设计的能力要求
  • 网站设计师前景宁波网站建设设计公司排名
  • 企业网站seo排名新桥专业网站建设
  • 网站建设费要摊销湖南网站设计案例
  • 网站开发总监待遇山西省建设注册中心网站首页
  • 网站源码下载视频永济微网站建设费用
  • 亚马逊官方网站的建设怎么建立图片的网站吗
  • 自建外贸网站如何推广做网站选云服务器内核