【玲珑杯 1050】【DP】array
来源:互联网 发布:淘宝怎么找卖家电话 编辑:程序博客网 时间:2024/04/26 00:46
传送门:http://www.ifrog.cc/acm/problem/1050
思路:注意到10^9范围内的2的幂次只有30个,所以我们定义dp[30]这样一个dp数组,dp[i]表示以2^i为结尾的满足条件的子序列的个数。枚举每一个数来转移,复杂度O(n)
代码:
#include <iostream>#include <stdio.h> #include <algorithm>#include <string.h>using namespace std;typedef long long ll;const ll mod = 1e9 + 7;int dp[35];int main(){ int T, n; ll a, ans, sz; scanf("%d",&T); while(T--){ memset(dp, 0, sizeof(dp)); scanf("%d", &n); for(int i = 1 ; i <= n ; i++){ scanf("%lld", &a); if(a == 1) dp[0]++; else{ sz = 0; while(a % 2 == 0){ a >>= 1; sz++; } if(a == 1 && dp[sz - 1] != 0) dp[sz] = (dp[sz] + dp[sz - 1]) % mod; } } ans = 0; for(int i = 0 ; i < 32 ; i++) ans = (ans + dp[i]) % mod; printf("%lld\n",ans % mod); } return 0;}描述:
1050 - array
Time Limit:3s Memory Limit:64MByte
Submissions:456Solved:135
DESCRIPTION
2 array is an array, which looks like:
1,2,4,8,16,32,64......1,2,4,8,16,32,64......
a1=1 | ai+1ai=2a1=1 | ai+1ai=2
Give you a number array, and your mission is to get the number of subsequences ,which is 2 array, of it.
Note: 2 array is a finite array.
INPUT
There are multiple test cases.The first line is a number T (T ≤10T ≤10), which means the number of cases.For each case, two integer n(1≤n≤105)n(1≤n≤105).The next line contains nn numbers ai(1≤ai≤109)ai(1≤ai≤109)
OUTPUT
one line - the number of subsequence which is 2 array.(the answer will% 109+7% 109+7)
SAMPLE INPUT
241 2 1 241 2 4 4
SAMPLE OUTPUT
54
SOLUTION
“玲珑杯”ACM比赛 Round #4
0 0
- 【玲珑杯 1050】【DP】array
- 【玲珑学院 1050 - array 】+ dp
- 玲珑学院 1050 - array--dp
- 玲珑oj 1050 Array 简单dp
- “玲珑杯”ACM比赛 Round #4 E -- array(dp)
- 玲珑杯”ACM比赛 Round #4 E -- array【DP】
- 玲珑 1050 array
- 玲珑杯 1146(dp)
- 【玲珑杯 1053】【概率DP】Gemstone digger
- 玲珑杯 Black and White 【dp】
- “玲珑杯”ACM比赛 Round #12【dp】
- 玲珑杯 1066(“玲珑杯”ACM比赛 Round #6)(区间DP+四边形不等式优化)
- “玲珑杯”ACM 热身赛 # 2.5 B -- B-E (dp)
- 玲珑杯 1009 Spoon Devil's Bucket 矩阵优化DP
- 玲珑杯 1074 - Pick Up Coins(区间DP)
- 玲珑杯 1100 萌萌哒的第五题 (KMP+DP)
- 玲珑杯1146-图论你先敲完模板【dp方程】
- 玲珑杯 1146 图论你先敲完模板(DP)
- 20. Valid Parentheses
- 介绍一下google推荐的Android图片加载框架——Glide
- 三层
- 使用idea14 创建web项目
- git杂记:如何避免每次输入密码
- 【玲珑杯 1050】【DP】array
- 【Java】Java中类的构造方法特性
- HDU 5154 Harry and Magical Computer (BFS)
- 路径问题
- Python3 日期和时间
- apk的组成以及瘦身
- java打印任意行菱形
- linux setuptools安装
- 用php搭建个人博客(0)