zoukankan      html  css  js  c++  java
  • Course Selection System ZOJ

    Course Selection System

     ZOJ - 3956 

    这个题目居然是一个01背包,我觉得好难想啊,根本就没有想到。

    这个题目把题目给的转化为  ans = a*a-a*b-b*b

    这个可以看成 当b不变的时候 a 越大越好。

    这个就可以用01背包来解决

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    #include <algorithm>
    #include <cstdlib>
    #include <vector>
    #include <stack>
    #include <map>
    #include <string>
    #define inf 0x3f3f3f3f
    #define inf64 0x3f3f3f3f3f3f3f3f
    using namespace std;
    typedef long long ll;
    const int maxn = 5e4 + 10;
    ll dp[maxn];
    int c[maxn], h[maxn];
    
    int main()
    {
    	int t;
    	scanf("%d", &t);
    	while(t--)
    	{
    		int n;
    		scanf("%d", &n);
    		memset(dp, 0, sizeof(dp));
    		for (int i = 1; i <= n; i++) scanf("%d%d", &h[i], &c[i]);
    		for (int i = 1; i <= n; i++) {
    			for (int j = 50000; j >= c[i]; j--) {
    				dp[j] = max(dp[j], dp[j - c[i]] + h[i]);
    			}
    		}
    		
    		ll ans = 0;
    		for(int i=0;i<=50000;i++)
    		{
    			ans = max(ans, dp[i] * dp[i] - dp[i] * i - i * 1ll * i);
    		//	printf("i=%d ans=%lld
    ", i, ans);
    		}
    		printf("%lld
    ", ans);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Flink学习四:Flink运行架构
    Flink学习三:Flink安装
    Flink学习二:Flink基本架构
    进程的作业
    并发编程
    粘包解决模板
    网络下载作业
    网络通信远程操控
    网络编程套接字
    网络编程基础之网络协议篇
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/11360276.html
Copyright © 2011-2022 走看看