题意:

给你n个物品,每个物品有一个价格ci和一个支付时间ti,在这个ti时间内,你可以免费拿ti个物品。问你想要带走这n个物品最小需要多少钱

题解:

原本还想着贪心去写,但是好像贪心写不了,,,不属于贪心
 
因为题目上说了要求把n个商品都买下所付出的最小的钱
因为买了第i件商品可以免费拿出来ti个,可以相当于一共拿出来ti+1个
那么这就相当于01背包了,n当作背包体积。但是要注意,如果背包剩余空间不够当前操作导致无法求出最优解呢?
所以背包剩余体积就算不够也可以放进去(具体见代码)
 
 
代码:
 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<queue>
6 #include<map>
7 #include<vector>
8 #include<math.h>
9 #define mem(a,x) memset(a,x,sizeof(a))
10 using namespace std;
11 typedef long long ll;
12 const int maxn=2000+10;
13 const int mod=26;
14 const int INF=0x3f3f3f3f;
15 const int Times = 10;
16 const int N = 5500;
17 const long long int MAX=(long long int)1<<62;
18 ll dp[maxn];
19 struct shudui
20 {
21 ll t,c;
22 }m[maxn];
23 int main()
24 {
25 ll n;
26 scanf("%I64d",&n);
27 for(ll i=0;i<n;++i)
28 {
29 scanf("%I64d%I64d",&m[i].t,&m[i].c);
30 m[i].t+=1;
31 }
32 for(int i=0;i<=n;++i)
33 dp[i]=MAX; //这里要用MAX而不能用INF
34 dp[0]=0;
35 for(ll i=0;i<n;++i)
36 {
37 for(ll j=n;j>0;--j) //注意这个for循环j得终止条件是j<=0
38 {
39 ll ans;
40 //这个就是背包溢出的处理
41 if(j<m[i].t) ans=0;
42 else ans=j-m[i].t;
43 dp[j]=min(dp[j],dp[ans]+m[i].c);
44 }
45 }
46 printf("%I64d\n",dp[n]);
47 return 0;
48 }

Checkout Assistant CodeForces - 19B的更多相关文章

  1. CodeForces 19B Checkout Assistant

    B. Checkout Assistant time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. B. Checkout Assistant 01背包变形

    http://codeforces.com/problemset/problem/19/B 对于每个物品,能偷多ti个,那么先让ti + 1, 表示选了这个东西后,其实就是选了ti + 1个了.那么只 ...

  3. [CF19B]Checkout Assistant

    题目描述 Bob 来到一家现购自运商店,将 n 件商品放入了他的手推车,然后到收银台 付款.每件商品由它的价格 pi 和收银员扫描它的时间 ti 秒定义.当收银员正在扫 描某件商品时,Bob 可以从他 ...

  4. Codeforces Beta Round #19

    A. World Football Cup #include <bits/stdc++.h> using namespace std;   ; char name[N][N]; map&l ...

  5. CF dp 题(1500-2000难度)

    前言 从后往前刷 update 新增 \(\text{\color{red}{Mark}}\) 标记功能,有一定难度的题标记为 \(\text{\color{red}{红}}\) 色. 题单 (刷过的 ...

  6. codeforces 377A. Puzzles 水题

    A. Puzzles Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/33 ...

  7. Codeforces Round #415 (Div. 2)(A,暴力,B,贪心,排序)

    A. Straight «A» time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  8. Codeforces Round#415 Div.2

    A. Straight «A» 题面 Noora is a student of one famous high school. It's her final year in school - she ...

  9. CodeForces 337A Puzzles

    Puzzles Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Origina ...

随机推荐

  1. python学习笔记 | 顺序表的常规操作

    ''' @author: 人人都爱小雀斑 @time: 2020/3/11 8:46 @desc: 顺序表的相关操作 ''' class SequenceList: def __init__(self ...

  2. docker logs 查看容器日志操作

    查看日志 官方文档:https://docs.docker.com/engine/reference/commandline/logs/ # 查看指定数量的实时日志 # docker logs -tf ...

  3. Linux Ubuntu系统版本通过Crontab设置定时任务的执行

    Linux Ubuntu系统版本通过Crontab设置定时任务的执行 本文由本人收集网络信息总结而来 特别鸣谢:https://linux.zone/2258 1 crontab 简单介绍以及语法使用 ...

  4. JDK的各个版本

    Java的各个版本 从上图我们看出,Java的版本名最开始以JDK开头,后来以j2se开头,最后到现在以Java开头,所以这些名字我们都可以说,但人们说的更多的是JDK多少,或者Java多少

  5. python_mmdt:从0到1--实现简单恶意代码分类器(二)

    概述 上篇文章python_mmdt:一种基于敏感哈希生成特征向量的python库(一)我们介绍了一种叫mmdt_hash(敏感哈希)生成方法,并对其中的概念做了基本介绍.本篇,我们重点谈谈mmdt_ ...

  6. Mysql 中写操作时保驾护航的三兄弟!

    这期的文章主要是讲述写操作过程中涉及到的三个日志文件,看过前几期的话可能你或多或少已经有些了解了(或者从别的地方也了解过).比如整个写操作过程中用到的两阶段提交,又或者是操作过程中涉及到的日志文件,但 ...

  7. C#高级编程第11版 - 第九章 索引

    [1]9.1 System.String 类 String类中关键的方法.如替换,比较等. [2]9.1.1 构建字符串 1.String类依然有一个缺点:因为它是不可变的数据类型,这意味当你初始化一 ...

  8. Bitter.Core系列 十二 :Bitter ORM NETCORE ORM 全网最粗暴简单易用高性能的 NETCore 之 支持的 where 条件表达式

    Bitter.Core 内置了支持大部分的 linq 的条件表达式.基本上符合我们 where 条件所需.Bitter.Core 的支持 表达式内置  扩展 有: EndsWith    在Sql 解 ...

  9. muduo 网络库的整体架构图和一个简化版本的架构设计

    https://blog.csdn.net/adkada1/article/details/54342275 简析 https://blog.csdn.net/amoscykl/article/det ...

  10. C++ Primer Plus读书笔记(六)分支语句和逻辑运算符

    1. 以上均包含在cctype中 1 #include<cctype> 2 //#include<ctype.h> 2.文件操作 (1)头文件 1 #include<fs ...