母函数题目

hdu 1028 Ignatius and the Princess III 母函数模板题

http://acm.hdu.edu.cn/showproblem.php?pid=1028

题意:

整数的拆分。

母函数学习http://www.wutianqi.com/?p=596

View Code
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>#define CL(a,num) memset((a),(num),sizeof(a))
#define iabs(x)  ((x) > 0 ? (x) : -(x))
#define Min(a , b) ((a) < (b) ? (a) : (b))
#define Max(a , b) ((a) > (b) ? (a) : (b))#define ll __int64
#define inf 0x7f7f7f7f
#define MOD 100000007
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0)
#define test puts("<------------------->")
#define maxn 100007
#define M 100007
#define N 127
using namespace std;
//freopen("din.txt","r",stdin);int c1[N],c2[N];void init(int n){int i,j,k;for (i = 0; i <= n; ++i){c1[i] = 1;//乘完后的系数c2[i] = 0;//乘的过程中的系数
    }for (i = 2; i <= n; ++i){//总共有n个括号,从第2个起每一个括号都要和前面那一个括号相乘//所以可以忽略第一个括号 for (j = 0; j <= n; ++j){//j代表最前面这个大括号的项数 for (k = 0; k + j <= n; k += i){//在大括号后面,x都是以i方递增的 c2[k + j] += c1[j];//这里就是大括号后面的括号与前面相乘的计算 
            }}for (j = 0; j <= n; ++j){c1[j] = c2[j];c2[j] = 0;}}
}
int main(){int n;init(120);while (~scanf("%d",&n)){printf("%d\n",c1[n]);}return 0;
}

 

hdu 1398 Square Coins

http://acm.hdu.edu.cn/showproblem.php?pid=1398

题意:

整数拆分的题目,只不过后边的括号里面的差值变成了i^2吧了。。

View Code
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>#define CL(a,num) memset((a),(num),sizeof(a))
#define iabs(x)  ((x) > 0 ? (x) : -(x))
#define Min(a , b) ((a) < (b) ? (a) : (b))
#define Max(a , b) ((a) > (b) ? (a) : (b))#define ll __int64
#define inf 0x7f7f7f7f
#define MOD 100000007
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0)
#define test puts("<------------------->")
#define maxn 100007
#define M 100007
#define N 327
using namespace std;
//freopen("din.txt","r",stdin);int c1[N],c2[N];
int pow2[320];void init(int n){int i,j,k;for (i = 1; i <= 300; ++i){pow2[i] = i*i;}for (i = 0; i <= n; ++i){c1[i] = 1;c2[i] = 0;}for (i = 2; i <= n; ++i){for (j = 0; j <= n; ++j){for (k = 0; k + j <= n; k += pow2[i]){c2[k + j] += c1[j];}}for (j = 0; j <= n; ++j){c1[j] = c2[j];c2[j] = 0;}}
}
int main(){int n;init(300);while (~scanf("%d",&n)){if (!n) break;printf("%d\n",c1[n]);}return 0;
}

 

hdu 1085 Holding Bin-Laden Captive!

http://acm.hdu.edu.cn/showproblem.php?pid=1085

题意:

给出三种硬币,价值分别为1,2,5并给出他们的数量num1,num2,num5问他们不能够组合出来的的最小价值;

思路:

前边我们介绍的都是要么是每种数量为1个或者无限个,而这里给出了确定的数量。而且询问的是不能组合出来额最小值。所以有点绕,但思路还是没有改变。

我们只要在进行乘法运算时动态的增加括号里的项数即可。最后从小到大枚举一下就好。。

View Code
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>#define CL(a,num) memset((a),(num),sizeof(a))
#define iabs(x)  ((x) > 0 ? (x) : -(x))
#define Min(a , b) ((a) < (b) ? (a) : (b))
#define Max(a , b) ((a) > (b) ? (a) : (b))#define ll __int64
#define inf 0x7f7f7f7f
#define MOD 100000007
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0)
#define test puts("<------------------->")
#define maxn 100007
#define M 100007
#define N 8007
using namespace std;
//freopen("din.txt","r",stdin);int c1[N],c2[N];int main(){int i,j,k;int num1,num2,num5;while (~scanf("%d%d%d",&num1,&num2,&num5)){if (!num1 && !num2 && !num5) break;int MAX = num1 + num2*2 + num5*5;//本身所能表示的最大数for (i = 0; i <= MAX; ++i){c1[i] = 0;c2[i] = 0;}for (i = 0; i <= num1; ++i) c1[i] = 1;//初始化第一个括号里的项//成第二个括号里的项for (j = 0; j <= num1; ++j){for (k = 0; k <= num2*2; k += 2){c2[k + j] += c1[j];}}for (j = 0; j <= num1 + num2*2; ++j){//动态的添加了c1[j] = c2[j];c2[j] = 0;}for (j = 0; j <= num1 + num2*2; ++j){for (k = 0; k <= num5*5; k += 5){c2[k + j] += c1[j];}}for (j = 0; j <= MAX; ++j){c1[j] = c2[j];c2[j] = 0;}for (i = 1; i <= MAX; ++i){if (!c1[i]) break;}printf("%d\n",i);}return 0;
}

 hdu Big Event in HDU

http://acm.hdu.edu.cn/showproblem.php?pid=1171

题意:

给出N中不同的设备,分别给出他们的价值以及数量,将这些设备分为两组,尽量使这两组的价值相等。输出各自的价值,若不相等大的在前边;

思路:

和上边一样。。。不多讲;

View Code
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>#define CL(a,num) memset((a),(num),sizeof(a))
#define iabs(x)  ((x) > 0 ? (x) : -(x))
#define Min(a , b) ((a) < (b) ? (a) : (b))
#define Max(a , b) ((a) > (b) ? (a) : (b))#define ll __int64
#define inf 0x7f7f7f7f
#define MOD 100000007
#define lc l,m,rt<<1
#define rc m + 1,r,rt<<1|1
#define pi acos(-1.0)
#define test puts("<------------------->")
#define maxn 100007
#define M 100007
#define N 250007
using namespace std;
//freopen("din.txt","r",stdin);int c1[N],c2[N];int num[55],val[55];int main(){// freopen("din.txt","r",stdin);int n,i,j,k;while (~scanf("%d",&n)){if (n < 0) break;int MAX = 0;for (i = 0; i < n; ++i){scanf("%d%d",&val[i],&num[i]);MAX += (val[i]*num[i]);}for (i = 0; i <= MAX; ++i){c1[i] = c2[i] = 0;}int len = val[0]*num[0];for (i = 0; i <= len; i += val[0]){c1[i] = 1;}for (i = 1; i < n; ++i){for (j = 0; j <= len; ++j){for (k = 0; k <= val[i]*num[i]; k += val[i]){c2[k + j] += c1[j];}}len += val[i]*num[i];for (j = 0; j <= len; ++j){c1[j] = c2[j];c2[j] = 0;}}int ave = MAX/2;for (i = ave; i >= 0; --i){if (c1[i]) break;}int A = i;int B = MAX - A;printf("%d %d\n",max(A,B),min(A,B));}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多态情况下,怎么用基类指针去访问基类的虚函数?

class Base { // 基类 public:virtual void f() {cout<<"Base"<<endl;} }; class Derived : public Base { // 派生类 public:virtual void f() { // 最好加上该virtual cout<<"Derived"<<endl;} };int main(){Base* p new De…

[Linux] 命令行工具

1. 基本工具1.1 特殊字符shell的特殊字符有&#xff1a;&、;、|、*、?、、"、、[、]、(、)、$、<、>、{、}、^、#、/、\、%、!、~、。要将这些具有特殊含义的字符当作普通字符使用&#xff0c;可对它们转义使用&#xff0c;在特殊字符前加反斜杠" \ "…

谈谈JAVA中的安全发布

谈谈JAVA中的安全发布 昨天看到一篇文章阐述技术类资料的"等级"&#xff0c;看完之后很有共鸣。再加上最近在工作中越发觉得线程安全性的重要性和难以捉摸&#xff0c;又掏出了《Java并发编程实战》研读一番&#xff0c;这本书应该是属于为“JAVA 多线程作注解”的一…

软件工程 - 设计模式学习之工厂方法模式Factory Method

在现实生活中我们可以看见,乐事在卖薯片,可比克也在卖.我敢肯定的说它们各自都有自己的工厂来生产薯片,而且生产出来的薯片味道还是不一样的.这就是我们这里所谓的工厂方法模式. 我们来看看这个模式的UML图: 这个模式中我们可以看到:产品和工厂2个基类,然后它们下面又有些子孙类…

树莓派3B+学习笔记:4、查看GPIO

GPIO&#xff08;General Purpose I/O Ports&#xff09;意思为通用输入/输出端口。可以在终端重直接查看GPIO的定义。查看方式1&#xff1a;gpio readall 查看方式2&#xff1a; pinout 可以看出&#xff0c;这条命令执行后提示要查看更多信息访问pinout.xyz 转载于:https://w…

Silverlight的自定义tooltip提示工具条

这种应用场景其实很多&#xff0c;比如游戏中装备/魔法的选择菜单&#xff0c;这里借用了"深蓝色右手"的一张图 再比如聊天室中的文本颜色设置 虽然sl的ToolTipService.ToolTip属性可以设置任何对象&#xff0c;比如下面这样 代码 1 <Rectangle Fill"Red&qu…

[Silverlight]使用PagedCollectionView配合复选框实现动态筛选的解决方案

在之前的文章中提到&#xff0c;PagedCollection提供了筛选&#xff08;Filter&#xff09;功能。 实际项目中我们往往有这样的需求 即通过复选框动态的筛选DataGird的相关项&#xff0c;比如上面截图所示例的筛选Gender列特定项。有的朋友可能已经想到了&#xff1a;直接操作O…

MyBatis 逆向工程(MyBatis 自动生成接口以及xml)的使用

刚学MyBatis逆向工程&#xff08;还以为要反汇编呢.....&#xff09; MyBatis逆向工程 个人理解就是链接数据库自动生成相关的增删改查相关的类 以及xml文件 &#xff08;其中有一些不足 应该就是多表链接的问题需要自己写吧&#xff09; MyBatis逆向工程 一般和主项目分开 比较…

IE6-IE9兼容性问题列表及解决办法_补充之五:在IE9下, disabled的文本框内容被选中后,其他控件无法获得焦点问题...

先看一段Htm代码&#xff0c;里面一个disabled的文本框&#xff0c;一个普通可写的文本框&#xff0c;还有一个按钮&#xff0c;非常简单&#xff0c;代码如下&#xff1a;<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o…

group by 的实现原理

转载&#xff1a;https://cloud.tencent.com/developer/article/1513067 写过 Sql 的同学应该都知道 group by 是用来对数据进行分组的&#xff0c;一般与聚合函数一起使用&#xff0c;对分组后的数据进行聚合。虽然大家都在用&#xff0c;但是有些同学还是不太清楚 group by …

怎么让sublime text3可以运行c/c++

轻巧便捷的sublime text 3代码编辑功能非常强大&#xff0c;并且很漂亮啊有木有&#xff01;&#xff01;&#xff01;&#xff01;以前我会在安装了CodeBlocks这样的编译器的基础上&#xff0c;再安装一个NotePad&#xff0c;作为编辑器。因为编辑器类似于记事本&#xff0c;只…

理解CSS3 transform中的Matrix(矩阵)

一、哥&#xff0c;我被你吓住了 打架的时候会被块头大的吓住&#xff0c;学习的时候会被奇怪名字吓住&#xff08;如“拉普拉斯不等式”&#xff09;。这与情感化设计本质一致&#xff1a;界面设计好会让人觉得这个软件好用&#xff01; 所以&#xff0c;当看到上面“Matrix(矩…

Rocksdb的优劣及应用场景分析

Rocksdb的优劣及应用场景分析 Rocksdb也是一样&#xff0c;也有它的优势劣势及特定的适用场景。今天我就从设计的角度来分析一下。 基础架构 上图就是Rocksdb的基础架构。Rocksdb中引入了ColumnFamily(列族, CF)的概念&#xff0c;所谓列族也就是一系列kv组成的数据集。所有…

Postgre体系结构图

原文链接&#xff1a;https://blog.csdn.net/q936889811/article/details/83030845 由于工作原因需要调研postgre部分的缓存模块&#xff1a;分给pg的内存不足时&#xff0c;将内存中的数据写出到外部file或者其他的介质中&#xff0c;防止内存不足时&#xff0c;系统运行缓慢…

业界资讯:adobe 技术开发中心 放出游戏单元

昨天晚上光顾了adobe 技术者开发中心&#xff0c;发现一个新的东西。看到大大标题显示出这个部分的内容. 可以看出adobe 未来一个动作&#xff0c;对游戏支持。flash 平台迅速进行推广&#xff0c;目前来讲flex 技术应用在社区开发和网页游戏比较多&#xff0c;这部分能够对企业…

Spring.NET教程(二十)——整合Quartz.NET(应用篇)

Quartz.NET是一个开源的作业调度框架&#xff0c;是OpenSymphony 的 Quartz API的.NET移植&#xff0c;它用C#写成&#xff0c;可用于WinForm和ASP.NET应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征&#xf…

vector深拷贝与浅拷贝使用总结

(1)、拷贝构造/赋值函数 --- 深拷贝 int w 100;int h 20;vector<int> dataA(w*h ,0Xff);vector<int> dataB dataA; // copy 构造int * ptr0 &dataA[0];int * ptr1 &dataB[0];printf("%u\n", ptr0);printf("%u\n", ptr1); 结果&…

ELF文件格式

ELF文件格式 ELF文件&#xff08;Executable Linkable Format&#xff09;是一种文件存储格式。Linux下的目标文件和可执行文件都按照该格式进行存储&#xff0c;有必要做个总结。 概要 本文主要记录总结32位的Intel x86平台下的ELF文件结构。ELF文件以Section的形式进行存储…

TCP协议的三次握手与四次挥手

tcp协议的三次握手和四次挥手 三次握手&#xff1a; 第一次握手&#xff1a; 客户端发起一个链接&#xff08;SYN&#xff09; 第二次握手&#xff1a; 服务端就会返回一条&#xff08;ACK&#xff09;确认信息&#xff0c;同时服务端也会向客户端发起一个链接请求&#xff08;…

STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法

最近做了一个板子&#xff0c;使用的是SWD方式进行下载程序&#xff0c;仅仅使用到SWDIO&#xff08;PA13&#xff09; 和SWCLK&#xff08;PA14&#xff09;两个管脚。我将PA15&#xff08;JTDI&#xff09;和PB3&#xff08;JTDO&#xff09;管脚用于他用&#xff08;用于点L…