Description

  FJ有N(1 <= N <= 10,000)头奶牛,编号为1到N,站成一条直线。每头奶牛自己的身高(正整数,秘密未知),告诉你最高奶牛的身高H及位置I,同时告诉你R(0 <= R <= 10,000)组信息,每组信息由两个数ai,bi组成,表示奶牛ai可以看到奶牛bi,这就意味着奶牛bi的身高至少和奶牛ai的身高一样高,同时奶牛ai到奶牛bi之间的奶牛身高必须低于奶牛ai
  现在要你求出每头奶牛最高可能的高度,保证有解。

Input

  第1行输入4个空格隔开的整数N,I,H,R
  第2到R+1行,每行两个空格隔开的不同的整数A,B(1<=A,B<=N),表示奶牛A能看到奶牛B

Output

  第1到N行,每行一个整数表示每只奶牛最高可能的高度。

Sample Input

9 3 5 5
1 3
5 3
4 3
3 7
9 8

Sample Output

5
4
5
3
4
4
5
5
5

Hint

解释:如果奶牛A和奶牛B一样高,则可以出现A看到B,B又看到A的情况,如果奶牛A矮于奶牛B,则只可能出现奶牛A看到奶牛B,奶牛B不可能看到奶牛A。

Solution

  • 这题仔细分析,可以发现是一个贪心。

  • 设 F[i]F[i] 表示第 ii 头奶牛的高度,首先把每个 F[i]F[i] 都赋成最高高度。

  • 对于两头相望的奶牛 l,rl,r,它们之间的奶牛高度都要 -1 ,以满足要求。

  • 即:

    F[i]=F[i]−1 (l+1≤i≤r−1)

    F[i]=F[i]-1\ (l+1\leq i\leq r-1)

  • 由于区间不重叠,此方法正确性显然。

  • 由于赋值的次数不确定,可以不处理重复的区间,这样就不会超时了。

Code

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=10001;
int tot;
int first[N],next[N],en[N];
int f[N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
int main()
{int n=read(),s=read(),t=read(),m=read();for(int i=1;i<=n;i++) f[i]=t;while(m--){int x=read(),y=read();if(x>y) swap(x,y);next[++tot]=first[x];first[x]=tot;en[tot]=y;}for(int i=1;i<=n;i++)for(int j=first[i],last=0;j;j=next[j])if(en[j]!=last){for(int k=i+1;k<en[j];k++) f[k]--;last=en[j];}for(int i=1;i<=n;i++) printf("%d\n",f[i]);return 0;
}

JZOJ 1277. 最高的奶牛相关推荐

  1. 【归并排序】奶牛的图片(jzoj 1812)

    奶牛的图片 jzoj 1812 题目大意 给你一个序列,你可以交换相邻的两个数 让你用最少的交换次数来使得这个序列变成形如a+1,a+2...n,1,2...a−1,aa+1,a+2...n,1,2. ...

  2. 【单调栈】奶牛的歌声(jzoj 1256)

    奶牛的歌声 jzoj 1256 题目大意 有n头牛,每头牛的声音可以被两边第一头比他高的牛所听到,音量为S,问听到声音的音量之和最大的牛听到的音量之和是多少 输入样例 3 4 2 3 5 6 10 输 ...

  3. 【数学】奶牛编号(jzoj 2932)

    奶牛编号 jozj 2932 题目大意 求出有m个1的01串中字典序第n大的字典序 输入样例 7 3 输出样例 10110 数据范围 1⩽M⩽101 \leqslant M \leqslant 101 ...

  4. 【DP】和谐的奶牛(jzoj 1750)

    和谐的奶牛 题目大意: 有一些括号(保证是合法的,合法:每一个左括号都有自己配对的有括号),现在要将这些括号分为两组(其中一组可以为空),分完组后括号的顺序要和原来的一样,问有多少种方法使括号分组,结 ...

  5. 奶牛的交叉路(jzoj 1756)

    奶牛的交叉路 题目大意: 有两个数轴,之间有n条线分别连接着两个数轴的点各一个,这些线可能会相交,问有多少条线没有和其他点相交 样例输入 4 -3 4 7 8 10 16 3 9 样例输出 2 数据范 ...

  6. jzoj 1388. 【2012.02.25普及组】探索的奶牛

    题目描述 FJ的奶牛喜欢探索农场周围的地形.一开始,所有N(1<=N<=1,000,000,000)只奶牛一起出发,但当碰到路口时,这一群牛可能会分成两部分(不能为空),每一部分都继续前进 ...

  7. 【最大流】牛棚安排(jzoj 1259)

    牛棚安排 jzoj 1259 题目大意: 有nnn头牛和mmm个牛棚,每头牛有自己第1喜欢,第2喜欢--第mmm喜欢的牛棚(开心度分别为m,m−1,m−2--1m,m-1,m-2--1m,m−1,m− ...

  8. JZOJ·滑雪场的缆车【DP】

    JZOJ 1257 滑雪场的缆车 Description-- Input-- Output-- Sample Input-- Sample Output-- 说明-- 解题思路-- 代码-- Desc ...

  9. 2021-2027全球与中国奶牛冻精市场现状及未来发展趋势

    [报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国奶牛冻精行业市场行业相关概述.全 ...

最新文章

  1. 告别2017!2018投影市场变革机遇与挑战并存
  2. python的os模块使用_Python之os模块的常见用法
  3. 十八般武艺玩转GaussDB(DWS)性能调优(二):坏味道SQL识别
  4. VC 获取当前工作目录和执行目录的一些方法
  5. 直降500+24期免息!天猫双11全线iPhone打折
  6. 【原创】通俗易懂地解决中文乱码问题(1) --- 跨平台乱码
  7. VS2012一打开就停止工作的解决方法
  8. 要运行python程序要安装什么_windows下面如何安装运行python程序
  9. 谷歌了java集成开发_Spring整合Kaptcha谷歌验证码工具的开发步骤
  10. [渝粤教育] 西南科技大学 机床电气控制技术 在线考试复习资料
  11. 出售 Mac 时做好哪些准备?
  12. protues 仿真 12864转OLED接法
  13. 十年股市投资回顾与反思
  14. 【大数据】Linkis是什么呢
  15. 【烈日炎炎战后端】MySQL编程(3.6万字)
  16. 周志明架构课--01.原始分布式时代
  17. Python爬取当当网APP数据
  18. 日记侠:微信最简单最轻松的赚钱模式
  19. plc 滑台流程图_直线滑台模组PLC控制说明
  20. 论文阅读 (84):A GAN-based Algorithm for Multi-Instance Multi-Label Learning on Overlapping Signal Wavefo

热门文章

  1. 图像处理中的拉普拉斯算子
  2. 转)使用C/C++扩展Python
  3. php mysql explain_Mysql分析-explain的详细介绍
  4. [云炬创业基础笔记]第九章企业的法律形态测试4
  5. [云炬创业基础笔记]第二章创业者测试13
  6. [MATLAB粒子模拟笔记]差分泊松方程求静电场分布
  7. 为什么开了数据不能上网_Doinb和LCK选手双排为什么不能开语音?Doinb深夜道出实情...
  8. C/C++中extern关键字详解与应用
  9. 各个数据库的取一表前N条记录不同SQL写法
  10. TADOStoredProc返回多个数据集