zoukankan      html  css  js  c++  java
  • NYOJ 654喜欢玩warcraft的ltl(01背包/常数级优化)

    传送门

    Description

    ltl 非常喜欢玩warcraft,因为warcraft十分讲究团队整体实力,而他自己现在也为升级而不拖累团队而努力。

    他现在有很多个地点来选择去刷怪升级,但是在每一个地点他都要买上充足的补给和合适的道具,以免在刷怪的时候被怪物反杀了,每一个地点的怪物打完了就没有了(还居然不掉金钱跟装备),而且他只要选定了地点就一定会刷完该地点全部的怪物,同时获得对应的经验值。现在ltl 能给出每一个地点用来买补给和道具的钱和打完全部怪物所能获得的经验,但是他所拥有的钱是一定的。所以他想知道怎么选择地点使得他获得的经验最高。

    Input

    第一行一个整数T,表示测试数据的组数 0<T<=10
    第二行两个整数N,M,0<N<=100,0<M<=1000000表示ltl拥有N个不同地点的选择和M的金钱总数
    接下来N行每行两个整数ci,vi,(0<ci<=1000000,0<vi<=2000)表示ltl刷完第i个地点所需要购买补给和道具的总钱数和能获取的总经验值

    Output

    一行一个整数,表示ltl能够获取的最大的经验值

    Sample Input

    2
    3 10
    7 7
    2 3
    3 5
    2 5
    3 5
    2 1

    Sample Output

    Max experience: 12
    Max experience: 6

    思路

     01背包问题,主要是常数级的优化。我们所要求的就是f[v],而对于f[v]和最后一件要放入的物品n来说,只需要知道f[v-cn]是多少就行;于是,同理,对f[v-c_{n}] 和物品n-1来说,需要的是f[v-c_{n}-c_{n-1} ]
    于是,到物品i,也就是物品n-(n-i),需要的就是f[v-{c_{n}- ... -c_{i}}]。然而,有的物品可能是不会放进去的而且f[-1]是不存在的,于是,max{V-sum{c[i..n]},c[i]}。

     

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int maxn = 105;
    int c[maxn],v[maxn];
    int dp[1000005];
    
    int main()
    {
    	int T;
    	scanf("%d",&T);
    	while (T--)
    	{
    		int N,M;
    		memset(dp,0,sizeof(dp)); 
    		scanf("%d%d",&N,&M);
    		for (int i = 1;i <= N;i++)	scanf("%d%d",&c[i],&v[i]);
    		for (int i = 1;i <= N;i++)
    		{
    			int tmp = 0;
    			for (int j = i + 1;j <= N;j++)	tmp += c[j];
    			tmp = max(M-tmp,c[i]);      //01背包常数级优化 
    			for (int j = M;j >= tmp;j--)
    			{
    				dp[j] = max(dp[j],dp[j-c[i]]+v[i]);
    			}
    		}
    		printf("Max experience: %d
    ",dp[M]);
    	}
    	return 0; 
    } 
    

      

  • 相关阅读:
    2014.5.20知识点学习:void及void指针含义的深刻解析(转载)
    2014.5.20知识点学习:void与void*(转载)
    2014.5.19知识点学习:上下文切换
    编写“全选”按钮来操作大量复选框
    排序算法(冒泡排序,选择排序,插入排序,快速排序)
    算法基础
    Git &GitHub
    flask 上下文管理 &源码剖析
    rest-framework框架的基本组件
    Django的FBV和CB
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/7191270.html
Copyright © 2011-2022 走看看