<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      papamelon 344. 奶牛展覽 Cow Exhibition(挑戰(zhàn)程序設計競賽) dp

      地址 https://www.papamelon.com/problem/344

      貝西有權選擇讓哪些奶牛參加展覽。
      由于負的智商或情商會造成負面效果,所以貝西不希望出展奶牛的智商之和小于零,或情商之和小于零。
      滿足這兩個條件下,她希望出展奶牛的智商與情商之和越大越好,請幫助貝西求出這個最大值。
      
      輸入
      第一行:單個整數 
      1≤N≤100
      第二行到第 N+1 行:第 
      i+1 行有兩個整數:
      Si 和 Fi,表示第 i 奶牛的智商和情商,
      ?1000≤Si,Fi≤1000
      輸出
      一個整數:表示情商與智商和的最大值
      貝西可以不讓任何奶牛參加展覽,如果這樣做是最好的,輸出 
      0
      樣例 1
      輸入
      5
      -5 7
      8 -6
      6 -3
      2 1
      -8 -5
      輸出
      8
      

      解答
      很明顯的背包問題
      但是在數據范圍上好多細節(jié)
      一個是背包的空間太大,需要做空間優(yōu)化
      一個是背包的索引有的是負值。
      我們定義dp[i][j] 表示前i個牛的情商為j的情況下最大的智商為多少
      然后偏移j的索引為 最大可能負值的一半,也就是100個牛情商全為負數的情況下, maxIdx = 100*-1000/2

      #include <iostream>
      #include <algorithm>
      #include <memory.h>
      using namespace std;
      
      const int N = 20010;
      const int M = 110;
      const int newZero = 10000;
      
      int dp[M][N];
      int n;
      int arr[M][2];
      
      int main()
      {
      	cin >> n;
      	for (int i = 1; i <= n; i++) {
      		cin >> arr[i][0] >> arr[i][1]; 
      	}
      
      	memset(dp, -0x3f, sizeof dp);
      	dp[0][newZero] = 0;
      	int ans = 0;
      	for (int i = 1; i <= n; i++) {
      		for (int j = 0; j < N; j++) {
      			dp[i][j] = dp[i - 1][j];
      			int eq = arr[i][0]; int iq = arr[i][1];
      
      			if(j-eq <N)
      				dp[i][j] = max(dp[i][j], dp[i - 1][j - eq] + iq);
      
      
      			if (i == n && j >= newZero && dp[n][j] >= 0) {
      
      				if (ans < j + dp[i][j] - newZero) {
      					//printf("dp[%d][%d]=%d\n",i,j,dp[i][j]);
      				}
      				ans = max(ans, j + dp[i][j] - newZero);
      				
      			}
      		}
      	}
      
      	cout << ans << endl;
      
      	return 0;
      }
      
      能過部分數據,但是要過大數據,需要分配[100][2*2000*100]  會報空間過大,這時候我們需要做空間優(yōu)化
      使用滾動數組解決空間問題
      
      #include <iostream>
      #include <algorithm>
      #include <memory.h>
      using namespace std;
      
      
      const int N = 200010;
      const int M = 110;
      const int newZero = 100000;
      
      int dp[2][N];
      int n;
      int arr[M][2];
      
      int main()
      {
      	cin >> n;
      	for (int i = 1; i <= n; i++) {
      		cin >> arr[i][0] >> arr[i][1]; 
      	}
      
      	memset(dp, -0x3f, sizeof dp);
      
      	for (int i = 0; i < N; i++) {
      		dp[0][i] = -999999999;
      		dp[1][i] = -999999999;
      	}
      
      	dp[0][newZero] = 0;
      	int ans = 0;
      	int curr = 1; int prev = 0;
      	for (int i = 1; i <= n; i++) {
      		for (int j = 0; j < N; j++) {
      			dp[curr][j] = dp[prev][j];
      			int eq = arr[i][0]; int iq = arr[i][1];
      
      			if(j-eq <N)
      				dp[curr][j] = max(dp[curr][j], dp[prev][j - eq] + iq);
      
      
      			if (i == n && j >= newZero && dp[curr][j] >= 0) {
      				ans = max(ans, j + dp[curr][j] - newZero);
      			}
      		}
      		swap(curr, prev);
      	}
      
      	cout << ans << endl;
      
      	return 0;
      }
      

      視頻題解空間

      posted on 2023-06-12 14:40  itdef  閱讀(36)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 99re6这里有精品热视频| 亚洲AV成人片在线观看| 国产中文字幕一区二区| 亚洲欧美日韩综合一区在线| 久久婷婷五月综合97色直播| 在线播放国产女同闺蜜| 99福利一区二区视频| 国产丰满麻豆videossexhd| 成全我在线观看免费第二季| 国产精品永久免费成人av| 国产麻豆9l精品三级站| 日本真人做爰免费的视频| 日韩最新中文字幕| 国产不卡一区二区四区| 日本无遮挡真人祼交视频| 国产亚洲一二三区精品| 亚洲性猛交xxxx| 18禁一区二区每日更新| 精选国产av精选一区二区三区| 国产亚洲精品AA片在线爽| 欧洲美熟女乱又伦免费视频 | 亚洲人成网站77777在线观看| 国产精品自在自线视频| 精品无码国产一区二区三区av | 日韩中文字幕有码av| 国产无遮挡又黄又爽不要vip软件 国产成人精品一区二区秒拍1o | 人妻熟女欲求不满在线| 亚洲综合久久精品哦夜夜嗨| 人妻少妇精品视频专区| 美日韩在线视频一区二区三区 | 国精品人妻无码一区免费视频电影| 极品无码国模国产在线观看 | 亚洲理论电影在线观看| 99RE8这里有精品热视频| 妓女妓女一区二区三区在线观看| 亚洲v国产v天堂a无码二区| 亚洲色www成人永久网址| 潮喷无码正在播放| 精品视频不卡免费观看| 国产日韩精品免费二三氏| 国产一区二区三区怡红院|