1. 程式人生 > >【SDUTOJ 3307】 a (第k小揹包)

【SDUTOJ 3307】 a (第k小揹包)

其實原本讓我補這些結訓題我是拒絕的 尼瑪能好好起名字麼= =

不過看在第一次接觸這知識點 知識點就補了吧 揹包九講以前就看完前三 補這題順便也把後幾講學了學

第k大就是多了一維度 存放第1,2....k大 每次更新先把所有轉移後的價值放進佇列 然後佇列前k大就是這次轉移後的值 挨個存入即可

由於這題就要第2小 沒用佇列直接上if...

程式碼如下:

#include <bits/stdc++.h>

using namespace std;

int dp[1111][2];

int main()
{
    int t,n,m,i,j,p,c;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&n,&m);
        memset(dp,0,sizeof(dp));
        for(i = 0; i < m; ++i)
        {
            scanf("%d %d",&c,&p);
            for(j = n; j >= c; --j)
            {
                if(dp[j-c][0]+p > dp[j][0])
                {
                    if(dp[j][0] > dp[j-c][1]+p)
                    {
                        dp[j][1] = dp[j][0];
                    }
                    else if(dp[j-c][1]+p < dp[j-c][0]+p && dp[j-c][1]+p > dp[j][1])
                    {
                        dp[j][1] = dp[j-c][1]+p;
                    }
                    dp[j][0] = dp[j-c][0]+p;
                }
                else if(dp[j-c][0]+p != dp[j][0] && dp[j-c][0]+p > dp[j][1])
                {
                    dp[j][1] = dp[j-c][0]+p;
                }
                else if(dp[j-c][1]+p != dp[j][0] && dp[j-c][1]+p > dp[j][1])
                {
                    dp[j][1] = dp[j-c][1]+p;
                }
               // printf("%d:%d %d\n",j,dp[j][0],dp[j][1]);
            }
        }
        printf("%d\n",dp[n][0]+dp[n][1]);
    }
    return 0;
}


相關推薦

SDUTOJ 3307 a (k揹包)

其實原本讓我補這些結訓題我是拒絕的 尼瑪能好好起名字麼= = 不過看在第一次接觸這知識點 知識點就補了吧 揹包九講以前就看完前三 補這題順便也把後幾講學了學 第k大就是多了一維度 存放第1,2...

XSY2720區間k 整體二分 可持久化線段樹

cpp markdown 區間 序列 printf line 線段 using back 題目描述   給你你個序列,每次求區間第\(k\)小的數。   本題中,如果一個數在詢問區間中出現了超過\(w\)次,那麽就把這個數視為\(n\)。   強制在線。   \(n\leq

GDOI2018模擬8.12區間k

Description 給出一個長度為n的序列a,q次詢問某個區間[l,r]中的區間第k小,注意如果一個數的出現次數大於w就把它當成n 詢問強制線上 n,q,ai<=10^5 Solution Orz 資料結構 根號演算法講師 首先如果詢問

LeetCode230. 二叉搜尋樹中K的元素 結題報告 (C++)

原題地址:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/submissions/ 題目描述: 給定一個二叉搜尋樹,編寫一個函式 kthSmallest 來查詢其中第 k 個最小的元素。 說明: 你可以假設 k

xsy1098k 可持久化trie

printf code 相同 異或操作 bsp use namespace print ret 題目大意:你要維護一個長度為$n$的序列,資瓷對整個序列$xor,and,or$一個數,以及區間第k小查詢。 數據範圍:$n≤50000$,所有數字$<2^{31}$。

spoj COT - Count on a tree (樹上K LCA+主席樹)

roo sizeof 過程 mes problems ems name ret bit 鏈接: https://www.spoj.com/problems/COT/en/ 思路: 首先看到求兩點之前的第k小很容易想到用主席樹去寫,但是主席樹處理的是線性結構,而這道題要

LeetCode-230 kth smallest element in a bst 二叉搜尋樹中K的元素

題目連結 https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/ 題意 中文題,對於二叉搜尋樹而言,找其中的第K小的數 題解         很有趣的題,但是很簡單

LeetCode60. k個排列

題目連結:https://leetcode-cn.com/problems/permutation-sequence/description/ 題目描述 給出集合 [1,2,3,…,n],其所有元素共有 n! 種排列。 按大小順序列出所有排列情況,並一一標記,當 n = 3

LeetCode 779. K個語法符號

遞迴 題目 在第一行我們寫上一個 0。接下來的每一行,將前一行中的0替換為01,1替換為10。 給定行數 N 和序數 K,返回第 N 行中第 K個字元。(K從1開始) 例子: 輸入: N = 1, K = 1 輸出: 0 輸入: N = 2, K = 1 輸

演算法尋找k大的數

目錄: 1、引子 2、排序解決法 3、類快排解法 4、最小堆解法 1、引子 日常編碼中,常見遇到這樣的問題,“尋找最大的數”,此問題非常容易,可暴力直接遍歷找出,也可使用分冶策略找出最大值(詳見分冶演算法)。 本文中需要尋找第k大的數,筆者目前想到3個方法可解決它。 2、排序解決法

Count on a tree 樹上 (u,v)的路上的K的權值(主席樹+樹剖lca

題目連結 題目大意:  就是求在樹上 (u,v)的路上的第K小的權值 解題思路:  首先對於求第K小的問題 我們可以用主席樹搞 ,沒有問題,  但是對於一個樹形結構,我們需要將其轉化為線性,然後需要樹剖才能做. 然後考慮鏈上的第k值怎麼維護 ,  發現如果樹剖計算的話

Codeforces Round 332 (Div 2)A水題A. Patrick and Shopping 遍歷三元環的最成本

Today Patrick waits for a visit from his friend Spongebob. To prepare for the visit, Patrick needs to buy some goodies in two stores located near his hous

Kth Smallest Element in a BST 二叉搜尋樹中K的元素

給定一個二叉搜尋樹,編寫一個函式kthSmallest來查詢其中第 k 個最小的元素。說明:你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。示例 1:輸入: root = [3,1,4,null,2], k = 1 輸出: 1示例 2:輸入: root = [

[LeetCode] Kth Smallest Element in a BST 二叉搜尋樹中的K的元素

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Note: You may assume k is always valid, 1 ≤ k ≤ BST's

[LeetCode] Kth Smallest Element in a Sorted Matrix 有序矩陣中K的元素

Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix. Note that it is the

[Swift]LeetCode230. 二叉搜尋樹中K的元素 | Kth Smallest Element in a BST

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Note: You may assume k is always vali

深度學習筆記七彈--RNN與應用案例:注意力模型與機器翻譯

標籤(空格分隔): 王小草深度學習筆記 1. 注意力模型 1.2 注意力模型概述 注意力模型(attention model)是一種用於做影象描述的模型。在筆記6中講過RNN去做影象描述,但是精準度可能差強人意。所以在工業界,人們更喜歡用atten

連結串列&刪除倒數K個節點Remove Nth Node From End of List

Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3-&g

007-尋找k元素-分治法-《演算法設計技巧與分析》M.H.A學習筆記

在n個元素的陣列中查詢第k小的元素。Θ(n) 顯然先排序的話,複雜度為O(nlogn)。 但我們還有一個很漂亮的Θ(n)的演算法。 先說一下分治法的閾值:我們有一種吊炸天的分治演算法,可以用很好的效率求解出某個問題,分治演算法當然在達到一個非常小的規模時,會能

深度學習筆記四彈--卷積神經網路與遷移學習

標籤(空格分隔): 王小草深度學習筆記 1. 影象識別與定位 影象的相關任務可以分成以下兩大類和四小類: 影象識別,影象識別+定位,物體檢測,影象分割。 影象的定位就是指在這個圖片中不但識別出有只貓,還把貓在圖片中的位置給精確地摳出來今天我們來講