> 데이터 베이스 > MySQL 튜토리얼 > codeforces 514d R2D2 and Droid Army (RMQ+二分)

codeforces 514d R2D2 and Droid Army (RMQ+二分)

WBOY
풀어 주다: 2016-06-07 15:00:54
원래의
1339명이 탐색했습니다.

题意: 有n*m的矩阵,然后你有k发子弹。现在你可以朝着任意列发射子弹,每一发子弹都会使该列上的数-1,最小减少到0。 现在问你连续最长的行数,在k发子弹内,使得这些行上的数全部为0. 思路: 看了别人代码,其实RMQ不是必要的,开m个双端队列也可以。因此

题意:

有n*m的矩阵,然后你有k发子弹。现在你可以朝着任意列发射子弹,每一发子弹都会使该列上的数值-1,最小减少到0。

现在问你连续最长的行数,在k发子弹内,使得这些行上的数值全部为0.


思路:

看了别人代码,其实RMQ不是必要的,开m个双端队列也可以。因此每次要问一段范围内的最大值都是按顺序下去的,队列可以解决。

二分长度len,枚举n行是否存在这样的i~i+len-1,所需要的子弹数


code:

#include <bits>
using namespace std;

typedef long long LL;
const int MAXN = 1e5+5;
const int MAXM = 5;

int a[MAXN][5];
int dp[5][MAXN][20];        //five RMQ
int res[MAXM], tres[MAXM];
int n, m, k;

void RMQ(int t) {
    for(int i = 0;i <br>
<br>



</bits>
로그인 후 복사
관련 라벨:
and
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿