River Jumping【贪心+模拟】

2023-11-04

题目链接


  我们可以贪心的从前往后,每次选最接近的且满足条件的这样的贪心,然后从后往前的时候,就是直接用倒着一个个判断是否合法即可。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
#include <unordered_map>
#include <unordered_set>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxN = 1e5 + 7;
int N, M, S, a[maxN], col[maxN];
set<int> st;
set<int>::iterator it;
vector<int> ans;
int main()
{
    scanf("%d%d%d", &N, &M, &S);
    for(int i=1; i<=M; i++) { scanf("%d", &a[i]); col[a[i]] = i; }
    a[++M] = N; a[0] = 0; col[N] = M; col[0] = 0;
    for(int i=0; i<=M; i++) st.insert(a[i]);
    bool ok = true; int pos = 0;
    while(ok && pos ^ N)
    {
        it = st.lower_bound(pos + S);
        if(it == st.end()) { ok = false; break; }
        pos = *it;
        ans.push_back(col[pos]);
        st.erase(it);
    }
    int nex_pos;
    while(!st.empty())
    {
        nex_pos = *st.rbegin();
        if(pos - nex_pos < S) { ok = false; break; }
        ans.push_back(col[nex_pos]);
        pos = nex_pos;
        st.erase(nex_pos);
    }
    if(pos) ok = false;
    int len = (int)ans.size();
    if(ok && len == M + 1)
    {
        printf("YES\n");
        for(int i=0; i<len; i++) printf("%d%c", ans[i], i == len - 1 ? '\n' : ' ');
    }
    else printf("NO\n");
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

River Jumping【贪心+模拟】 的相关文章

  • POJ--1328:Radar Installation (贪心)

    1 题目源地址 http poj org problem id 1328 2 解题思路 该题题意是为了求出能够覆盖所有岛屿的最小雷达数目 每个小岛对应x轴上的一个区间 在这个区间内的任何一个点放置雷达 则可以覆盖该小岛 区间范围的计算用 x
  • 【NOIP 2004 提高组】合并果子

    题就自己找啦 各大OJ上应该都有 题目 题目描述 在一个果园里 多多已经将所有的果子打了下来 而且按果子的不同种类分成了不同的堆 多多决定把所有的果子合成一堆 每一次合并 多多可以把两堆果子合并到一起 消耗的体力等于两堆果子的重量之和 可以
  • Working routine【Codeforces 706 E】【二维链表】

    Codeforces Round 367 Div 2 E 可以说是一道模拟题了 写了有些时候 可能是太菜了吧 题意 给出一个原始矩阵 之后有Q次操作 我们将两个矩阵交换位置 题目中保证两个矩阵不相交 给出的是两个矩阵的左上方的端点 以及它们
  • Happiness【2019EC Final G题】【模拟】

    题目链接 题意很长 先翻译一下 由N个参赛队伍 给出其余N 1只参赛队伍 另外一支队伍是我们 本次ICPC一共有10道题 我们知道其余N支队伍每道题的通过时间和错误次数 如果是 则为没有在300分钟内解决该问题 最后给出我们队伍 做出每道题
  • 大数乘法 V2

    给出2个大整数A B 计算A B的结果 Input 第1行 大数A 第2行 大数B A B的长度 lt 100000 A B gt 0 Output 输出A B 如果用正常的大数乘法来做 会发现时间复杂度是的 显然是会TLE的 为了避免这种
  • River Jumping【贪心+模拟】

    题目链接 我们可以贪心的从前往后 每次选最接近的且满足条件的这样的贪心 然后从后往前的时候 就是直接用倒着一个个判断是否合法即可 include
  • Acesrc and Hunting【模拟 贪心】

    HDU 6660 题目链接 这道题主要就是讲我们从任意点出发 每次走的都是没走过并且 曼哈顿距离大于1小于3的点 然后问能不能覆盖完整幅图 这里就想到一个很经典的问题 4399小游戏除草游戏 以前玩过的一个小游戏倒是让我对这道题的解法有了方
  • Business Cycle 【UVALive - 7501】【二分答案+思维处理】

    题目链接 14年的EC 银牌题 但是现在的大牛们进步神速 估计如今已经是道铜牌题了 具体我们先讲一下题意 一个长度为N的自环圈 每个点 1 N 上有自己对应的权值 可能为负数 我们用一个初始值进入这个环 每次走到一个节点的时候会加上这个节点
  • 璀璨光滑【牛客】【题意解析+BFS+贪心】

    题目链接 中文题意 表面平静 实则暗藏玄机 而打开本题的突破口 也确确实实就在于题目的描述 也就是说 这张图的边的数目是确定的 并且这是一张连通图 而且图上的个点每个点连接出去的边的数目都是条 因为每个数都刚好只与个数在二进制位上差1 那么
  • 2.26—— 问题 B: 回文日期

    题目描述 在日常生活中 通过年 月 日这三个要素可以表示出一个唯一确定的日期 牛牛习惯用8位数字表示一个日期 其中 前4位代表年份 接下来2位代表月份 最后2位代表日期 显然 一个日期只有一种表示方法 而两个不同的日期的表示方法不会相同 牛
  • AcWing 422. 校门外的树

    题目 某校大门外长度为L的马路上有一排树 每两棵相邻的树之间的间隔都是1米 我们可以把马路看成一个数轴 马路的一端在数轴0的位置 另一端在L的位置 数轴上的每个整数点 即0 1 2 L 都种有一棵树 由于马路上有一些区域要用来建地铁 这些区
  • 货仓选址(贪心)

    我之前在多篇博客中提到货仓选址 却发现从未仔细介绍过货舱选址 今天就来好好说一下货舱选址这个问题 就以这个图来说 我们假设Ap 1 gt x gt Ap 那么距离之和也就是 x A1 x A2 x Ap A p 1 x A p 2 x An
  • Codeforces 1469 F. Power Sockets —— 二分+线段树,贪心

    This way 题意 现在有一个根节点 和n条包含a i 个节点的链 一开始所有点的颜色是白色的 你每次可以做以下操作 找到树中某个白色节点 拿出一条链 将这个节点和链上某个节点连接 并且这两个点的颜色变成黑色 之后这条链属于树中一个部分
  • 如何在PC上查看一个web页面在移动端的展示效果

    最近在chrome上发现一个东东 emulation 这个果断可以用来模拟web页面在移动端的显示结果 F12的界面 点击 Show drawer 就可以看到这个界面了 这里可以选择各种设备 选中之后 点击emulate就可以模拟了 这个就
  • 猜数字小游戏(JAVA)

    猜数字小游戏 题目描述 代码 运行效果 新增功能 思路 代码 运行效果 题目描述 猜数字 又称 Bulls and Cows 是一种古老的的密码破译类益智类小游戏 起源于20世纪中期 一般由两个人或多人玩 也可以由一个人和电脑玩 通常由两个
  • AcWing 1247. 后缀表达式

    老师的讲课网址 https www acwing com video 736 第二个图就已经告诉我们只要有一个减号 我们就可以组成至少含一个减号的所有组合 比如说一个减号三个加号我们可以组合成 1 2 3 4 所以代码如下 include
  • Basic Level 1016 部分A+B (15分)

    题目 正整数 A A A的 D A D A DA 为1位整数 部分 定义为由 A
  • “字符串的展开”【题解】

    字符串的展开 的题目 题目 题目描述 在初赛普及组的 阅读程序写结果 的问题中 我们曾给出一个字符串展开的例子 如果在输入的字符串中 含有类似于 d h 或者 4 8 的字串 我们就把它当作一种简写 输出时 用连续递增的字母或数字串替代其中
  • 编程之美2015初赛第二场AB

    题目1 扑克牌 时间限制 2000ms 单点时限 1000ms 内存限制 256MB 描述 一副不含王的扑克牌由52张牌组成 由红桃 黑桃 梅花 方块4组牌组成 每组13张不同的面值 现在给定52张牌中的若干张 请计算将它们排成一列 相邻的
  • [POI2007]砝码Odw

    看这数据范围就不太可DP的样子 考虑贪心 首先注意到题目里有对于任意两个砝码其中一个是另一个质量整数倍的条件 所以砝码质量的种类不超过log INF 考虑按质量从小到大把砝码往容器里放 这样的话所有的砝码和容器的质量都可以除以当前砝码质量然

随机推荐

  • C++像素游戏

    我的作品 鼠标板 黑科技之橡素 代码 include
  • Verilog语言实现FPGA上的计数器

    Verilog语言实现FPGA上的计数器 计数器是数字电路中经常使用的基本元素之一 它用于生成指定脉冲数量或者指定计数范围内的计数信号 在现代数字电路设计中 FPGA Field Programmable Gate Array 作为一种可编
  • QT+Opencv 时报错Failed to load module “canberra-gtk-module“

    解决方案 sudo apt get install libcanberra gtk module
  • 二维数组作为参数,传入函数(最好用的)

    二维数组作为参数 传入函数 最好用的 很多时候我都是直接通过传入一个 固定的数字来传递一个二维数组 比如这样子定义函数 int fun int a 3 int n 调用函数是 fun a n 这样子调用的二维数组只能是固定已经知道的 不够灵
  • 使用Kettle实现数据排序

    一 Kettle的安装 1 下载Kettle的安装包文件 在Windows系统中打开浏览器 访问Kettle官网 https sourceforge net projects pentaho 下载Kettle安装文件pdi ce 9 1 0
  • 最大公约数、最小公倍数、辗转相除法的求解和证明

    两个正整数的最大公约数 Greatest Common Divisor GCD 在计算机中通常使用辗转相除法计算 最小公倍数 Least Common Multiple LCM 可以使用GCD来计算 下面首先介绍GCD和LCM 然后介绍辗转
  • node.js解析xml(xmlreader)

    博客搬家 由于各种原因 我现在的博客将首发于blog mojijs com 可以百度搜索 姜哥的墨迹技术博客 或者 点击这里 本文地址 http blog mojijs com post 19 html xml作为一种重要的数据交换格式 我
  • 图书库毕业设计网页增删改查源码

    介绍 使用HTML VUE PHP MYSQL写的一个简单图书库 实现了简单的数据库增删改查 以及数据列表的展示 源码里包含了前端文件 和api文件 还有数据库表文件 搭建好环境 导入数据库 配置好数据库链接即可直接运行 学习资料地址 ht
  • javaswing基本使用

    package exam test1 import javax swing import java awt import java awt event ActionEvent import java awt event ActionList
  • 三态门——概念,作用,原理

    介绍一下三态门的概念 作用 原理 目录 三态门的概念 三态门的作用 实现总线结构 实现双向数据传输 三态门的原理 三态门的概念 三态门是指逻辑门的输出有三种状态 高电平状态 低电平状态 高阻状态 其中 高阻状态相当于隔离状态 因为高阻状态电
  • linux x64 asm 参数传递,x64 ASM 常用汇编指令

    语法习惯 立即数 开头 寄存器 开头 取地址里面的值 偏移量 寄存器 除了 lea 取地址指令 外 lea就是取地址 load effecive address 整形操作通用后缀 后缀 b w l q 1 2 4 8 byte word l
  • spring源码之@Autowired属性注入

    注入现象 当我们在属性上面加上 Autowired的时候 spring就要根据Type来注入实例了 那么到底会找哪个实例的如果有多个怎么办 今天就来实验一下 多接口注入 当注入的属性接口下有多个实现 这个时候运行的话是 public cla
  • npm link实操详细指南

    准备 首先我们需要有两个npm包 一个作为依赖包 一个作为应用包 依赖包 deps 应用包 app 然后仔仔细细的看一下依赖包的包名和输出路径 如main 好几次用法不对都是因为main字段配置的路径有问题 如我的依赖包package js
  • 多线程(Threading)和多进程(Multiprocessing)

    多线程和多进程 线程和进程是什么 进程间通信方式 线程间通信方式 死锁 Python多线程 Threading 什么是多线程 基本方法函数 join Queue 继承使用线程 同步 GIL锁 锁 Python多进程 多核 Multiproc
  • java.lang.ClassCastException的java类型转换异常解决方案

    在项目中 需要使用XStream将xml string转成相应的对象 却报出了java lang ClassCastException com model test cannot be cast to com model test的错误 原
  • 钟汉良日记:什么副业最好?可以持续带来复利效应的技能,写作!

    2022年9月3日 周六 大晴天 看到一些人做抖音 做自媒体发财了 你是不是也挺羡慕的 可是真要你也去拍摄短视频 做直播真人出镜 大多数人又做不到 怎么办 我觉得 大家还是要认识到一点 打铁还需自身硬 你如果没有足够的对应的能力 只能做一个
  • 【从零开始的Java开发】2-10-2 Servlet入门:Servlet开发步骤、请求参数的发送与接收、Get和Post、注解

    文章目录 概述 软件结构发展史 Tomcat与Servlet Servlet 第一个Servlet JavaWeb工程结构 Servlet开发步骤 请求参数的发送与接收 Get和Post请求方法 Servlet生命周期 使用注解简化配置 启
  • 在Unity中双击打不开vs脚本文件

    从官网下载软件后 创建新项目后 容易漏掉这个设置 导致双击脚本打不开 解决方法 点击找到Edit gt Preferences gt External Tool gt External Script Editor 将对应设置改成你所下载的v
  • 11. TypeScript 条件类型

    TypeScript 条件类型 1 条件类型基本使用 可以使用extends关键字和三元表达式 实现条件判断 interface Fish name1 string interface Water name2 string interfac
  • River Jumping【贪心+模拟】

    题目链接 我们可以贪心的从前往后 每次选最接近的且满足条件的这样的贪心 然后从后往前的时候 就是直接用倒着一个个判断是否合法即可 include