首页 > 其他分享 >2022新生赛 玩石头 题解

2022新生赛 玩石头 题解

时间:2023-11-11 21:12:56浏览次数:43  
标签:const int 题解 重量 新生 石头 2022 INF rep

这题乍一看是个背包,但是它对背包物品的重量进行了限制,而且我们没有手段得知当前物品是否大于前面所有物品。研究发现,纪念品最大价值不会超过4000.因此我们可以用类似于01背包的做法,以纪念品价值作为重量,纪念品重量作为价值来dp.打表可以发现,在给定数据的范围下,石头塔最多为三十层,则时髦值之和最大为3000,然后我们发现石头塔的重量从上到下,一定是严格递增的,不妨设dp[j]代表时髦值为j的情况下的最小重量,然后将所有石头按重量从小到大排序,然后按照题目的要求DP即可。

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define fo(i,a,b) for(int i=(a);i<(b);++i)
#define PII pair<int,int>
using namespace std;
const int N=1e5+5;
const int INF=1e18;
const int V=3505;

int n;
PII a[N];
int f[V];

signed main(){
    cin>>n;
    rep(i,1,n) cin>>a[i].first>>a[i].second;
    sort(a+1,a+1+n);
    rep(i,0,V) f[i]=INF;
    f[0]=0;

    for(int i=1;i<=n;i++){
        int w=a[i].first,v=a[i].second;
        for(int j=V;j>=v;j--){
            if(f[j-v]==INF) continue;
            if(w>f[j-v]){
                f[j]=min(f[j],f[j-v]+w);
            }
        }
    }

    for(int j=V;j>=0;j--){
        if(f[j]<INF) {
            cout<<j;
            return 0;
        }
    }
}

 

标签:const,int,题解,重量,新生,石头,2022,INF,rep
From: https://www.cnblogs.com/Kopicy/p/17826361.html

相关文章

  • P9836 种树 题解
    蒟蒻在考场上花了2h45minAC本题通过高度求宽度定义一棵树的宽度为它高度的正因数个数我们可以预处理\(10^4\)之内素数。 for(lli=2;i<=10000;i++){ if(ok[i]==0){ ok[i]=i; pr[++nP]=i; } for(llj=1;i*pr[j]<=10000&&j<=nP;j++){ ok[i*pr[j]]=......
  • [题解] CF1327F AND Segments
    ANDSegments有\(m\)个限制\((l,r,x)\)。要计算满足以下条件的长度为\(n\)的序列\(a\)的数量:\(\foralli\in[1,n],0\lea_i<2^k\)。\(\foralli\in[1,m],a_{l_i}\operatorname{and}a_{l_i+1}\operatorname{and}\cdots\operatorname{and}a_{r......
  • 【洛谷 P1035】[NOIP2002 普及组] 级数求和 题解(循环)
    [NOIP2002普及组]级数求和题目描述已知:。显然对于任意一个整数,当足够大的时候,。现给出一个整数,要求计算出一个最小的,使得。输入格式一个正整数。输出格式一个正整数。样例#1样例输入#11样例输出#12提示【数据范围】对于的数据,。【题目来源】NOIP2002普及组第一题......
  • AT_agc057_e 题解
    AT_agc057_e[0]约定\(r_i=\sum\limits_{j=1}^{m}[A_{i,j}\lek]\)\(r^{'}_i=\sum\limits_{j=1}^{m}[B_{i,j}\lek]\)\(c_j=\sum\limits_{i=1}^{n}[A_{i,j}\lek]\)\(c^{'}_j=\sum\limits_{i=1}^{n}[B_{i,j}\lek]\)[1]......
  • [题解] AT_dp_w Intervals
    Intervals有\(m\)条形如\((l,r,a)\)的限制,表示如果\(s_{[l,r]}\)中有1就会有\(a\)的价值。你要求长度为\(n\)的01串的价值的最大值。\(n,m\le2\times10^5\)。将每个限制挂到右端点上,在右端点处计算贡献。然后我们就只关心最后一个1出现的位置了。......
  • 转 问题解决:记录一次Linux服务器根目录突然爆满
    一般跟目录满了,可以重点关注/var这个目录 一、出问题了过了个双休来到公司,同时发现Linux终端的服务器状态中根目录空间直接爆满100%,周五走之前根目录仅仅使用了59%,同时项目服务的后台不停的有日志打印,而且测试的小伙伴说系统登录不上去了。下面记录一下个人排查并解决这个问题......
  • 春秋云镜 2022网鼎杯半决赛 WP
    春秋云镜2022网鼎杯半决赛fscan扫描39.99.228.107:22open39.99.228.107:80open[*]aliveportslenis:2startvulscan[*]WebTitle:http://39.99.228.107code:200len:39988title:XIAORANG.LAB发现是wordpresswpscan--urlhttp://39.99.228.107/--api-t......
  • CF1485F Copy or Prefix Sum 题解
    思路考虑\(a_i\)要么是\(b_i\)要么是\(b_i-s\)。考虑\(s\)代表着什么。它是\(a\)的前缀和。那么必然是往前一段\(b\)的和。因为每个\(b\)代表着要么是这一位的\(a\)或者前面所有的\(a\)。考虑设\(f_i\)为这个位置填\(b_i\)的方案数。\(g_i\)为这个......
  • [POI2011] SMI-Garbage 题解
    题目链接显然,对于初始颜色与目标颜色不同的边,我们需要走过奇数次;对于初始颜色与目标颜色相同的边,我们需要走过偶数次。对于只有偶数边的情况,这种情况下不走就行;对于只有奇数边;可以理解为每条边只能经过一次,就是欧拉路径问题,并且考虑这题的特殊性质,如果一个图是由若干个简单环构......
  • CSP-S2019 江西 题解
    为什么有\(5\)道题?[CSP-S2019江西]和积和简单化一下式子:\[(n+1)\times\sumA_i\timesB_i-(\sumA_i)\times(\sumB_i)\]其中\(A,B\)都是前缀和。[CSP-S2019江西]网格图naive的kruskal是很naive的,所以需要一点简单的优化。考虑其本质过程就是按照......