zoukankan      html  css  js  c++  java
  • [USACO14DEC]后卫马克Guard Mark

    状压DP。
    设计状态f[i]表示奶牛的状态为i时,所有奶牛的可用耐力最小值,随便转移一下就行了。(翻译的大兄弟,没有翻译不可行的情况,wa了一次。。。)

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int N=25;
    long long n,H,f[1<<20],ans;
    struct Cows{long long hig,wei,saf;}cow[N];
    int main() {
    	scanf("%lld%lld",&n,&H);
    	for(int i=1;i<=n;i++) scanf("%lld%lld%lld",&cow[i].hig,&cow[i].wei,&cow[i].saf);
    	long long S=(1<<n)-1;
    	f[0]=0x3f3f3f3f;
    	for(long long i=1,sum;i<=S;i++) {
    		sum=0;
    		for(int j=1;j<=n;j++)
    			if(i&(1<<j-1)) f[i]=max(f[i],min(f[i^(1<<(j-1))]-cow[j].wei,cow[j].saf)),sum+=cow[j].hig;
    		if(f[i]>=0&&sum>=H) ans=max(ans,f[i]);
    	}
    	if(ans)
    	cout<<ans;
    	else 
    	puts("Mark is too tall");
    }
    
    我是咸鱼。转载博客请征得博主同意Orz
  • 相关阅读:
    vs13的内存占用 关闭之
    Java基础 -5
    Java基础 -4.6
    Java基础 -4.5
    Java基础 -4.4
    Java基础 -4.3
    Java基础 -4.2
    Java基础 -4
    Java基础 -3.5
    Java基础 -3.4
  • 原文地址:https://www.cnblogs.com/sdfzhsz/p/9386150.html
Copyright © 2011-2022 走看看