PKU campus 2018 A Wife——差分約束?/dp
阿新 • • 發佈:2018-07-07
fine define stream esp pre lld efi 方案 之前
題目:http://poj.openjudge.cn/campus2018/A
有正規的差分約束做法,用到矩陣轉置等等。
但也有簡單(?)的dp做法。
有一個結論(?):一定要麽在一天一點也不選,要麽在一天選了7個小時。
於是dp[ i ]表示第 i 天選了7個小時、之前合法 的方案數。可以從i-1到i-7轉移。答案是n到n-6。
#include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; const int N=1e5+5;int T,n; ll dp[N],c[N],ans; int main() { scanf("%d",&T); while(T--) { memset(dp,0x3f,sizeof dp);dp[0]=0;// scanf("%d",&n);ans=0x3f3f3f3f; for(int i=1;i<=n;i++)scanf("%lld",&c[i]); for(int i=1;i<=n;i++) for(int j=i-1;j>=i-7&&j>=0;j--)//>=0 dp[i]=min(dp[i],dp[j]+7*c[i]); for(int i=n;i>=n-6&&i>=1;i--)ans=min(ans,dp[i]); printf("%lld\n",ans); } return 0; }
PKU campus 2018 A Wife——差分約束?/dp