COCI CONTEST #3 29.11.2014 T2 DOM
2015-09-10 21:09
225 查看
第二题:
题目描述
在一个养老院,有n个老人在看电视。电视有m个频道,编号为1,2,……,m。每个老人都有一个最喜欢的频道和一个最讨厌的频道。如果电视正在放的频道是某个老人最讨厌的,那么他会起身把电视调成自己最喜欢的频道。如果有多个老人都最讨厌那个频道,则最年轻的那个老人会起身去调台,其他老人就不会动。如果换了台以后,当前播放的频道又是某个老人讨厌的,则那个老人又会去把电视换成自己最喜欢的频道。老人们都很固执,他们会不厌其烦的这样做,直到最后的台是大家都不讨厌的为止,或者就那样一直换下去。
输入:第一行n,m,p(1<=n,m<=10000,1<=p<=m),分别表示老人的数量,电视的频道数,以及开始的频道。
接下来有n行,每行包含两个整数a,b,表示老人最喜欢的和最讨厌的频道。老人们是按年龄由小到大排了序的。
输出:电视会被换台多少次。如果一直换下去,输出-1.
比较水。
记录一个to[b]=a,表示第i个老人讨厌b喜欢a
当然,如果有多个老人讨厌一个台,输入在前的老人去换台。那么如果to[b]已经有值了,后面就不更新a了。
然后就是个while循环
while(to[p])p=to[p];
如果循环n次还在循环,那么就是-1。
A了。
题目描述
在一个养老院,有n个老人在看电视。电视有m个频道,编号为1,2,……,m。每个老人都有一个最喜欢的频道和一个最讨厌的频道。如果电视正在放的频道是某个老人最讨厌的,那么他会起身把电视调成自己最喜欢的频道。如果有多个老人都最讨厌那个频道,则最年轻的那个老人会起身去调台,其他老人就不会动。如果换了台以后,当前播放的频道又是某个老人讨厌的,则那个老人又会去把电视换成自己最喜欢的频道。老人们都很固执,他们会不厌其烦的这样做,直到最后的台是大家都不讨厌的为止,或者就那样一直换下去。
输入:第一行n,m,p(1<=n,m<=10000,1<=p<=m),分别表示老人的数量,电视的频道数,以及开始的频道。
接下来有n行,每行包含两个整数a,b,表示老人最喜欢的和最讨厌的频道。老人们是按年龄由小到大排了序的。
输出:电视会被换台多少次。如果一直换下去,输出-1.
比较水。
记录一个to[b]=a,表示第i个老人讨厌b喜欢a
当然,如果有多个老人讨厌一个台,输入在前的老人去换台。那么如果to[b]已经有值了,后面就不更新a了。
然后就是个while循环
while(to[p])p=to[p];
如果循环n次还在循环,那么就是-1。
A了。
[code]#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,m,p,cnt,vis[100010]; int main() { scanf("%d%d%d",&n,&m,&p); for(int i=1;i<=n;++i) { int a,b; scanf("%d%d",&a,&b); if(vis[b]==0)vis[b]=a; } while(vis[p]) { p=vis[p]; cnt++; if(cnt>n){printf("-1\n");return 0;} } printf("%d\n",cnt); }
相关文章推荐
- 【LeetCode】Simplify Path 解题报告
- web workers简介
- COCI CONTEST #3 29.11.2014 T1 STROJOPIS
- 轻量级.Net开源日志组件--AHCT.Log.NLogger
- jQuery学习笔记——弹出对话框
- Tomcat搭建资源服务器
- UIlabel
- Android Serialiable 与 Parcelable 区别
- 黑马程序员——ios开发基础之C语言数据类型、运算符与输入输出
- Pixel binning
- HDU3068最长回文
- Android PopupWindow 仿微信点赞和评论弹出框
- 数据模型及类目
- 虚拟机联网问题
- php中urlencode空格变成+号解决方法
- Minimum Path Sum
- notification 点击响应 以及启动activity的坑
- POJ 2184 Cow Exhibition (处理负值的01背包)
- 《剑指offer》数值的整数次方
- C++ Primer Plus 第6版 中文版 第6章编程练习