第一眼就想到DP,然后想了N久就想不到可以不重算的DP  最后没办法了 先算出来 再去重。。

因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都不同 要么 有两个相同 要么有三个相同 对都不同情况我的DP结果会重复两次 对于有两个相同的会重复一次 统计出都相同的 两个相同的 最后减掉。。有点乱 不过A了

先预处理 时间差不多4S多 再O(1)询问

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define LL long long
#define mod 1000000007
int dp[][][],prim[],o[];
int p1[][],p2[][],p3[][];
int num;
void init()
{
int i,j;
o[] = ;
o[] = ;
for(i = ; i <= ; i ++)
{
if(!o[i])
{
for(j = i+i; j <= ; j += i)
{
o[j] = ;
}
}
}
num = ;
for(i = ; i <= ; i ++)
{
if(!o[i])
prim[num++] = i;
}
for(i = ; i < num ; i++)
{
dp[][][prim[i]] = ;
dp[][][prim[i]] = ;
dp[][][prim[i]] = ;
}
for(i = ; i < num ; i++)
{
for(j = prim[i] ; j <= ; j++)
{
int k = j-prim[i];
if(!o[k]&&k>=prim[i])
dp[][][j] = (dp[][][j]+dp[][][k])%mod;
if(j%prim[i]==)
{
int k = j/prim[i];
if(k>=prim[i])
{
dp[][][j] = (dp[][][j]+dp[][][k])%mod;
dp[][][j] = dp[][][j];
}
}
}
}
for(i = ; i < num ; i++)
{
for(j = prim[i] ; j <= ; j++)
{
if(j%prim[i]==)
dp[][][j] = (dp[][][j]+dp[][][j/prim[i]])%mod;
dp[][][j] = (dp[][][j-prim[i]]+dp[][][j])%mod;
dp[][][j] = (dp[][][j]+dp[][][j-prim[i]])%mod;
}
}
for(i = ; i < num ; i++)
{
LL s = (LL)prim[i]*(LL)prim[i]*(LL)prim[i];
LL ss = prim[i]*;
if(ss<=)
p2[][ss] = (p2[][ss]+)%mod;
if(s<=)
p1[][s] = (p1[][s]+)%mod;
for(j = ; j < num ; j++)
{
if(j==i)
continue;
LL s = (LL)prim[i]*(LL)prim[i]*(LL)prim[j];
if(s<=)
p1[][s] = (p1[][s]+)%mod;
else
break;
}
for(j = ; j < num ; j++)
{
if(j==i)
continue;
LL ss = (LL)prim[i]*+prim[j];
if(ss<=)
p2[][ss] = (p2[][ss]+)%mod;
else
break;
}
}
}
int main()
{
int x;
init();
while(scanf("%d",&x)!=EOF)
{
LL s = (dp[][][x]+dp[][][x]+dp[][][x]+dp[][][x])%mod;
s = (s+(dp[][][x]-(p1[][x]+p1[][x]*))/+p1[][x]+p1[][x])%mod;
s = (s+(dp[][][x]-(p2[][x]+p2[][x]*))/+p2[][x]+p2[][x])%mod;
if(s<)
s+=mod;
printf("%lld\n",s);
}
return ;
}

2013 ACM/ICPC Asia Regional Changsha Online - G(DP)的更多相关文章

  1. 2013 ACM/ICPC Asia Regional Changsha Online G Goldbach

    比赛的时候,被题目误导了,题目最后说结果可能很大,要取模,那时就想直接求会TLE的!!! 赛后才知道,坑啊………… 代码如下: #include<iostream> #include< ...

  2. 2013 ACM/ICPC Asia Regional Changsha Online - C Color Representation Conversion

    这个纯粹是一个细节题啊!!! 由于某个地方的浮点数比较写错了,WA了无数次啊…… 代码如下: #include<iostream> #include<cstdio> #incl ...

  3. 2013 ACM/ICPC Asia Regional Changsha Online–C (模拟)

    题目描述 略... 题解 注意控制精度即可....变量全部定义成double,结果round就行....妈蛋....被这题目恶心死了.... 代码: #include <iostream> ...

  4. 2013 ACM/ICPC Asia Regional Changsha Online – C题 Color Representation Conversion (坑爹模拟题)

    题意:给你三种颜色表示模式,RGB,HSV和HSL,实现任意模式之间两两转化. 1.最好别看题目中给的转化公式描述,我觉得叙述的一点也不清楚,看维基百科,把维基百科上的公式一句一句翻译过来就好 2.在 ...

  5. 2013 ACM/ICPC Asia Regional Changsha Online - E

    第一个被板刷的题 取余 依次算在周几 #include <iostream> #include<cstdio> #include<cstring> #include ...

  6. 2013 ACM/ICPC Asia Regional Changsha Online J Candies

    AC了,但是不知道为什么,但是恶心的不得了~最近写代码,思路都非常清晰,但是代码各种bug~T.T~说说思路吧:二分~330ms~ 小队友fribbi的思路是离线250msAC~ 预处理solve函数 ...

  7. 2013 ACM/ICPC Asia Regional Changsha Online - J

    原题戳这里. 题意: 有一未知列数a1,a2,a3.....an, 已知s[i]=a[i-1]+a[i]+a[i]  (1<i<n) s[1]=a[1]+a[2]; s[n]=a[n-1] ...

  8. hduoj 4706 Children&#39;s Day 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4706 Children's Day Time Limit: 2000/1000 MS (Java/Others) ...

  9. hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...

随机推荐

  1. Asp.net Response.Redirect with post data

    string url = String.Format("{0}://{1}/{2}", Request.Url.Scheme, Request.Url.Authority, &qu ...

  2. PHP实现获得一段时间内所在的所有周的时间

    function getWeek($startdate,$enddate) { //参数不能为空 if(!empty($startdate) && !empty($enddate)){ ...

  3. dapper.rainbow

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  4. 几种解析xml方式的比较

    1: DOM DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加 ...

  5. Asp.net之LINQ入门视频教程

    当前位置: 主页 > 编程开发 > Asp.net视频教程 > Asp.net之LINQ入门视频教程 > http://www.xin1234.com/Program/Aspn ...

  6. net use命令详细解释

    1)建立空连接: net use \\IP\ipc$ "" /user:"" (一定要注意:这一行命令中包含了3个空格) 2)建立非空连接: net use \ ...

  7. python学习笔记21(正则表达式)

    正则表达式模式: 模式 描述 ^ 匹配的开始的 $ 匹配行尾 . 匹配除换行符的任何单个字符.使用-m选项允许其匹配换行符也是如此. [...] 匹配括号内任何单个字符 [^...] 匹配非单个字符集 ...

  8. bnuoj 4357 传送阵

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4357 [题意]:在1000个数中选择3个之和是m的倍数,可能有多种选择方案,请输出标号排序最小的一组 ...

  9. python 知识 rstrip,strip,lstrip

    rstrip,strip,lstrip 作用:去除字符串中的空格或指定字符 一.默认用法:去除空格str.strip()  : 去除字符串两边的空格str.lstrip() : 去除字符串左边的空格s ...

  10. 使用Yeoman搭建 AngularJS 应用 (12) —— 让我们搭建一个网页应用

    原文地址:http://yeoman.io/codelab/local-storage.html 安装Bower程序包 我们使用另一个Angular模块,"angular-local-sto ...