2018 ccpc 网络赛总结及部分题解

参加的第一场正儿八经的ACM比赛,从头到尾连开五题最终除了1004签到之外全部凉凉。总结一下,在做题策略上还是不要过于长时间一个人生怼一道题,要注重团队合作的意识,除此之外,能力还是差很多,做题量远远不够,对模型的分析和转化能力待加强。大概就说下开了的那五题吧链接 1001 hdu6438 Buy and Resell题目大意:商人能在N个地方以aiai的价格买入或卖出商品,在每个地方...
摘要由CSDN通过智能技术生成

参加的第一场正儿八经的ACM比赛,从头到尾连开五题最终除了1004签到之外全部凉凉。总结一下,在做题策略上还是不要过于长时间一个人生怼一道题,要注重团队合作的意识,除此之外,能力还是差很多,做题量远远不够,对模型的分析和转化能力待加强。

大概就说下开了的那五题吧

链接 1001 hdu6438 Buy and Resell

题目大意:商人能在N个地方以aiai的价格买入或卖出商品,在每个地方只能做一次交易。要求最大的收益,同时最小化交易次数。(这道题比赛剩二十分钟的时候队友才给我看,突然发现以前做过一道基本差不多的题,然而加入本题要求的天数后一直调试到比赛结束,可惜了)

明白题意后,很显然的想法贪心或着dp,但是发现每一天的状态不仅要受过去和未来两个方面的影响,dp有点不合适。所以采取贪心。因为有买和卖两种情况要考虑,所以我们考虑拆点,并假设一开始每天都是买的,用优先队列存两次,当一个数两次都被pop出去后,表示该价格买入。重点要考虑买入和卖出价格相同时,忽略他们的应对措施,即用该数的编号id区分,每个数出现的次数用map维护,详情见代码。

#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
typedef long long ll;
using namespace std;

int n,x;
ll z;
struct Info
{
    int val;
    int id;
    bool operator<(const Info &aa) const{
        if(aa.val==val)return id<aa.id;
        return val<aa.val;
    }
}a[100010];
priority_queue<Info> q;
map<int,int> ma;
int v[100010];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int cnt=0;
        z=0;
    scanf("%d",&n);
    m
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值