RMQ -- ST算法 Codeforces Round #291 (Div. 2) D. R2D2 and Droid Army
来源:互联网 发布:淘宝售后过期怎么投诉 编辑:程序博客网 时间:2024/05/05 03:53
RMQ-ST算法: http://kmplayer.iteye.com/blog/575725
每一列用ST记录区间最大值,用两个指针扫描。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<iostream>#include<algorithm>#include<vector>#include<utility>#include<queue>#include<set>#include<map>#include<math.h>#include<string>using namespace std;#define inf 0x3f3f3f3f#pragma warning(disable:4996)#pragma comment(linker, "/STACK:102400000,102400000")#define ll long longconst double eps = 1e-9;int p[100010][5];int dp[100010][18][5];int main(){int i, j, k, n, m, K;cin >> n >> m >> K;for (i = 0; i < n;i++)for (j = 0; j < m; j++){scanf("%d",&p[i][j]);}for (k = 0; k < m; k++){for (i = 0; i < n; i++){dp[i][0][k] = p[i][k];}}for (k = 0; k < m; k++){for (j = 1; (1 << j) <= n; j++){for (i = 0; i + (1 << j)-1 < n; i++)dp[i][j][k] = max(dp[i][j-1][k],dp[i+(1<<(j-1))][j-1][k]);}}int l = 0, r = 0;int mx = 0, tl=-1, tr=-1;while (1){int t = log((r - l + 1)*1.0) / log(2.0);int sum = 0;for (k = 0; k < m; k++){sum += max(dp[l][t][k],dp[r-(1<<t)+1][t][k]);}if (sum <= K){if (r - l + 1>mx){mx = r - l + 1;tl = l, tr = r;}if (r != n - 1) r++;else if (l != n - 1) l++;else break;}else{if (l != n - 1) l++;}if (r < l) r++;if (r == n - 1 && l == n - 1) break;}if (tl == -1){for (i = 0; i < m;i++)if (i != m - 1) printf("0 ");else printf("0\n");}else{int t = log((tr - tl + 1)*1.0) / log(2.0);for (k = 0; k < m; k++){int h = max(dp[tl][t][k],dp[tr-(1<<t)+1][t][k]);if (k == m - 1) printf("%d\n",h);else printf("%d ",h);}}//system("pause");}
0 0
- RMQ -- ST算法 Codeforces Round #291 (Div. 2) D. R2D2 and Droid Army
- Codeforces Round #291 (Div. 2) D. R2D2 and Droid Army RMQ问题 ST算法
- Codeforces Round #291 (Div. 2)---D. R2D2 and Droid Army
- Codeforces Round #291 (Div. 2)D. R2D2 and Droid Army
- Codeforces Round #291 (Div. 2) D - R2D2 and Droid Army
- Codeforces Round #291 (Div. 2)D.R2D2 and Droid Army——RMQ+二分
- Codeforces Round #291 (Div. 2) D. R2D2 and Droid Army RMQ/单调队列/尺取法
- Codeforces Round #291 (Div. 2)-D. R2D2 and Droid Army(RMQ)
- Codeforces #291 (Div. 2) D. R2D2 and Droid Army(RMQ+二分)
- D. R2D2 and Droid Army 线段树+二分 Codeforces Round #291 (Div. 2)
- Codeforces Round #291 (Div. 2)D. R2D2 and Droid Army (线段树+二分)
- 线段树+二分(Codeforces Round #291 (Div. 2)D. R2D2 and Droid Army)
- Codeforces Round #291 (Div. 2) D R2D2 and Droid Army(线段树+二分)
- codeforces 514d R2D2 and Droid Army (RMQ+二分)
- Codeforces 514D R2D2 and Droid Army RMQ问题
- CodeForces 514D R2D2 and Droid Army RMQ+二分
- Codeforces 514 D R2D2 and Droid Army(RMQ+二分)
- Codeforces 514D R2D2 and Droid Army【二分+RMQ】
- Notepad++ 插件地址
- iPhone不能滑动解锁了怎么办?iPhone滑动解锁失灵解决方法
- Android源码之ListView的适配器模式
- 现实才是最让人感觉无趣的
- ORA-20000: ORU-10027: 执行存储过程的错误
- RMQ -- ST算法 Codeforces Round #291 (Div. 2) D. R2D2 and Droid Army
- 将PDF快速转换为PPT格式
- 欢迎使用CSDN-markdown编辑器
- 【Linux是什么】 Linux的特色
- 简单的存储过程
- 利用Zbar来实现iOS中扫描二维码
- 在MyEclipse中构建SQL查询语句
- Api-Android分享功能
- android仿QQ下拉回弹效果