码迷,mamicode.com
首页 > 其他好文 > 详细

【省选水题集Day1】一起来AK水题吧! 题解(更新到A)

时间:2017-06-03 18:13:49      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:write   array   lan   题目   class   false   简单   char   ref   

题目:http://www.cnblogs.com/ljc20020730/p/6937936.html

 水题A:[AHOI2001]质数和分解

安徽省选OI原题!简单Dp。

一看就是完全背包求方案数!

完全背包都会打吧,原来是最优值,现在是累计值。

状态转移方程:f[j]=f[j]+f[j-w[i]],w[i]是待选质数。

理解:一个数要拆成若干素数和,等同于拆成所有该数减去一个素数差的方案数之和(而不是最优方案数)

但这么做需要初始化为0,同时用滚动数组可以减小时间和空间复杂度。

代码如下:(懒得打筛法求素数了)

const maxn=200;
var w,f:array[0..1000000]of longint;
    u:array[1..1000000]of boolean;
    i,j,x,t:longint;
begin
w[1]:=2;
fillchar(u,sizeof(u),true);
inc(t);
 for i:=3 to maxn do begin
  for j:=2 to (i div 2)do
   if i mod j=0 then begin u[i]:=false; break;end;
  if u[i] then begin inc(t); w[t]:=i;end;
 end;
f[0]:=1;
for i:=1 to t do
for j:=w[i] to maxn do
 f[j]:=f[j]+f[j-w[i]];
 while not eof do begin
  readln(x);
  writeln(f[x]);
 end;
end.

2017-6-3 更新

【省选水题集Day1】一起来AK水题吧! 题解(更新到A)

标签:write   array   lan   题目   class   false   简单   char   ref   

原文地址:http://www.cnblogs.com/ljc20020730/p/6937954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!