题目链接 题意 : 给出一些数.你可以从左到右对这些数进行三种操作花费 Ai 买入东西.以 Ai 价格卖出你当前有的东西.或者什么都不做.现在问你可以获取的最大利益是多少? 分析 : 和 CF 867E 一模一样 传送门 可以去搜这题的题解.有很多 对于每个元素产生的贡献 可以先算出暂时的最优值 如果下次碰到更优的选择再进行替换 具体就是首先使用小顶堆维护枚举过的元素 然后对于当前枚举到的元素 用它和堆顶元素做对比.如果小于或等于堆顶元素 那么它无法和之前枚举过的所有元素的任何一个做减法产生贡献…
题目链接 题意 : 给出一个 n 个元素的环.可以任意选择起点.选完起点后.可以行走 m 步.每次前进 k 个单位.所走到的点将产生正或负贡献.问你一开始得准备多少才能使得初始资金加上在环上获取最大利益不少于给定的 s 分析 : 对于一个环.固定步数下是有循环节的 不同循环节内的节点各不相同 根据裴蜀定理可得每个循环节的长度为 n / gcd(n, k) 所以共有 gcd(n, k) 个循环节 然后我们暴力扒出每一个循环节 循环节里面的元素放到一个新数组中.使其相邻 然后通过收尾相连接的方法模拟…
2018 CCPC网络赛 Buy and Resell 题目描述:有一种物品,在\(n\)个地点的价格为\(a_i\),现在一次经过这\(n\)个地点,在每个地点可以买一个这样的物品,也可以卖出一个物品,问最终赚的钱的最大值. solution 用两个堆来维护,一个堆维护已经找到卖家的,一个堆维护还没找到卖家的. 对于第\(i\)个地点,在已经找到卖家的堆里找出卖的钱的最小值,如果最小值小于\(a_i\),则将卖家换成\(i\),然后将原来的卖家放到没找到卖家的那里:如果最小值对于\(a_i\)…
题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列,q1放可以买的物品,q2放可以卖的物品. 如果两个队列都是空的,则把这个物品放入q1. 如果q1是有的,而q2是空的,则把a[i]和q1的顶比一下,如果比他大,则q1 pop一次,把a[i]塞入q2,并且把差值累计到ans上. 如果q1无,q2有,则拿a[i]和q2顶比一下,如果比它大,则把q2顶元…
The Power Cube is used as a stash of Exotic Power. There are n cities numbered 1,2,…,n where allowed to trade it. The trading price of the Power Cube in the i-th city is ai dollars per cube. Noswal is a foxy businessman and wants to quietly make a fo…
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j],dp[i-1][j-1]+val[i][j]) ,但是很明显离散化后也无法储存这些点,我们可以用树状数组对这个状态转移公式进行优化,我们先以y轴为第一优先级从小到大排序,以x轴为第二优先级从大到小排序,对x轴坐标进行离散化,这样我们就只需要维护x轴上的最大值即可,状态转移方程可优化为: dp[i…
高卖低买,可以交易多次 维护一个优先队列,贪心 相当于每天卖出 用当前元素减优先队列最小得到收益 用0/卖出,1/买入标志是否真实进行了交易,记录次数 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll A[]; #define P pair<ll,ll> priority_queue<P,vector<P>,greater<P> > q; int main(…
传送门 •参考资料 [1]:HDU6438(优先队列+思维) •题意 有n个城市,第 i 天你会达到第 i 个城市: 在第 i 个城市中,你可以用 ai 元购买一个物品,或者用 ai 元卖掉一个物品,你可以同时保存多个物品. 最开始你身上没有物品,但是有无限的金钱: 让你求从城市 1 走到城市 n,最大的收益以及最少的交易次数. •题解 假设你当前在第 i 个城市,这个城市的物价为 $a_i$ 元: 但是你要不要购买这个物品呢? 因为我们不确定第 i+1~n 个城市是否有物价高于 $a_i$ 的…
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6438 获得最大的利润,将元素依次入栈,期中只要碰到比队顶元素大的,就吧队顶元素卖出去,答案加上他们期中的差值,并把新加入的元素用map标记为中间变量,若以后再卖出这件物品,可看做直接由之前的最小值卖出,而该中间变量重新入队,当做从未买卖过: 因为买入=买出,故输出只需将times*2即可: 也可在每个元素入队和交易最小变量时都times++,结果输出时减去队内元素数目即可: #include<ios…
The Power Cube is used as a stash of Exotic Power. There are n cities numbered 1,2,…,n where allowed to trade it. The trading price of the Power Cube in the i-th city is ai dollars per cube. Noswal is a foxy businessman and wants to quietly make a fo…