Codeforces Round #552 (Div. 3) F题
题目网址:http://codeforces.com/contest/1154/problem/F
题目大意:给出n,m,k,n是物体的个数,m是优惠方式的种数,k是需要购买的物体个数,
然后给出n个数,即每个物体的价格,再给出m行,每行x,y,表示一种优惠方式,即,当你购买x
个物体时,前y个最便宜的物体免费,问,只有一种优惠方式时,需要花费的最少的钱。
题解:首先,要买k个物体,显然选择的物体价格是前k个最小的数,然后再考虑优惠,那么,购买k
个物体的最小价格是总价格减去购买前k个物体的最大花费,设dp1 [ i ] 是购买前i个物体的最大优惠,
那么在这i个物体中就可以考虑题目给的优惠方式了,设dp2[ i ]是购买了i个物体,最多可以减少物体的数量
那么对于前i个物体,优惠就是dp1[ i ]和dp1[ j ]+s[ j + dp2[ i - j ] ] - s[ j ]),sum这里是 i - j这部分物体的价钱,因为
我买了前j个物体,此时最大优惠是dp1[ j ],然后剩下的 i - j个物体的优惠是可以减少dp2[ i - j ]个物体的数量
所以剩下的 i - j个 物体只需s[ j + dp2[ i - j ] ] - s[ j ],最后总价格减去最大优惠价格即可。
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+;
int a[maxn],s[maxn],dp1[maxn],dp2[maxn];
int main()
{
int n,m,k,x,y;
cin>>n>>m>>k;
memset(dp1,,sizeof(dp1));
memset(dp2,,sizeof(dp2));
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=;i<=m;i++)
{
scanf("%d %d",&x,&y);
if(x<=k) dp2[x]=max(dp2[x],y);
}
sort(a+,a++n);
for(int i=;i<=k;i++) s[i]=s[i-]+a[i];
for(int i=;i<=k;i++)
{
for(int j=;j<i;j++)
{
dp1[i]=max(dp1[i],dp1[j]+s[j+dp2[i-j]]-s[j]);
}
}
cout<<s[k]-dp1[k]<<endl;
return ;
}
Codeforces Round #552 (Div. 3) F题的更多相关文章
- Codeforces Round #552 (Div. 3) A题
题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...
- Codeforces Round #271 (Div. 2) F题 Ant colony(线段树)
题目地址:http://codeforces.com/contest/474/problem/F 由题意可知,最后能够留下来的一定是区间最小gcd. 那就转化成了该区间内与区间最小gcd数相等的个数. ...
- Codeforces Round #552 (Div. 3) F. Shovels Shop (前缀和预处理+贪心+dp)
题目:http://codeforces.com/contest/1154/problem/F 题意:给你n个商品,然后还有m个特价活动,你买满x件就把你当前的x件中最便宜的y件价格免费,问你买k件花 ...
- Codeforces Round #552 (Div. 3) D题
题目网站:http://codeforces.com/contest/1154/problem/D 题目大意:给出n个数(0或1),还有a , b, a是蓄电池容量,b是电池容量,数为1时蓄电池可以充 ...
- Codeforces Round #552 (Div. 3) C题
题目网址:http://codeforces.com/contest/1154/problem/C 题目意思:小猫吃三种食物,A,B,C,一周吃食物的次序是,A,B,C,A,C,B,A,当小猫该天无食 ...
- Codeforces Round #552 (Div. 3) B题
题目链接:http://codeforces.com/contest/1154/problem/B 题目大意:给出n个数,每个数都可以加上或减去这个一个数D,求对这n个数操作之后当所有数都相等时,D的 ...
- Codeforces Round #552 (Div. 3) F. Shovels Shop(dp)
题目链接 大意:给你n个物品和m种优惠方式,让你买k种,问最少多少钱. 思路:考虑dpdpdp,dp[x]dp[x]dp[x]表示买xxx种物品的最少花费,然后遍历mmm种优惠方式就行转移就好了. # ...
- Codeforces Round #552 (Div. 3) 题解
Codeforces Round #552 (Div. 3) 题目链接 A. Restoring Three Numbers 给出 \(a+b\),\(b+c\),\(a+c\) 以及 \(a+b+c ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
随机推荐
- iptables禁止某个mac地址上网
iptables -I FORWARD -m mac --mac-source 60:14:B3:7D:6B:39 -j DROP 上面这条命令测试过是可行,禁止这个mac地址上网,马上禁止马上生 ...
- 二叉搜索树(BST)学习笔记
BST调了一天,最后遍历参数错了,没药救了-- 本文所有代码均使用数组+结构体,不使用指针! 前言--BFS是啥 BST 二叉搜索树是基于二叉树的一种树,一种特殊的二叉树. 二叉搜索树要么是一颗空树, ...
- php中一个"异类"语法: $a && $b = $c; 【转载】
$a = 1;$b = 2;$c = 3;$a && $b = $c;echo "a:$a";echo "b:$b";echo "c: ...
- Android 开发 存储目录的详解
简介 Android设备,有3个地方的文件存储位置,他们分别是: 内部存储空间(用户无法浏览到此目录) 外部存储空间(就是手机自身的文件管理目录,用户可以浏览) SD卡的存储空间(需要插入T卡) Sh ...
- An error occurred while starting the application.
一..net core 发布后的站点启动报错如下 An error occurred while starting the application. .NET Core 4.6.26328.01 X6 ...
- V先生:信息流广告标题党必备的500个热词
稍微没有全都偏,简直仅仅只永远, 已经曾经就竟然,将要立刻刚偶然, 渐渐终于决忽然,难道连续又再三, 也许必须很非常,最太十分更马上, 越极总挺常常再,屡次一定也不还. 你一定不知道.如何.最.咋.是 ...
- dubbo . dubbo Please check registry access list (whitelist/blacklist) 错误
dubbo Please check registry access list (whitelist/blacklist) dubbo服务调用provider失败.解决办法: 再consumer的服务 ...
- 把一个syn报文给rst掉
下面展示一个极其简单的例子,看如何使用netfilter来将一个指定端口的syn报文给rst掉. //************************************************* ...
- NamedParameterJdbcTemplate
NamedParameterJdbcTemplate 在经典的 JDBC 用法中, SQL 参数是用占位符 ? 表示,并且受到位置的限制. 定位参数的问题在于, 一旦参数的顺序发生变化, 就必须改变参 ...
- leetcode125. Valid Palindrome
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...