目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  出过很多次:51nodNOIP提高组贪心专题A,牛客寒假多校(不记得那场了),CodeforcesContest865D.  低买高卖,每次只能买入或卖出一件商品,你买得起所有商品,问你最多盈利多少?  ps:FZU2281 Trades是可以买入卖出许多件物品. Solution:  对于当前价格B而言,只要前面有比这个…
[121]Best Time to Buy and Sell Stock (2018年11月25日重新复习) 给一个数组代表股票每天的价格,只能有一次交易,即一次买入一次卖出,求最大收益. 题解:用一个变量维护此时的最大收益和最小成本.遍历数组求值. class Solution { public: int maxProfit(vector<int>& prices) { int minPrice = INT_MAX; ; for (auto ele : prices) { minPr…
题目传送门 题目描述: 有n座城市,每座城市都可以对一个物品进行一次的买进或者卖出,可以同时拥有多个物品,计算利润最大值,并且交易次数要最少.(买入卖出算两次操作) 思路: 建立两个小根堆 优先队列,q1放可以买的物品,q2放可以卖的物品. 如果两个队列都是空的,则把这个物品放入q1. 如果q1是有的,而q2是空的,则把a[i]和q1的顶比一下,如果比他大,则q1 pop一次,把a[i]塞入q2,并且把差值累计到ans上. 如果q1无,q2有,则拿a[i]和q2顶比一下,如果比它大,则把q2顶元…
Buy and Resell Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1126    Accepted Submission(s): 359 Problem Description The Power Cube is used as a stash of Exotic Power. There are n cities numbe…
A - Buy and Resell HDU - 6438 The Power Cube is used as a stash of Exotic Power. There are nn cities numbered 1,2,…,n1,2,…,n where allowed to trade it. The trading price of the Power Cube in the ii-th city is aiai dollars per cube. Noswal is a foxy b…
多少年不写题了... (我把每一天看作是一个商品,第i天是第i个商品) 一开始看了半天看出来一个性质:买的所有商品中最贵的不会比卖的所有商品中最便宜的贵,然后似乎没有什么用处.... 所以最后还是看题解了. 关键在于,从前x天的最优策略必然可以通过至多一次修改得到前(x+1)天的最优策略. (所谓前x天的最优策略就是假设只有前x天,x天之后不再操作时的最优策略) 首先,第(x+1)天如果不进行操作,最优策略必然和前x天的时候一样. 如果进行操作,必然只能在第(x+1)天卖出,那就必须保证在第(x…
写在前面 此题是一个很容易想到的贪心题目,但是正确性的证明是非常复杂的.然而,目前网上所有题解并未给出本题贪心算法的任何正确性证明,全部仅停留在描述出一个贪心算法.本着对算法与计算机科学的热爱(逃),我花了2周时间深入研究了这个问题,并请教了Apass.Jack 大牛,终于在他的帮助下证明了该贪心的正确性.接下来将给出详细地证明过程. PS:Apass.Jack提供了整个证明框架(尽管后来被我发现了一处错误并重新修正了证明),在此表示感谢! 题目描述 给定$n$($n \le 10^5)$个城市…
题目传送门 题目大意: 给定一个素数p,让你重载加法运算和乘法运算,使(m+n)p=mp+np,并且 存在一个小于p的q,使集合{qk|0<k<p,k∈Z} 等于集合{k|0<k<p,k∈Z}. 然后输出两个矩阵,第一个矩阵输出i+j的值,第二个矩阵输出i*j的值.(题意好难懂,你们怎么都看懂了!!) 思路: 由费马小定理得到,当p是质数的时候,ap-1 ≡ 1(mod p),两边同乘以a,也就是说当ap和a在取模p的时候相等 所以(m+n)p=m+n=mp+np(乘法为x*x%p…
题目传送门 题目描述:给出一颗树,每条边都有权值,然后列出一个n的全排列,对于所有的全排列,比如1 2 3 4这样一个排列,要算出1到2的树上距离加2到3的树上距离加3到4的树上距离,这个和就是一个排列的val,计算所有全排列的val和就可以了. 思路:对于一个n的全排列,会发现 任意x-y的边在这个全排列中出现的次数是一样的,(x-y和y到x是不一样的边).也就是说我只需要计算出这个次数,然后再乘以所有边的总和(所有x-y和y-x的和)就可以了. 次数就是 ,(边的总数除以边的种类)化简一下就…
#include<bits/stdc++.h>using namespace std;priority_queue<pair<int,int>>q;int main(){    int t;    int n;    scanf("%d",&t);    while(t--)    {        while(!q.empty())            q.pop();        scanf("%d",&n…