Cow Exhibition G的來龍去脈

[USACO03FALL] Cow Exhibition G - 洛谷

曲折經過

爆搜

一開始沒什么好的想法,就針對每頭奶牛去or不去進行了爆搜。

#include <cstdio>
#include <algorithm>
using namespace std;#define maxn 405
int iq[maxn], eq[maxn];
int ans;
int n;void dfs(int k, int sumiq, int sumeq) {//printf("k:%d,sumiq %d, sumeq %d\n", k, sumiq, sumeq);if (k == n + 1) {if (sumiq < 0 | sumeq < 0) {return;}ans = max(ans, sumiq + sumeq);return;}dfs(k + 1, sumiq + iq[k], sumeq + eq[k]);dfs(k + 1, sumiq, sumeq);
}int main() {scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d %d", &iq[i], &eq[i]);}dfs(1, 0, 0);printf("%d\n", ans);return 0;
}

但這代碼交上去有5個數據點T了,所以還是得想其他的辦法,比如DP。?

二維DP

一開始設計了一個三維的狀態,f[i][j][k]表示到第i頭牛,智商和為j,情商和為k時的情商與智商和

但這數組有點太大了...

考慮到j,k兩維的下標其實與數組值有一定關系,所以我們優化掉第三維,把狀態改成f[i][j]表示到第i頭牛,智商和為j時的情商和

又考慮到,智商和、情商和可能取到負數,為了保證數組下標的合法性,我們對數組下標整體進行了偏移

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;#define maxn 405
#define maxm 2005int iq[maxn], eq[maxn];
int ans, n;
int dp[maxn][maxm * maxn];int main() {scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d %d", &iq[i], &eq[i]);}memset(dp, -0x3f, sizeof(dp));dp[0][400000] = 0;for (int i = 1; i <= n; i++) {//合理調整dp邊界if (iq[i] >= 0) {for (int j = iq[i]; j <= 800000; j++) {//for (int j = 800000; j >= iq[i]; j--) {dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - iq[i]] + eq[i]);//printf("dp[%d][%d]:%d\n", i, j, dp[i][j]);}} else {for (int j = 0; j <= 800000 + iq[i]; j++) {dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - iq[i]] + eq[i]);//printf("dp[%d][%d]:%d\n", i, j, dp[i][j]);}}}for (int j = 400000; j <= 800000; j++) {//智商和不能為負//printf("%d\n", dp[n][j] + j - 400000);if (dp[n][j] > 0)//情商和不能為負ans = max(ans, dp[n][j] + j - 400000);}printf("%d\n", ans);return 0;
}

?一些細節:

  • dp數組初始化成很小的數而非0,因為情商和有可能取負數
  • dp[0][400000]=0,偏移后的數組400000相當于零坐標,是合法狀態
  • dp邊界的處理
  • 找答案時的處理,且注意答案對應的是dp[n][j]+j,再減去總體偏移量400000

但MLE..

正解

一維DP

利用滾動數組優化

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;#define maxn 405
#define maxm 2005int iq[maxn], eq[maxn];
int ans, n;
int dp[maxm * maxn];int main() {scanf("%d", &n);for (int i = 1; i <= n; i++) {scanf("%d %d", &iq[i], &eq[i]);}memset(dp, -0x3f, sizeof(dp));dp[400000] = 0;for (int i = 1; i <= n; i++) {if (iq[i] >= 0) {for (int j = 800000; j >= iq[i]; j--) {dp[j] = max(dp[j], dp[j - iq[i]] + eq[i]);//printf("dp[%d][%d]:%d\n", i, j, dp[i][j]);}} else {for (int j = 0; j <= 800000 + iq[i]; j++) {dp[j] = max(dp[j], dp[j - iq[i]] + eq[i]);//printf("dp[%d][%d]:%d\n", i, j, dp[i][j]);}}}for (int j = 400000; j <= 800000; j++) {//printf("%d\n", dp[n][j] + j - 400000);if (dp[j] > 0)ans = max(ans, dp[j] + j - 400000);}printf("%d\n", ans);return 0;
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13161.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13161.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

留學資訊 | 2024英國學生簽證申請需要滿足哪些條件?

英國移民局于2020年9月10日發布了《移民規則變更聲明: HC 707》&#xff0c;對學生簽證制度進行了全面改革。該法案于2020年10月5日正式生效。根據此法案&#xff0c;新的學生簽證——The Student and Child Student Routes學生和兒童學生路線&#xff0c;將替代原先的Tier 4學…

短視頻賽道有哪些:成都鼎茂宏升文化傳媒公司

短視頻賽道有哪些&#xff1a;探索多元化的內容領域 隨著科技的飛速發展和人們生活節奏的加快&#xff0c;短視頻已成為現代人生活中不可或缺的一部分。它以其簡短、直觀、易于分享的特點&#xff0c;迅速占領了各個年齡層和社會群體的心智。然而&#xff0c;短視頻的賽道并非…

層次式體系結構概述

1.軟件體系結構 軟件體系結構可定義為&#xff1a;軟件體系結構為軟件系統提供了結構、行為和屬性的高級抽象&#xff0c;由構成系統的元素描述、這些元素的相互作用、指導元素集成的模式以及這些模式的約束組成。軟件體系結構不僅指定了系統的組織結構和拓撲結構&#xff0c;并…

小程序框架是智能融媒體平臺構建的最佳線路

過去5年&#xff0c;媒體行業一直都在進行著信息化建設向融媒體平臺建設的轉變。一些融媒體的建設演變總結如下&#xff1a; 新聞終端的端側內容矩陣建設&#xff0c;如App新聞端&#xff0c;社交平臺上的官方媒體等新聞本地生活雙旗艦客戶端&#xff0c;兼顧主流媒體核心宣傳…

TopOn 正式聚合Kwai 旗下程序化廣告平臺——Kwai Network

**我們非常高興的宣布&#xff0c;TopOn SDK 近日已正式聚合Kwai Network。**作為Kwai 旗下的程序化廣告平臺&#xff0c;Kwai Network 通過優質的變現能力及產品能力&#xff0c;為廣大開發者提供高效及時的服務。 TopOn 聚合平臺與Kwai Network 正式完成接入后&#xff0c;開…

實戰+代碼!Selenium + Phantom JS爬取天天基金數據

功能&#xff1a; 通過程序實現從基金列表頁&#xff0c;獲取指定頁數內所有基金的近一周收益率以及每支基金的詳情頁鏈接。再進入每支基金的詳情頁獲取其余的基金信息&#xff0c;將所有獲取到的基金詳細信息按近6月收益率倒序排列寫入一個Excel表格。 思路&#xff1a; 1.…

vm 虛擬機 Debian12 開啟 root、ssh 登錄功能

前言&#xff0c;安裝的時候語言就選中文就好了。選擇中文&#xff0c;在安裝的時候就可以選擇國內 163 的源。 開啟 ssh 功能 先提權&#xff0c;用 root 賬戶 su安裝 ssh 安裝 ssh-server apt install openssh-server啟動 ssh systemctl start ssh查看 ssh 狀態 systemctl st…

【Flutter 面試題】 如何讓圖片重復堆疊容器?

【Flutter 面試題】 如何讓圖片重復堆疊容器? 文章目錄 寫在前面口述回答補充說明寫在前面 ?? 關于我 ,小雨青年 ?? CSDN博客專家,GitChat專欄作者,阿里云社區專家博主,51CTO專家博主。2023博客之星TOP153。 ???? 正在學 Flutter 的同學,你好! ?? Flutter …

根據web訪問日志,封禁請求量異常的IP,如IP在半小 時后恢復正常則解除封禁

在網絡安全日益受到重視的今天&#xff0c;如何有效防范惡意流量和攻擊成為了每個網站管理員必須面對的問題。惡意流量不僅會影響網站的正常運行&#xff0c;還可能導致服務器崩潰&#xff0c;給網站帶來不可估量的損失。為了應對這一問題&#xff0c;我們特別推出了一款實用的…

u3d的ab文件注意事項

//----------------LoadAllAB.cs--------------------- using System.Collections;using UnityEngine;namespace System.IO{public class LoadAllAB : MonoBehaviour{ //讀取本地string path "Assets/Actors/lznh/ab/animation/t_bl/";// Use this for initiali…

SQL注入之數據庫基礎

數據庫基礎 創建數據庫 create 數據庫名稱;創建表 create table if not exists mobile(ID int(10) primary key auto_increment comment 手機編號 主鍵自增,Brand varchar(50) not null comment 手機品牌 非空約束,Model varchar(50) not null comment 手機型號 非空約束,Pr…

Keil手動安裝編譯器V5版本

V5編譯器下載&#xff1a;免積分下載 新版的keil不會自動幫你安裝V5版本的編譯器&#xff0c;但是很多教程很多比賽所用單片機都是V5的編譯器&#xff0c;所以用來開以前的或者開源的很多東西編譯直接一大堆報錯。 吐槽說完了接下來教你怎么解決 打開installer&#xff08;在…

vue使用postcss-pxtorem實現自適應

安裝&#xff1a; npm install postcss-pxtorem -Dvue.config.js文件設置&#xff1a; css: {loaderOptions: {scss: {additionalData: import "~element-ui/packages/theme-chalk/src/common/var.scss";import"/styles/variables.scss";},postcss: {po…

OpenGL ES 面試高頻知識點(二)

說說紋理常用的采樣方式? 最鄰近點采樣(GL_NEAREST)和雙線性采樣(GL_LINEAR)。 GL_NEAREST 采樣是 OpenGL 默認的紋理采樣方式,OpenGL 會選擇中心點最接近紋理坐標的那個像素,紋理放大的時候會有鋸齒感或者顆粒感。 **GL_LINEAR 采樣會基于紋理坐標附近的紋理像素,計…

搞大事!法國邀請芬蘭公司建量子工廠

法國當地時間5月13日&#xff0c;法國總統馬克龍宣布啟動2024年度“選擇法國”&#xff08;Choose France&#xff09;商業峰會。今年峰會召開前&#xff0c;法國贏得了創紀錄的150億歐元外國投資承諾&#xff0c;覆蓋從人工智能到制藥和能源等領域。 而涉及到量子領域最重磅的…

python數據處理與分析入門-pandas使用(4)

往期文章&#xff1a; pandas使用1pandas使用2pandas使用3 pandas使用技巧 創建一個DF對象 # 首先創建一個時間序列 dates pd.date_range(20180101, periods6) print(dates)# 創建DataFrame對象&#xff0c;指定index和columns標簽 df pd.DataFrame(np.random.randn(6,4), …

el-select下拉框 添加 el-checkbox 多選框,支持全選、取消全選

el-select下拉框 添加 el-checkbox 多選框&#xff0c;支持全選、取消全選 前言一、實現思路二、實現代碼1.模板代碼2. css 樣式3.js 代碼 DEMO 演示總結 前言 實現效果預覽 提示&#xff1a;本內容基于element-ui 組件實現&#xff0c;如果使用其他組件庫、可參考下面實現方…

「AIGC算法」線性回歸模型

線性回歸是統計學和機器學習中一種常用的監督學習算法&#xff0c;用于預測連續數值型的輸出。線性回歸模型試圖找到特征變量&#xff08;或稱自變量&#xff09;與目標變量&#xff08;因變量&#xff09;之間的線性關系。 線性回歸的兩種主要類型&#xff1a; 簡單線性回歸&a…

學習Nginx(三):命令與信號

命令及選項 1. 顯示幫助信息&#xff1a; [rootRockyLinux9 ~]# nginx -h nginx version: nginx/1.26.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]選項:-?,-h : 顯示幫助信息-v : 顯示版本信息-V …

Error in debuggerConnector: connect ECONNREFUSED問題解決

最近重新開始electron開發&#xff0c;兩三年前寫的代碼幾乎看不懂了。。然后debug一下&#xff0c;直接報錯了&#xff1a; Debugger listening on ws://127.0.0.1:20793/d146ffdb-c3b8-4480-a8d8-d04bb643c7c1 For help, see: https://nodejs.org/en/docs/inspector Error i…