잔디 깎기-단조로운 대기열 최적화 DP 기초
그러니까 복습이지?
제목은 1년 전 마을에서 최고의 잔디밭을 이긴 후 팜존이 게으르게 변해 잔디를 깎은 적이 없다는 것이다.이제 새로운 최고의 잔디밭 경기가 시작됐고, 팜존은 다시 우승을 노린다.
그러나 팜존의 잔디밭은 매우 지저분하기 때문에 팜존은 그의 젖소만 이 일을 완성할 수 있다.팜존에는 N(1<=N <=100000)만 줄지어 늘어선 젖소가 있는데, 번호는 1...N이다.젖소 i의 효율은 Ei(0 <= E_i <= 1,000,000,000).
가까운 젖소들은 익숙하기 때문에 팜존이 K마리를 넘는 연속 젖소를 배치한다면 이 젖소들은 파업해서 파티를 열 것이다.따라서 현재 팜존은 FJ가 얻을 수 있는 최대 효율을 계산하는 데 도움을 필요로 하고, 이 방안에는 K마리를 넘는 젖소가 연속적으로 없다.
입력 출력 형식: 첫 줄: 공백으로 구분된 두 정수 N 및 K
두 번째 줄에서 N+1 줄: i+1 줄에는 정수 Ei
출력 형식: 첫 번째 줄: Farm John이 얻을 수 있는 최대 효율 값을 나타내는 값.
입력 출력 예제 입력 예제 #1:5 2 1 2 3 4 5 출력 예제 #1:12
s u m i sum으로{i}sumi는 접두사와 를 나타내므로 상태 이동 방정식은 다음과 같습니다. fi, 1 = m a x(s u m i -3. s u m j + f j, 0) f{i,1}=max(sum_{i}-sum{j}+f_{j,0}) fi,1=max(sumi−sumj+fj,0) f i , 0 = m a x ( f i − 1 , 0 , f i − 1 , 1 ) f_{i,0}=max(f_{i-1,0},f_{i-1,1}) fi,0=max(fi−1,0,fi−1,1)
하지만 직접 폭력으로 jjj를 매거하면 우리는 시간을 초과할 것이다.첫 번째 형식 관찰: fi, 1 = m a x(s u m i -3. s u m j + f j, 0) f{i,1}=max(sum {i}-sum{j}+f {j,0})fi,1=max(sumi-4-sumj+fj,0)의 이동에 대해 우리는 가장 큰 - sumj+fj,0-sum{j}+f{j, 0} -3 sumj+fj, 0, 그래서 그것을 -3 s u m j + f j, 0 -sum {j} + f{j, 0} -3. sumj+fj, 0은 단조로운 대기열의 요소로 그 증가성을 유지하면 된다.
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 100010
#define LL long long
#define inf 0x7f7f7f7f
#define reg register
struct fuck {
LL L,M;
fuck () {};
fuck (LL L1,LL M1) {L=L1; M=M1;}
};
LL n,m,A[N],f[N][2],ans,sum[N];
deque q;
int main() {
cin>>n>>m;
for(reg int i=1;i<=n;i++) scanf("%lld",&A[i]);
for(int i=1;i<=n;i++ ) sum[i]=sum[i-1]+A[i];
q.push_front( fuck(0,0) );
for(reg LL i=1,pos;i<=n;i++) {
f[i][1]=q.front().L+sum[i];
f[i][0]=max(f[i-1][0],f[i-1][1]);
while(!q.empty() && q.front().M
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깨끗한 것을 보고 싶기 때문에 최적화 함수의 벤치마크에 이용되는 함수의 가시화를 해 보았다결정되지 않음 (자기 만족) 「헤이 이런 거 있어」라고 생각하는 사람 최적화 함수란? 거친 이미지로 1) x + 10 = 25 2) x + 60 = 15 3) x + 45 = 60 의 x를 기계에 구할 때 정확하게 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.