zoukankan      html  css  js  c++  java
  • “玲珑杯”ACM比赛 Round #4 E -- array DP

    http://www.ifrog.cc/acm/problem/1050?contest=1006&no=4

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

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

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

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #define IOS ios::sync_with_stdio(false)
    using namespace std;
    #define inf (0x3f3f3f3f)
    typedef long long int LL;
    
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <queue>
    #include <string>
    const int maxn = 1e5 + 20;
    set<int>ss;
    map<int, int>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<int> :: 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;
    }
  • 相关阅读:
    SpringBoot整合RabbitMQ
    NIO
    eclipse配置maven
    IDEA常用快捷键
    IDEA如何快速查看类中的属性和方法?
    Java之IO流
    JS判断对象是否包含某个属性
    Jquery获取链接请求的参数
    JS中indexOf的用法
    JS驼峰与下划线互转
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/6033088.html
Copyright © 2011-2022 走看看