zoukankan      html  css  js  c++  java
  • 20210529-背包

    1.最小乘车费用

    思路

    还是比较简单的,把10种里程处理为10个物品,写为无限背包即可。
    错因:看错了题目,以为最大里程是100导致写成了(10 imes10)01背包!

    代码

    #include <bits/stdc++.h>
    #define fo(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout)
    using namespace std;
    const int INF = 0x3f3f3f3f , N = 1e2+5 , M = 1e2+5;
    typedef long long ll;
    typedef unsigned long long ull;
    inline ll read(){
    	ll ret = 0 ; char ch = ' ' , c = getchar();
    	while(!(c >= '0' && c <= '9'))ch = c , c = getchar();
    	while(c >= '0' && c <= '9')ret = (ret << 1) + (ret << 3) + c - '0' , c = getchar();
    	return ch == '-' ? -ret : ret;
    }
    int dp[M];
    int w[N],v[N],n = 10,m;
    signed main(){
    	memset(dp,127,sizeof(dp));
    	int x;
    	for(int i = 1 ; i <= 10 ; i ++){
    		x = read();
    			w[i] = i , v[i] = x;
    	}
    	
    	m = read();
    	dp[0] = 0;
    	for(int i = 1 ; i <= n ; i ++)
    		for(int j = w[i] ; j <= m ; j ++)
    			dp[j] = min(dp[j],dp[j-w[i]]+v[i]);
    	printf("%d",dp[m]);
    	return 0;
    }
    

    T2 T3 T4都比较简单,T2方案数统计,T3有限背包,T4有限背包(转二进制优化)+无限背包+双价值(dp改为二维),就不具体展开写了。

  • 相关阅读:
    内存访问可以使用段地址+冒号+偏移地址的形式吗?
    更改Word、PowerPoint、Excel(Office套件)的主题为暗黑色
    埃拉托斯特尼筛法找质数
    引水入城
    线段树 区间乘
    会场预约
    借教室 线段树and二分
    数轴染色
    线段树 区间加
    树集
  • 原文地址:https://www.cnblogs.com/Shinomiya/p/14825886.html
Copyright © 2011-2022 走看看