UESTC OJ1217(树状数组)
2015-10-26 21:27
337 查看
南阳CCPC的C题。题意是找n个数字的严格上升的长度为m的子串,答案模一个数。
用树状数组优化到n*n*lgn就行了,需要注意的是如果相同的数字,我们需要使前面的不影响后面的,也就是在处理相同数字的时候需要优先处理后面的数字,那么我们在排序时当数值一样是需要把位置大的放到前面。
用树状数组优化到n*n*lgn就行了,需要注意的是如果相同的数字,我们需要使前面的不影响后面的,也就是在处理相同数字的时候需要优先处理后面的数字,那么我们在排序时当数值一样是需要把位置大的放到前面。
#include <bits/stdc++.h> using namespace std; #define maxn 1111 #define mod 1000000007 #define INF 1e20 long long c[maxn][maxn], dp[maxn][maxn]; int n, m; struct node { int pos; long long num; bool operator < (const node &a) const { return num < a.num || (num == a.num && pos > a.pos); } }a[maxn]; int lowbit (int x) { return x & (-x); } long long sum (int pos, int num) { long long ans = 0; for (int i = pos; i > 0; i -= lowbit (i)) { ans += c[i][num]; ans %= mod; } return ans; } void add (int pos, int k, long long num) { for (int i = pos; i <= n; i += lowbit (i)) { c[i][k] += num; c[i][k] %= mod; } } int main () { //freopen ("in", "r", stdin); int t, kase = 0; cin >> t; while (t--) { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i].num; a[i].num; a[i].pos = i; } sort (a+1, a+1+n); memset (c, 0, sizeof c); add (1, 0, 1); memset (dp, 0, sizeof dp); for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { dp[i][j] = sum (a[i].pos, j-1); dp[i][j] %= mod; add (a[i].pos+1, j, dp[i][j]); if (!dp[i][j]) break; } } long long ans = 0; for (int i = m; i <= n; i++) { ans += dp[i][m]; ans %= mod; } printf ("Case #%d: %lld\n", ++kase, ans); } return 0; }
相关文章推荐
- light oj 1100 - Again Array Queries
- UITableView 编辑
- UIImage剪切图片为自定义大小
- hdu 4604 Deque(LIS)
- UIWindow UILable 属性 方法
- POJ 2533 Longest Ordered Subsequence
- iOS 中UIButton的 settitle 和 titlelabel的使用误区
- Spark中DenseMatrix中values()和toArray方法的区别
- Pku1947 Rebuilding Roads
- UESTC OJ1218(DP)
- Leetcode -- N-Queens
- 5-3 Pop Sequence (25分)
- Storyboard doesn't contain a view controller with identifier 'UIViewController'
- Again Array Queries---Lightoj1100(循环暴力)
- Codeforces Round #327 (Div. 2) A. Wizards' Duel
- 浅谈Handler,Loop,MessageQueue,Thread的小秘密
- 使用pt-query-digest分析mysql慢查询日志(mysql slow query log )
- quick传递参数给shader
- Codeforces Gym 100589A Queries on the Tree(树状数组+分块)
- 使用pt-query-digest分析mysql slow query log