cogs 2752. [济南集训 2017] 数列运算
2752. [济南集训 2017] 数列运算
★★☆ 输入文件:sequenceQBXT.in 输出文件:sequenceQBXT.out 简单对比
时间限制:1 s 内存限制:512 MB
【题目描述】
在纸上有一个长为n的数列,第i项值为ai。
现在小A想要在这些数之间添加加号或乘号。问对于不同的2n−1种方案,
所有答案的和是多少?
由于数据范围较大,所以输出对1000000007取模的结果。
【输入格式】
输入第一行一个整数n表示数列的长度。
之后一行n个整数,第n个整数表示数列的第i项ai。
【输出格式】
m行,第i行表示第i个询问的答案对1000000007取模的结果。
【样例输入】
3
1 2 4
【样例输出】
30
【数据范围与约定】
对于30%的数据,1≤n≤10,1≤ai≤105
对于另外30%的数据,1≤n≤1000,ai=1
对于90%的数据,1≤n≤1000,1≤ai≤105
对于100%的数据,1≤100000,1≤ai≤109
【来源】
清北学堂济南NOIP集训二试T2
思路:
一个数列,长为n
在里面加n-1个加号或乘号
问方案所有方案的数列和
有部分数据数列全为1
那么枚举有i个乘号,ans=Σ(C(n-1,2)*(n-i))
一、基本思路O(n^3)
dp[i]表示到第i个数的答案
枚举前一个加号在j后面
那么到j一共有2^(j-1)种方案,每种方案在j后面都是一个加号,加号后面全是乘号
令tot=a[j+1]*a[j+2]……*a[i]
dp[i]=Σ(dp[j]+2^(j-1)*tot)
#include<cstdio>
#include<cstring>
#define mod 1000000007
using namespace std;
int n,a[];
long long cf[];
long long dp[],pre[],inv[];
long long pow(long long a,long long b){
long long res=;
while(b){
if(b&)
res=res*a%mod;
a=a*a%mod;
b>>=;
}
return res;
}
int main(){
freopen("sequenceQBXT.in","r",stdin);
freopen("sequenceQBXT.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
cf[]=;
for(int i=;i<=n;i++) cf[i]=cf[i-]*%mod;
long long tot;
pre[]=;
for(int i=;i<=n;i++) pre[i]=pre[i-]*a[i]%mod;
for(int i=;i<=n;i++) inv[i]=pow(pre[i],mod-);
long long sum1=,sum2=;
for(int i=;i<=n;i++){
dp[i]=(sum1+sum2*pre[i]%mod)%mod;
sum1=(sum1+dp[i])%mod;
sum2=(sum2+cf[i-]%mod*inv[i]%mod)%mod;
}
printf("%I64d",dp[n]);
}
cogs 2752. [济南集训 2017] 数列运算的更多相关文章
- [济南集训 2017] 求gcd之和
题目大意: 求\(\sum_{i=1}^n\sum_{j=1}^mgcd(i,j)\) 解题报告: 有一个结论:一个数的所有因子的欧拉函数之和等于这个数本身 运用这个我们可以开始推: \(\sum_{ ...
- [LOJ 6029]「雅礼集训 2017 Day1」市场
[LOJ 6029] 「雅礼集训 2017 Day1」市场 题意 给定一个长度为 \(n\) 的数列(从 \(0\) 开始标号), 要求执行 \(q\) 次操作, 每次操作为如下四种操作之一: 1 l ...
- LOJ_6045_「雅礼集训 2017 Day8」价 _最小割
LOJ_6045_「雅礼集训 2017 Day8」价 _最小割 描述: 有$n$种减肥药,$n$种药材,每种减肥药有一些对应的药材和一个收益. 假设选择吃下$K$种减肥药,那么需要这$K$种减肥药包含 ...
- Loj #2331. 「清华集训 2017」某位歌姬的故事
Loj #2331. 「清华集训 2017」某位歌姬的故事 IA 是一名会唱歌的女孩子. IOI2018 就要来了,IA 决定给参赛选手们写一首歌,以表达美好的祝愿.这首歌一共有 \(n\) 个音符, ...
- Loj #2324. 「清华集训 2017」小 Y 和二叉树
Loj #2324. 「清华集训 2017」小 Y 和二叉树 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙上, ...
- Loj #2321. 「清华集训 2017」无限之环
Loj #2321. 「清华集训 2017」无限之环 曾经有一款流行的游戏,叫做 *Infinity Loop***,先来简单的介绍一下这个游戏: 游戏在一个 \(n \times m\) 的网格状棋 ...
- Loj 2320.「清华集训 2017」生成树计数
Loj 2320.「清华集训 2017」生成树计数 题目描述 在一个 \(s\) 个点的图中,存在 \(s-n\) 条边,使图中形成了 \(n\) 个连通块,第 \(i\) 个连通块中有 \(a_i\ ...
- 【UOJ#340】【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划)
[UOJ#340][清华集训2017]小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划) 题面 UOJ 洛谷 题解 考虑如何暴力\(dp\). 设\(f[i][a][b][c]\)表示当前到了第\(i\) ...
- 「雅礼集训 2017 Day7」事情的相似度
「雅礼集训 2017 Day7」事情的相似度 题目链接 我们先将字符串建后缀自动机.然后对于两个前缀\([1,i]\),\([1,j]\),他们的最长公共后缀长度就是他们在\(fail\)树上对应节点 ...
随机推荐
- substring类型题目的解题模板
https://discuss.leetcode.com/topic/30941/here-is-a-10-line-template-that-can-solve-most-substring-pr ...
- POJ 1811
使用Pollard_rho算法就可以过了 #include <iostream> #include <cstdio> #include <algorithm> #i ...
- 怎样在Java中运行Hive命令或HiveQL
这里所说的在Java中运行Hive命令或HiveQL并非指Hive Client通过JDBC的方式连接HiveServer(or HiveServer2)运行查询,而是简单的在部署了HiveServe ...
- SpringMVC 理论与有用技术(二)文件上传
文件上传相信大家都做过,差点儿全部的项目都有上传文件的功能,尤其是BS架构的项目中经常被列为常规功能来开发.不管是在开发.NET 项目还是java项目我们会用到非常多的框架,这个功能也被集成到了框架之 ...
- Android Activity组件的启动过程
0.总图 1.总图中的第一步,Laucher主线程向ActivityManagerService进程发出START_ACTIVITY_TRANSACTION 如图:第一步 ~/Android/fram ...
- PHP substr() 函数截取中文字符串乱码
用PHP substr() 函数截取中文字符串乱码,换PHPmb_substr() 函数即可
- ROS-Gazebo-turtlebot3仿真
前言:Gazebo是一款强大的3D仿真器,支持机器人开发所需的机器人.传感器和环境模型,并且通过搭载的物理引擎可以得到逼真的仿真结果.即便Gazebo是一款开源仿真器,却具有高水准的仿真性能,因此在机 ...
- java8 stream 流 例子
Trader raoul = new Trader("Raoul", "Cambridge"); Trader mario = new Trader(" ...
- C#中方向键与回车键切换控件焦点
环境:界面上有TextBox,ComboBox等控件. 不建议把左右方向键都用来切换焦点,否则你在TextBox里面改变光标所在字符位置就不方便了. 方法一:笨方法,需为每个控件单独注册事件处理 以T ...
- JAVA 静态内部类--转自http://bbs.csdn.net/topics/350021609
内部类其实并不是非要声明成static的..主要还是要看实际情况决定..静态和非静态有不同的作用.. 引用一篇文章给楼主参考下吧. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的( ...