CF730F. Ber Patio

CF730F. Ber Patio

Solution

由于∑ai\sum{a_i}ai只有10510^5105,即除掉原有的bbb,代金券最多为10410^4104,因此我们令f[i][j]f[i][j]f[i][j]表示到了第iii天,靠现金获得的代金券共为jjj的最小现金和。

转移时枚举第i+1i+1i+1天用kkk张代金券,其他用现金的方法支付:
upmin(f[i+1][j+(a[i+1]−k)/10],f[i][j]+(a[i+1]−k))upmin(f[i+1][j+(a[i+1]-k)/10],f[i][j]+(a[i+1]-k)) upmin(f[i+1][j+(a[i+1]k)/10],f[i][j]+(a[i+1]k))
显然kkk最大不超过min(ai2,b−(s[i]−f[i][j])+j)min(\frac{a_i}{2},b-(s[i]-f[i][j])+j)min(2ai,b(s[i]f[i][j])+j),能在3s3s3s内解决问题。

Code

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>
#include <cassert>
#include <string.h>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B)
#define PB(A) push_back(A)
#define SIZE(A) ((int)A.size())
#define LEN(A) ((int)A.length())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define fi first
#define se second
#define int llusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; }
template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll;
typedef unsigned long long ull;
typedef long double lod;
typedef pair<int,int> PR;
typedef vector<int> VI;const lod eps=1e-11;
const lod pi=acos(-1);
const int oo=1<<30;
const ll loo=1ll<<62;
const int mods=998244353;
const int MAXN=300005;
const int INF=0x3f3f3f3f;//1061109567
/*--------------------------------------------------------------------*/
inline int read()
{int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f;
}
vector<int> Ans;
int sum=0,f[2][10005],a[5005],s[5005],frm[5005][10005];
signed main()
{int n=read(),b=read();for (int i=1;i<=n;i++) s[i]=s[i-1]+(a[i]=read());for (int i=0;i<=1;i++)for (int j=0;j<=s[n]/10;j++) f[i][j]=INF;f[0][0]=0;int nw=0;for (int i=0;i<n;i++){nw^=1;for (int j=0;j<=s[i]/10;j++) f[nw][j]=INF;for (int j=0;j<=s[i]/10;j++)for (int k=0;k<=min(a[i+1]/2,b-(s[i]-f[nw^1][j])+j);k++) if (upmin(f[nw][j+(a[i+1]-k)/10],f[nw^1][j]+a[i+1]-k)) frm[i+1][j+(a[i+1]-k)/10]=k;}int ans=INF,Nw=0;for (int i=0;i<=s[n]/10;i++) if (upmin(ans,f[nw][i])) Nw=i;printf("%lld\n",ans);for (int i=n;i>=1;i--) Ans.PB(frm[i][Nw]),Nw=Nw-((a[i]-frm[i][Nw])/10);for (int i=n-1;i>=0;i--) printf("%lld ",Ans[i]);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【北京】线下活动 | Azure SQL Database Managed Instance发布会

6/12/2019 | 8.30 AM - 1.30 PM微软大厦一号楼一层故宫会议室N丹棱街5号 海淀区 北京市S尊敬的客户感谢您一直以来对微软的支持&#xff01;诚挚地邀请您参加微软Azure SQL Database Managed Instance &#xff08;SQL Database托管实例&#xff09;在中国北京的发布会。SQL Da…

CF768F. Barrels and boxes

CF768F. Barrels and boxes Solution 又一道据说是套路题。 核心在于枚举WWW的连续段个数为xxx。 然后就能知道FFF的连续段个数为x−1,x,x1x-1,x,x1x−1,x,x1&#xff0c;可以用插板法求出任意把WWW分xxx段的方案数&#xff0c;分xxx段每段WWW至少HHH个的方案数&#xff0c;…

ASP.Net Core MVC 发生二次请求

Bug回忆录昨天搭建新框架的时候&#xff0c;遇到一个很奇怪的“Bug”&#xff0c;每次请求都会触发两次Aciton&#xff0c;举例子吧&#xff0c;Demo&#xff1a;_Layout.cshtmlHomeControllerIndex.cshtml<h1>Hi, Im index page.</h1>最简单不过的代码&#xff0c…

CF1354F. Summoning Minions

CF1354F. Summoning Minions Solution VPVPVP结束十分钟后AC,qwqAC,qwqAC,qwq。 首先因为ai,bi≥0a_i,b_i \geq 0ai​,bi​≥0&#xff0c;所以所有东西全用一次答案不会变劣&#xff0c;留到最后的集合大小一定为kkk。 如果我们知道留到最后的集合Sx1,x2...xkS{x_1,x_2...x…

DDD战略设计相关核心概念的理解

前言本文想再讨论一下关于领域、业务、业务模型、解决方案、BC、领域模型、微服务这些概念的含义和关系。初衷是我发现现在DDD领域建模以及解决方案落地过程中&#xff0c;常常对这些概念理解不清楚或者有歧义&#xff0c;导致我们不知道如何运用这些概念来落地我们的软件。领域…

CF1037H. Security

CF1037H. Security Solution 1 设原串为ststst。 对于单个询问&#xff0c;答案必然是询问串sss的一个前缀s[1..i]s[1..i]s[1..i]加上一个大于s[i1]s[i1]s[i1]的字符ccc构成。 因此我们只需要枚举前缀s[1..i]s[1..i]s[1..i]&#xff0c;枚举字符ccc&#xff0c;快速询问s[1…

Visual Studio容器项目工程化心得

引言  关注博主的网友会看到我使用ASP.NET Core 容器化部署企业级项目的过程&#xff0c; 回想到开发过程中&#xff0c;鄙人有一些工程化心得&#xff0c; 分享给同学们。项目工程化因为本项目涉及单元测试Project、容器化部署、本地化的sqlite数据库&#xff0c;nlog日志&a…

CF1223F. Stack Exterminable Arrays

CF1223F. Stack Exterminable Arrays Solution 奇怪的套路增加了。 大概就是[l,r][l,r][l,r]能匹配完可以转化为[1,l−1][1,l-1][1,l−1]匹配后的状态和[1,r][1,r][1,r]匹配后的状态相同&#xff0c;因此hashhashhash判断即可。 Code #include <vector> #include &l…

从严治码-系统集成项目之根本

从4月份开始&#xff0c;由于备考《系统集成项目管理工程师》的原因&#xff0c;博客没有持续更新&#xff0c;在上半年考试结束之后&#xff0c;又对项目进行了一些收尾的工作。下面就这段时间的学习作一个记录和总结吧。在学习的过程中&#xff0c;提炼了一些自己认为比较重点…

CF924D. Contact ATC

CF924D. Contact ATC Solution 第一波转化挺妙的。 令tlitl_itli​表示用−w-w−w的风到原点的时间&#xff0c;tritr_itri​表示用www的风到圆点的时间。 显然(i,j)(i,j)(i,j)有解的条件为(tli−tlj)(tri−trj)<0(tl_i-tl_j)(tr_i-tr_j)<0(tli​−tlj​)(tri​−trj…

Insider Dev Tour 2019 | 以技术之力,展现传承魅力

世界原本是一个漆黑的山洞的大小&#xff0c;一个“胆大妄为”的人燃起火把&#xff1b;世界原本是一个孤岛的轮廓&#xff0c;一个“野心勃勃”的人扬帆起航&#xff1b;如今&#xff0c;世界的版图已经清晰&#xff0c;是什么让我们走出黑暗与闭塞&#xff0c;从未放下对未知…

免费馅饼 逆向dp

传送门 给你n个馅饼&#xff0c;之后给出n个馅饼掉落时间和位置。一共有11个位置从 0 ~ 10&#xff0c;这人初始在第5个位置&#xff0c;让后每一秒最多能移动一个单位&#xff0c;问这个人能最多能拿多少馅饼。 思路&#xff1a; 有点像数字三角形&#xff0c;但是需要逆着推…

CF840D. Destiny

CF840D. Destiny Solution 发现问题只有询问没有修改&#xff0c;且要维护类似众数的东西&#xff0c;瞟了一眼数据范围n,m≤3e5n,m\leq 3e5n,m≤3e5&#xff0c;果断莫队&#xff0c;一点不虚&#xff0c;写到一半发现删除不好直接维护&#xff0c;用setsetset会多一个loglo…

.NET 之 ORM 性能评测

Why你应该总能听到某ORM性能比Dapper高你应该有如下疑问&#xff1a;基准测试是否权威基准测试的方式是否合理基准测试的标准是否能够统一统一基准测试标准/规范如何进行姿势正确的性能测试相信大家对 Dapper 的性能&#xff0c;以及基准测试的权威性是没有疑问的&#xff08;否…

Loj #6089. 小 Y 的背包计数问题

Loj #6089. 小 Y 的背包计数问题 Solution 似乎是比较套路的东西。 我们发现对于i≤ni\leq \sqrt ni≤n​的部分是一个多重背包&#xff0c;而剩下的部分是一个完全背包&#xff0c;因此考虑分开计算之后合并答案。 part one 当i≤ni\leq \sqrt ni≤n​时&#xff0c;令fi…

CF817E Choosing The Commander 01tire 贪心

看到集合和异或&#xff0c;可以想到01tire(但是我没有想到)。 让后就可以对于每次插入和删除一个数&#xff0c;都在01tire树上操作即可。让后记录一下到当前位(当然是从高位到低位啦)有相同前缀的数的个数。例如样例建图出来大概是这样的&#xff1a; 可以看到从编号为2的点开…

不断进化的分支和需求管理

昨天有朋友在公众号私信问我几个关于代码分支管理的问题&#xff0c;这几个问题是我去年写的《在团队中使用GitLab中的Merge Request工作模式》一文结尾时抛出的几个问题&#xff1a;如果系统上线后有紧急Bug需要处理&#xff0c;这个流程应该怎样去调整&#xff1f;每个任务都…

Loj #6077. 「2017 山东一轮集训 Day7」逆序对

Loj #6077. 「2017 山东一轮集训 Day7」逆序对 Solution 令fi,jf_{i,j}fi,j​表示前iii个数产生jjj个逆序对的方案数&#xff0c;每次考虑把i1i1i1加入&#xff0c;有i1i1i1个插入位置分别产生0..i0..i0..i个新的逆序对。 因此fnf_{n}fn​的生成函数为(1x)(1xx2)…(1x…xn−…

CF56E Domino Principle 树状数组 + 简单dp

一个比较简单的题&#xff0c;但是我还是没做出来(哭。 很容易想到从后往前做&#xff0c;所以我们可以维护一个dp数组f&#xff0c;f(i)表示到第i个牌倒下能达到的最远距离。 f直接倒着跑&#xff0c;每次取[x,xh−1][x,xh-1][x,xh−1]的最大值即可&#xff0c;可以用线段树比…

基于Docker的Consul服务发现集群搭建

在去年的.NET Core微服务系列文章中&#xff0c;初步学习了一下Consul服务发现&#xff0c;总结了两篇文章。本次基于Docker部署的方式&#xff0c;以一个Demo示例来搭建一个Consul的示例集群&#xff0c;最后给出一个HA的架构示范&#xff0c;也会更加贴近于实际应用环境。一、…