第一眼就想到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. GDI+ 绘图闪烁解决方法

    闲着没事,准备做一个类似于TeeChart的自定义控件,结果第一步的绘图就把我给难倒了,虽然早就知道GDI绘图的闪烁问题很坑,但是却没有想到如此之坑,折腾了两天,才找到解决方法. 首先在窗体加载的时候 ...

  2. Unity学习笔记(1):认识Unity

    Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能 ...

  3. YII千万级PV架构经验分享--俯瞰篇--架构即产品

    hello,大家好,我是方少,今天想问大家一个问题,如果我们自己就是产品,那么我们怎样才能说服别人,我们是最优秀的呢?高学历,不错,别人成功过了.会php,java,c#,python不行再学c++, ...

  4. 修复ecshop商品重量BUG小数位增至五位

    如果ECSHOP商品重量录入为1.499千克,数据库存储值为1.499:如果录入1.499克,存储值为1.显然数据保存有误差,虽然在快递运输中,此误差极小可以忽略不计,但从严谨的角度看,这是不合理的. ...

  5. CorelDRAW 插件的安装和使用

    CorelDRAW 是一款在中国非常受欢迎的图形软件,开放的界面和编程技术,能够对它进行二次开发制作插件,插件大抵有三种gms.cpg.exe格式,下面介绍一下这三种插件的安装和使用方法. 一.gms ...

  6. ORA-27102: out of memory并伴随OSD-00031的处理

    刚才客户电话过来说有个数据库起不来了,开发商搞了好久搞不掂,得要让我们去帮忙看看.过去到现场,发现数据库无法打开,连nomount模式都不可以.报错的内容大致如下: ORA-27102: out of ...

  7. c#教程之事件处理函数的参数

    事件处理函数一般有两个参数,第一个参数(object sender)为产生该事件的对象的属性Name的值,例如上例单击标题为红色的按钮,第一个参数sender的值为button1.如上例标题为红色的按 ...

  8. 【BZOJ 3171】 [Tjoi2013]循环格

    Description 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元素有一个坐标(行,列),其中左上角元素坐标为(0,0).给定一个起始位置(r,c) ,你可以沿着箭头防线在格 ...

  9. PAT-乙级-1037. 在霍格沃茨找零钱(20)

    1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...

  10. 安装ADT Cannot complete the install because one or more required items could not be found.

    点击进行安装,将会弹出 错误提示是: Cannot complete the install because one or more required items could not be found ...