【题目链接】:http://codeforces.com/problemset/problem/314/C

【题意】



让你从n个元素的数组中选出所有的不同的非递减子数列;

然后计算比这个子数列小的和它的长度一样长的数列的个数;

“小”的定义在题目里有说;

【题解】



设dp[i]表示以i作为非递减子数列的最后一个数的比它小的数列的个数;

则有递推式

dp[i] = (dp[1]+dp[2]+…+dp[i])*i+i;

写个树状数组,来快速求和就好;

要写出原数组,维护原数组;

不然求dp[i]比较麻烦;

最后输出∑dpi就好



【Number Of WA】



1(数组开小了)



【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0),cin.tie(0) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1e6;
const int N1 = 1e5;
const int MOD = 1e9+7; struct BIT{
LL a[N+10];
int lowbit(int x){
return x&(-x);
} void add(int x,LL y){
while (x<=N){
a[x] = (a[x]+y)%MOD;
x+=lowbit(x);
}
} LL sum(int x){
LL temp = 0;
while (x>0){
temp = (temp+a[x])%MOD;
x-=lowbit(x);
}
return temp;
}
}c; int n;
LL dp[N+10]; int main(){
//Open();
Close();
cin >> n;
rep1(i,1,n){
int x;
cin >> x;
LL temp = (c.sum(x)*x + x)%MOD;
c.add(x,(temp-dp[x]+MOD)%MOD);
dp[x] = temp;
}
cout << c.sum(N) << endl;
return 0;
}

最新文章

  1. C# 通过反射获取扩展方法
  2. 用css3实现各种图标效果(2)
  3. DevExpress所有的窗体,使用同一款皮肤
  4. SDUT2190救基友记1
  5. 利用icepdf将pdf文件转为图片
  6. 关于jQuery中.attr()和.prop()
  7. Minfilter过滤框架
  8. javaWeb安全漏洞修复总结
  9. C++第三课:类的使用(一)[个人见解]
  10. OracleSql语句学习(四)
  11. Spring源码学习笔记1
  12. retry重试常见场景及实现
  13. UVA-10375 唯一分解定理
  14. GB/T19001—2008质量管理体系要求、标准、贯标(贯彻标准)
  15. C# Upload
  16. 这样使用 GPU 渲染 CSS 动画(转)
  17. 读取配置文件的C语言接口实现
  18. CentOS用户和用户组管理
  19. HTML的基本知识点
  20. ID、句柄、指针、对象互相转换

热门文章

  1. 使用命令:ssh-add 时,出现 “Could not open a connection to your authentication agent.”
  2. event 下鼠标坐标的获取
  3. webpack不打包指定的js文件
  4. [luogu] P4551 最长异或路径(贪心)
  5. W10如何开启LinuxBash及安装Ubuntu
  6. js常用事件及事件对象
  7. hdu 4628 Pieces(状态压缩+记忆化搜索)
  8. hdu-3401-Trade-单调队列优化的DP
  9. node08---EJS模版
  10. 如何使用scss/sass