【题目背景】

小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎。

【问题描述】

现在有m+1个星球,从左到右标号为0到m,小奇最初在0号星球。

有n处矿体,第i处矿体有ai单位原矿,在第bi个星球上。

由于飞船使用的是老式的跳跃引擎,每次它只能从第x号星球移动到第x+4号星球或x+7号星球。每到一个星球,小奇会采走该星球上所有的原矿,求小奇能采到的最大原矿数量。

注意,小奇不必最终到达m号星球。

【输入格式】

第一行2个整数n,m。

接下来n行,每行2个整数ai,bi。

【输出格式】

输出一行一个整数,表示要求的结果。

【样例输入】

3 13

100 4

10 7

1 11

【样例输出】

101

【样例解释】

第一次从0到4,第二次从4到11,总共采到101单位原矿。

【数据范围】

对于20%的数据 n=1,m<=10^5

对于40%的数据 n<=15,m<=10^5

对于60%的数据 m<=10^5

对于100%的数据 n<=10^5,m<=10^9,1<=ai<=10^4,1<=bi<=m

题解:
  还是写一下题解,不然一道题目一下子改完还一点收获都没有。

  首先暴力DP十分简单,dp[M]表示到M这个点还最多可以得到多少,但是空间开不下。看到n只有1*10^5,所以复杂度了要不包括m,打表找规律发现对于位置 i 正真到不了的地方只有可能出现在i+1~i+18之中,而之后的点都一定存在路径可以到达,所以设dp[i]表示到达i的最大收益,那么我们只要用上述方法写一个check函数,只要合法的点都可以进行转移即:dp[i]=max(dp[j]+w[i])(j从1~i-1&&可以到)。

  但这是n^2的,把原式改成dp[i]=max(dp[j])+w[i],那么显然可以用优先队列找到最大的合法的j。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <queue>
#define MAXN 200100
using namespace std;
struct kuang{
int id,v;
}a[MAXN],b[MAXN];
struct heapnode{
int id,v;
bool operator < (const heapnode&x)const{
return x.v>v;
}
}t[MAXN];
int N,m,n=;
priority_queue<heapnode> q;
bool cmp(kuang x,kuang y){
return x.id<y.id;
}
bool check(int x,int y)
{
if(y==x+||y==x+||y==x+) return ;
if(y==x+||y==x+||y==x+) return ;
if(y==x+||y==x+||y==x+) return ;
return ;
}
int main()
{
scanf("%d%d",&N,&m);
for(int i=;i<=N;i++) scanf("%d%d",&a[i].v,&a[i].id);
sort(a+,a+N+,cmp);
for(int i=;i<=N;i++){
if(a[i].id!=a[i-].id) b[++n].id=a[i].id,b[n].v=a[i].v;
else b[n].v+=a[i].v;
}
while(!q.empty()) q.pop();
q.push((heapnode){,});
for(int i=;i<=n;i++){
int cnt=,f=;
while(!q.empty()){
heapnode x=q.top();
q.pop(),t[++cnt]=x;
if(check(x.id,b[i].id)){
f=x.v+b[i].v;break;
}
}
for(int j=;j<=cnt;j++) q.push(t[j]);
q.push((heapnode){b[i].id,f});
}
printf("%d\n",q.top().v);
return ;
}

 

【NOIP模拟赛】小奇挖矿 2的更多相关文章

  1. [CSP-S模拟测试]:小奇挖矿2(DP+赛瓦维斯特定理)

    题目背景 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市场,以便为飞船升级无限非概率引擎. 题目描述 现在有$m+1$个星球,从左到右标号为$0$到$n$,小奇最初 ...

  2. noip模拟赛 小Y的问题

    [问题描述]有个孩子叫小 Y,一天,小 Y 拿到了一个包含 n 个点和 n-1 条边的无向连通图, 图中的点用 1~n 的整数编号.小 Y 突发奇想,想要数出图中有多少个“Y 字形”.一个“Y 字形” ...

  3. [noip模拟赛]小U的女装

    https://www.zybuluo.com/ysner/note/1329304 题面 有一张\(n\)点\(m\)边的.不一定联通的无向图. 如果选了一条边,就不能选其两个端点. 现在同时选点和 ...

  4. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  5. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  6. CH Round #55 - Streaming #6 (NOIP模拟赛day2)

    A.九九归一 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2355%20-%20Streaming%20%236%20(NOIP模拟赛day2)/九九归一 题 ...

  7. CH Round #54 - Streaming #5 (NOIP模拟赛Day1)

    A.珠 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20(NOIP模拟赛Day1)/珠 题解:sb题, ...

  8. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  9. Nescafe #29 NOIP模拟赛

    Nescafe #29 NOIP模拟赛 不知道这种题发出来算不算侵权...毕竟有的题在$bz$上是权限题,但是在$vijos$似乎又有原题...如果这算是侵权的话请联系我,我会尽快删除,谢谢~ 今天开 ...

  10. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

随机推荐

  1. python自学Day02(自学书籍python编程从入门到实践)

    第三章 列表简介 3.1 列表是什么 按特定顺序排列的元素组成. 元素类型可以是任意数据类型. 元素之间没有任何的关系. 在python中用中括号 [] 括起来并用 ,号隔开 3.1.1 访问列表元素 ...

  2. Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵基础实战

    Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵基础实战 Springboot: 2.1.8.RELEASE SpringCloud: Greenwich.SR2 ...

  3. 2018web前端面试总结

    从今年3月份开始面试笔试找实习找校招到现在也半年多了,拿到了不少offer,也有了自己的一点心得体会,这里写出来分享一下,拙见勿喷. 注意一下,以下的观点仅代表我个人的体会不代表任何人任何组织和任何公 ...

  4. Sublime运行C++程序教程

    前言 传说sublime是全球最好的编辑器,可是只是编辑器啊!!!如果要运行,对于我们这些蒟蒻来说,不得不去使用DEV_C++.我们总是幻想能让sublime变成一个轻量级IDE,那该多好啊!!! 那 ...

  5. Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)

    场景 Winform中DevExpress的TreeList的入门使用教程(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  6. input和btton的相互使用————小程序

    input和btton的相互使用----小程序 index.js data: { userxx:'1111', }, changeSum(){ // this.data.userxx="ch ...

  7. 01:***VideoToolbox硬编码H.264

    最近接触了一些视频流H264的编解码知识,之前项目使用的是FFMpeg多媒体库,利用CPU做视频的编码和解码,俗称为软编软解.该方法比较通用,但是占用CPU资源,编解码效率不高.一般系统都会提供GPU ...

  8. List之ConcurrentModificationException异常

    一.前言 Java开发工作中,集合类ArrayList应该是使用非常频繁了.在使用过程中,可能会遇到迭代删除的需求场景,此时如果代码书写不当,就会抛出 java.util.ConcurrentModi ...

  9. pyhon 浅copy

    一般python的copy是没有用的, 但是让你熟悉浅copy给你举个清晰的例子 person = ["name",["money",100]] p1 = pe ...

  10. HNU_中小学数学卷子自动生成程序(个人项目)简要分析

    一.前言 首先,在这里特别感谢我的结对编程伙伴HnuLyx,他在算法上和设计思路上都与我有很大的不同,个人项目互评中,为我的项目提出了很多很好的建议,让我在认清自己不足的同时,了解到很多以前没有注意的 ...