当前位置: 代码迷 >> 综合 >> BUPT OJ186 Sasami's Power
  详细解决方案

BUPT OJ186 Sasami's Power

热度:21   发布时间:2024-01-12 05:22:28.0

坑了许久的热身赛#4G题, 当时貌似是精度有问题

题意是给定A序列, 求满足条件的B序列个数

B序列非严格单调增并且对于对所有i成立:B[i]+B[i+1]=A[i]

可求得B序列相邻两项之差组成的序列C

C随奇偶可分为单调增长项和减小项, 将B[0]初始化为0后依次得到增长项的最大值和减小项的最小值, 两者取整后之差即为序列个数.

注意序列个数不能为负


/*author: birdstorm*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <climits>
#include <algorithm>#define MAXN 100005
#define N 105
#define inf 1.0e20
#define eps 1.0e-10
#define MOD 1000000007#define For(i,m,n) for(int i=(m);i<(n);i++)
#define vecfor(iter,a) for(vector<int>::iterator iter=a.begin();iter!=a.end();iter++)
#define rep(i,m,n) for(int i=(m);i<=(n);i++)
#define LL long longusing namespace std;
  相关解决方案