http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1538

很奇妙的一个题,开始没有思路.问了别人才知道.

题目的意思可以理解成上图中,从0点开始向右走,走到n+1点需要最少步数。思路是:因为走某些点时,必须先走另外一点,所以可以用贪心算法,将限制条件可以看成区间,求出它们的并集,如下图:

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<cmath>
#include<cstdio>
using namespace std;
const int maxn=;
int l[maxn],r[maxn],vis[maxn];
int c[maxn],d[maxn];
int main()
{
//freopen("a.txt","r",stdin);
int n,m;
while(~scanf("%d%d",&n,&m))
{
for(int i=;i<=n;i++)
l[i]=i,r[i]=i;
memset(vis,,sizeof(vis));
for(int i=;i<m;i++)
{
scanf("%d%d",&c[i],&d[i]);
l[d[i]]=c[i];
r[c[i]]=d[i];
vis[c[i]]=vis[d[i]]=;
}
int flag=,last=,ans=,lx,rx;
for(int i=;i<=n;i++)
{
if(!vis[i]) continue;
//printf("%d\n",ans);
if(!flag) //从起始点到第一个被标记的点
{
flag=;
ans+=i-last;
lx=i;
rx=r[i]; //向右延伸
}
else if(rx<l[i])
{
// printf("%d %d\n",last,lx);
ans+=i-rx;
ans+=(rx-lx)*;
last=i;
lx=l[i];
rx=r[i];
}
else if(rx>l[i]&&rx<r[i]) //有交集 求出交集
{
rx=r[i];
}
}
//printf("%d %d %d\n",rx,lx,last);
ans+=(n+-rx);
ans+=*(rx-lx);
printf("%d\n",ans);
}
return ;
}

csu - 1538: Shopping (贪心)的更多相关文章

  1. Codeforces Gym 100803C Shopping 贪心

    Shopping 题目连接: http://codeforces.com/gym/100803/attachments Description Your friend will enjoy shopp ...

  2. [csu/coj 1083]贪心

    题意:给定n个线段,问能不能把x,y,z个长度为1,2,3的线段不重合地放进去. 思路:首先如果n个线段长度比要放的长度之和小,则无解,否则先考虑放2和3,如果2和3放下了1肯定可以放下(这是显然的) ...

  3. UVaLive 6834 Shopping (贪心)

    题意:给定 n 个商店,然后有 m个限制,去 c 之前必须先去d,问你从0到n+1,最短路程是多少. 析:我们我们要到c,必须要先到d,那么举个例子,2 5, 3 7,如果我们先到5再到2,再到7再到 ...

  4. 牛客国庆集训派对Day3 Solution

    A    Knight 留坑. B    Tree 思路:两次树形DP,但是要考虑0没有逆元 可以用前缀后缀做 #include <bits/stdc++.h> using namespa ...

  5. 【贪心】CSU 1809 Parenthesis (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 题目大意: 给一个长度为N(N<=105)的合法括号序列.Q(Q<= ...

  6. ACM学习历程—CSU 1216 异或最大值(xor && 贪心 && 字典树)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1216 题目大意是给了n个数,然后取出两个数,使得xor值最大. 首先暴力枚举是C(n,  ...

  7. 贪心 UVALive 6834 Shopping

    题目传送门 /* 题意:有n个商店排成一条直线,有一些商店有先后顺序,问从0出发走到n+1最少的步数 贪心:对于区间被覆盖的点只进行一次计算,还有那些要往回走的区间步数*2,再加上原来最少要走n+1步 ...

  8. CSU 1859 Gone Fishing(贪心)

    Gone Fishing [题目链接]Gone Fishing [题目类型]贪心 &题解: 这题要先想到枚举走过的湖,之后才可以贪心,我就没想到这,就不知道怎么贪心 = = 之后在枚举每个湖的 ...

  9. csu 1749: Soldiers ' Training(贪心)

    1749: Soldiers ' Training Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 37  Solved: 18[Submit][Stat ...

随机推荐

  1. Aspose.Word 的常见使用(2018-12-26 更新版)

    Aspose.Word 的常见使用 起因 因项目需要,而且使用html转Word的时候,样式不兼容问题,于是只能使用Aspose.Word通过代码生成.下面是通过DocumentBuilder来设计W ...

  2. 【原】无脑操作:Eclipse + Maven + jFinal + MariaDB 环境搭建

    一.开发环境 1.windows 7 企业版 2.Eclipse IDE for Enterprise Java Developers  Version: 2019-03 (4.11.0) 3.JDK ...

  3. springmvc 获取数组

    spingmvc 获取数据有这几种方式:1.通过HttpRequestServlet的方法获取数据.2.form表单传递对象字段,springmvc自动获取.3.ajax 请求通过注解的方式直接获取数 ...

  4. myslq 5.7 root 默认密码

    sudo sumysqld_safe --skip-grant-tables --skip-networking & UPDATE mysql.user SET password=PASSWO ...

  5. C/C++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算

    一.各进制赋值 1.十六进制赋值 int i=0x12AD; int i=0X12AD; int i=0x12Ad; int i=0X12Ad; //以上都是十六进制,表示十进制173: 2.八进制赋 ...

  6. [分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡

    本文转自迅为开发板:http://www.topeetboard.com 开发平台:iMX6开发板 linux QT 系统下挂载 u 盘如下图所示,qt 启动之后,在超级终端中使用命令“mknod / ...

  7. 迅为7寸工业触摸屏嵌入式平台可用于ARM嵌入式一体机

    7寸触摸屏介绍产品名称:7寸IPS高清屏幕分辨率:1280*800触摸屏类型:电容屏(五点触摸)接线方式: FPC 可应用于嵌入式一体机.自动售货机.广告机.智能自动终端.零售终端等 ARM平台处理器 ...

  8. sql 语句的优化

    sql语句的优化:在大多数情况下,为了更快的遍历表结构,优化器主要是根据定义的索引来提高性能.但是在不合理的SQL语句中,优化器会删去索引进而使用全表扫描, 一般而言,这种sql被称为劣质sql,所以 ...

  9. laravel socialite微信登录注意

    在token没有过期之前,重新走登录流程时会跳过callback,即不再重新登录,除了删除了客户端的token

  10. vue工程化与路由router

    一.介绍     vue.js 是 目前 最火的前端框架,vue.js 兼具 angular.js 和 react.js 的优点,并剔除它们的缺点.并且提供了很多的周边配套工具 如vue-router ...