1. 程式人生 > >帶有時間間隔的dp

帶有時間間隔的dp

時間間隔 lin als mat name 一次 created stream bits

Uberwatch

題意:一個人打一群敵人,每間隔時間m能釋放一次大招,消滅這個時刻上的所有敵人,起始時刻開始計算冷卻時間

solution:

dp[i]=max(dp[i],dp[i-m]);

技術分享圖片
 1 /*************************************************************************
 2     > File Name: a.cpp
 3     > Author: QWX
 4     > Mail: 
 5     > Created Time: 2018/10/17 20:07:36
 6  ***********************************************************************
*/ 7 8 9 //{{{ #include 10 #include<iostream> 11 #include<cstdio> 12 #include<algorithm> 13 #include<vector> 14 #include<cmath> 15 #include<queue> 16 #include<map> 17 #include<set> 18 #include<string> 19 #include<cstring> 20 #include<complex> 21
#include<cassert> 22 //#include<bits/stdc++.h> 23 #define vi vector<int> 24 #define pii pair<int,int> 25 #define mp make_pair 26 #define pb push_back 27 #define first fi 28 #define second se 29 #define pw(x) (1ll << (x)) 30 #define sz(x) ((int)(x).size()) 31 #define all(x) (x).begin(),(x).end() 32
#define rep(i,l,r) for(int i=(l);i<(r);i++) 33 #define per(i,r,l) for(int i=(r);i>=(l);i--) 34 #define FOR(i,l,r) for(int i=(l);i<=(r);i++) 35 #define cl(a,b) memset(a,b,sizeof(a)) 36 #define fastio ios::sync_with_stdio(false);cin.tie(0); 37 #define lson l , mid , ls 38 #define rson mid + 1 , r , rs 39 #define INF 0x3f3f3f3f 40 #define LINF 0x3f3f3f3f3f3f3f3f 41 #define ll long long 42 #define ull unsigned long long 43 #define dd(x) cout << #x << " = " << (x) << "," 44 #define de(x) cout << #x << " = " << (x) << "\n" 45 #define endl "\n" 46 using namespace std; 47 //}}} 48 49 const int N=3e5+7; 50 int a[N]; 51 int dp[N]; 52 53 int main() 54 { 55 int n,m; cin>>n>>m; 56 FOR(i,1,n)cin>>a[i]; 57 FOR(i,m+1,n){ 58 dp[i]=max(dp[i-1],dp[i-m]+a[i]); 59 // de(dp[i]); 60 } 61 cout<<dp[n]<<endl; 62 return 0; 63 }
View Code

帶有時間間隔的dp