计算多项式Poj(1996)
题目链接:http://poj.org/problem?id=1996
思路:
刚开始打了个二维表,调了一个小时,爆内存了。
#include <stdio.h>
#include <string.h> int a[];
int y[];
int ans[];
int dp[][]; int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(a,,sizeof(a));
memset(y,,sizeof(y));
memset(ans,,sizeof(ans));
memset(dp,,sizeof(dp)); int m,n;
scanf("%d%d",&m,&n);
for(int i=; i<=m; i++)
{
scanf("%d",&a[i]);
if(i==)
ans[i] = a[i];
}
for(int i=; i<=n; i++)
{
scanf("%d",&y[i]);
dp[][i] = y[i];
} int pos=n;
for(int i=; i<=n; i++)
printf("%d ",dp[][i]);
puts("");
for(int k=; k<=m; k++)
{
for(int i=; i<=n; i++)
{
for(int j=; j<=pos; j++)
{
dp[k][i+j]+=dp[k-][j]*y[i];
//printf("%d ",dp[k][i+j]);
}
}
pos+=n;
//for(int i=0; i<=pos; i++)
//printf("%d ",dp[k][i]);
//puts("");
} pos=n;
for(int i=; i<=m; i++)
{
for(int j=; j<=pos; j++)
{
dp[i][j] = dp[i][j] * a[i];
//printf("%d ",dp[i][j]);
}
//puts("");
pos+=n;
} for(int i=; i<=n*m; i++)
{
for(int j=; j<=m; j++)
ans[i] +=dp[j][i];
}
for(int i=; i<=n*m-; i++)
printf("%d ",ans[i]);
printf("%d",ans[n*m]);
puts("");
}
return ;
}
然后压缩了一下。
#include <stdio.h>
#include <string.h> int a[];
int b[];
int dp[];
int ans[];
int tmp[]; int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(a,,sizeof(a));
memset(b,,sizeof(b));
memset(dp,,sizeof(dp));
memset(ans,,sizeof(ans)); int m,n;
scanf("%d%d",&m,&n); for(int i=;i<=m;i++)
scanf("%d",&a[i]);
ans[] = a[]; for(int i=;i<=n;i++)
{
scanf("%d",&b[i]);
dp[i] = b[i];
}
if(m!=)
{
for(int i=;i<=n;i++)
ans[i] +=a[]*dp[i];
}
int pos = n;
for(int k=;k<=m;k++)
{
memset(tmp,,sizeof(tmp));
for(int i=;i<=n;i++)
{
for(int j=;j<=pos;j++)
tmp[i+j] +=b[i]*dp[j];
} pos+=n; for(int i=;i<=pos;i++)
dp[i] = tmp[i]; for(int i=;i<=pos;i++)
ans[i]+=a[k]*dp[i];
}
for(int i=;i<=pos-;i++)
printf("%d ",ans[i]);
printf("%d\n",ans[pos]); }
return ;
}
现在还不知道WA在哪里。 打死POJ!!!
后来借鉴了帆哥的代码,一模一样的思路,就AC了。
要是哪个大神看出错了,记得@我啊!
#include<iostream>
using namespace std;
#define INF 10005
int x[INF],y[INF],z[INF],r[INF],p[INF];
int t;
int n,m;
int size;
void calc(int k)
{
int i,j,h;
if(k==)
{
z[k]+=x[k];
size=;
}
else if(k==)
{
for(i=;i<=m;i++)
{
z[i]+=(x[k]*y[i]);
}
size=m;
}
else
{ memset(p,,sizeof(p));
for(j=;j<=m;j++)
{
for(h=;h<=size;h++)
{
p[j+h]+=(y[j]*r[h]);
}
}
size+=m;
for(j=;j<=size;j++)
{
r[j]=p[j];
} for(i=;i<=size;i++)
{
z[i]+=(r[i]*x[k]);
} } }
int main()
{
int i,j;
scanf("%d",&t);
while(t--)
{
memset(x,,sizeof(x));
memset(y,,sizeof(y));
memset(z,,sizeof(z));
memset(r,,sizeof(r));
memset(p,,sizeof(p));
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)
{
scanf("%d",&x[i]);
}
for(i=;i<=m;i++)
{
scanf("%d",&y[i]);
r[i]=y[i];
} for(i=;i<=n;i++)
{
calc(i);
} for(i=;i<size;i++)
{
printf("%d ",z[i]);
}
printf("%d",z[size]);
printf("\n");
} }
计算多项式Poj(1996)的更多相关文章
- AC日记——计算多项式的导函数 openjudge 1.5 38
38:计算多项式的导函数 总时间限制: 1000ms 内存限制: 65536kB 描述 计算多项式的导函数是一件非常容易的任务.给定一个函数f(x),我们用f'(x)来表示其导函数.我们用x^n来 ...
- C 语言 clock() 函数,例:计算多项式值
C 语言 clock() 函数,例:计算多项式值 /** * clock(): 捕捉从程序开始运行到 clock() 被调用时所耗费的时间. * 这个时间单位是 clock tick, 即" ...
- 用clock()函数计算多项式的运行时间
百度百科中定义clock():clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t.在MSDN中,查得对clock函数定义如下: clock_t clock(void) ; 简 ...
- OpenJudge 1.5.36:计算多项式的值
描述 假定多项式的形式为xn+xn-1+…+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值. 输入输入仅一行,包括x和n,用单个空格隔开.x在float范围内,n <= ...
- 使用Horner法则计算多项式的值
计算Pn(x) = an * x^n + an-1 * x^(n-1) + ... + a1 * x + a0 直接计算,需要做的乘法次数 1+2+3+……+n = n(1+n)/2 = O(n2) ...
- 多项式的各类计算(多项式的逆/开根/对数/exp/带余除法/多点求值)
预备知识:FFT/NTT 多项式的逆 给定一个多项式 F(x)F(x)F(x),请求出一个多项式 G(x)G(x)G(x),满足 F(x)∗G(x)≡1(mod xn)F(x)*G(x) \equiv ...
- C005:计算多项式的值
程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { float x; do{ printf("E ...
- 计算给定多项式在给定点X处的值
//计算多项式求值 //计算多项式求值#include<iostream>#include<ctime>#include<cmath>using namespace ...
- LA 4119 (差分数列 多项式) Always an integer
题意: 给出一个形如(P)/D的多项式,其中P是n的整系数多项式,D为整数. 问是否对于所有的正整数n,该多项式的值都是整数. 分析: 可以用数学归纳法证明,若P(n)是k次多项式,则P(n+1) - ...
随机推荐
- 基本数据类型 list and tuple 04
列表和元组 一,列表 1.列表 由[]括起来 可以存放各种数据类型: 存放量比较大 2.列表的索引和切片 列表也有索引 lst [i] i 即列表中各元素的位置 2.1列表的切片 lst[star ...
- jinkens 'python' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
jinkens执行构建时报错 解决方法,就是指定路径.python的安装目录和被执行文件的的目录
- 非局部均值(Nonlocal-Mean)
转载自网站:http://www.cnblogs.com/luo-peng/p/4785922.html 非局部均值去噪(NL-means) 非局部均值(NL-means)是近年来提出的一项新型的 ...
- 17-----BBS论坛
BBS论坛(十七) 17.首页导航条实现和代码抽离 (1)temlates/common/_head.html <meta name="csrf-token" content ...
- 4-----Scrapy框架中选择器的用法
Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...
- Angular JS 1.X 接口拿不到 http post 请求的数据
app上加上配置相关的代码即可 var myApp = angular.module('myApp',[]); myApp.config(function($httpProvider){ $httpP ...
- File "<ipython-input-20-ac8d4b51998e>"
环境:Python 3.6 word = "Jesse" ") File "<ipython-input-20-ac8d4b51998e>" ...
- 导入AppiumLibrary报错: ImportError: cannot import name 'InvalidArgumentException
导入AppiumLibrary报错: ImportError: cannot import name 'InvalidArgumentException报错原因 selenium.common.exc ...
- Mybatis学习笔记17 - sql标签和include标签
示例代码: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; import org.apache.ibatis.anno ...
- Selenium+Python+Webdriver:保存截图到指定文件夹
保存图片到指定文件夹: from selenium import webdriverfrom pathlib import Pathfrom time import sleepdriver = web ...