博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
“玲珑杯”ACM比赛 Round #4 E -- array DP
阅读量:5215 次
发布时间:2019-06-14

本文共 1084 字,大约阅读时间需要 3 分钟。

DP[val]表示以val这个值结尾的等差数列有多少个

DP[val] += DP[val / 2];

数值很大,用map<int, int>DP即可。

#include 
#include
#include
#include
#include
#define IOS ios::sync_with_stdio(false)using namespace std;#define inf (0x3f3f3f3f)typedef long long int LL;#include
#include
#include
#include
#include
#include
#include
const int maxn = 1e5 + 20;set
ss;map
dp;const int MOD = 1e9 + 7;void work() { ss.clear(); dp.clear(); int n; cin >> n; for (int i = 1; i <= n; ++i) { int x; cin >> x; if (x == 1) { ss.insert(x); dp[1]++; } else { if (x & 1) continue; ss.insert(x); dp[x] += dp[x / 2]; dp[x] %= MOD; } } int ans = 0; for (set
:: iterator it = ss.begin(); it != ss.end(); ++it) { int t = *it; if (t == 1) { ans += dp[t]; ans %= MOD; } else { if (t & 1) continue; ans += dp[t]; ans %= MOD; } } cout << ans << endl;}int main() {#ifdef local freopen("data.txt","r",stdin);#endif IOS; int t; cin >> t; while (t--) work(); return 0;}

 

转载于:https://www.cnblogs.com/liuweimingcprogram/p/6033088.html

你可能感兴趣的文章
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
Python 从零学起(纯基础) 笔记(一)
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
Java 线程安全问题
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
P1-13:集成日志组件 logback 2彩色日志
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>
Maximum Product Subarray
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>
解决DataSnap支持的Tcp长连接数受限的两种方法
查看>>
Synchronous/Asynchronous:任务的同步异步,以及asynchronous callback异步回调
查看>>