BEAD

  • 源程序名 BEAD.???(PAS,C,CPP)
  • 可执行文件名 BEAD.EXE
  • 输入文件名 BEAD.IN
  • 输出文件名 BEAD.OUT
  • 时间限制 1S
  • 内存限制 128MB

有n颗形状和大小都一致的珍珠,它们的重量都不相同。n为整数,所有的珍珠从1到n编号。你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量中,该珍珠的重量列(n+1)/2位。下面给出将一对珍珠进行比较的办法:

给你一架天平用来比较珍珠的重量,我们可以比出两个珍珠哪个更重一些,在作出一系列的比较后,我们可以将某些肯定不具备中间重量的珍珠拿走。

例如,下列给出对5颗珍珠进行四次比较的情况:

  1. 珍珠2比珍珠1重
  2. 珍珠4比珍珠3重
  3. 珍珠5比珍珠1重
  4. 珍珠4比珍珠2重

根据以上结果,虽然我们不能精确地找出哪个珍珠具有中间重量,但我们可以肯定珍珠1和珍珠4不可能具有中间重量,因为珍珠2、4、5比珍珠1重,而珍珠1、2、3比珍珠4轻,所以我们可以移走这两颗珍珠。

写一个程序统计出共有多少颗珍珠肯定不会是中间重量。

输入

输入文件第一行包含两个用空格隔开的整数N和M,其中1<=N<=99,且N为奇数,M表示对珍珠进行的比较次数,接下来的M行每行包含两个用空格隔开的整数x和y,表示珍珠x比珍珠y重。

输出

输出文件仅一行包含一个整数,表示不可能是中间重量的珍珠的总数。

样例

BEAD.IN

5 4

2 1

4 3

5 1

4 2

BEAD.OUT

2

题解

一个数是中位数必须满足大于或等于它的数的个数与小于等于它的数的个数。由于大小比较对于实数集是满足传递性的。于是我们考虑建图。若\(a\le b\)则\(b\)向\(a\)连一条有向边。则\(a\le b\)的充要条件为存在路径\(b\to a\)。若已知比\(a\)大的数大于\(\frac{n}{2}\)或已知比\(a\)小的数小于\(\frac{n}{2}\)。那么\(a\)一定不是中位数。

于是建图后用floyd求出两点之间是否连通即可。

我的代码

#include <cstdio>
#include <cctype> #define dd c=getchar()
template <class T>
inline void read(T &x)
{
x=0;T dd;bool f=0;
for(;!isdigit(c);dd)if(c=='-')f=1;
for(;isdigit(c);dd) x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return;
}
#undef dd bool mmap[105][105];
int son[105],fa[105]; int main()
{
freopen("BEAD.in","r",stdin);
freopen("BEAD.out","w",stdout);
int n,m;read(n);read(m);
for(int i=1;i<=m;++i)
{
int a,b;read(a);read(b);
mmap[a][b]=1;//a->b连边
}
for(int k=1;k<=n;++k)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(mmap[k][j]&&mmap[i][k]) mmap[i][j]=1;//floyd求图的连通性
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(mmap[i][j])son[i]++,fa[j]++;
//记录每个节点已确定比它大(fa)于比他小(son)的数的个数
int t=n>>1,ans=0;
for(int i=1;i<=n;++i)if(fa[i]>t||son[i]>t)ans++;
printf("%d",ans);
fclose(stdin);fclose(stdout);
return 0;
}

最新文章

  1. TJ/T808 终端通讯协议设计与实现(码农本色)
  2. iOS分类、延展和子类的区别
  3. ajax 异步交互
  4. Android动画效果translate、scale、alpha、rotate
  5. C++成员变量、构造函数的初始化顺序
  6. android 32 Gallery:横着滚动的列表
  7. 新闻web小酌
  8. Bear and Three Balls
  9. C#打印杨辉三角
  10. MYSQL:插入记录检查记录是否存在,存在则更新,不存在测插入记录SQL
  11. 【转】RESTful Webservice创建
  12. POJ 2533 裸的LIS
  13. django 网站的搭建(1)
  14. ZOJ 1002:Fire Net(DFS+回溯)
  15. R read.table 一个问题的解决
  16. 【字符串算法3】浅谈KMP算法
  17. 【Go命令教程】10. go fix 与 go tool fix
  18. 人脸识别中的Procruster analysis应用
  19. C++ 11 创建和使用 shared_ptr
  20. Android中自定义控件,三个构造函数

热门文章

  1. ASP.NET Core消息队列RabbitMQ基础入门实战演练
  2. element-ui 开发备忘
  3. Linux内核中的IS_ERR()实现
  4. Jenkins-slave 镜像集成 docker 和 kubectl
  5. 在博文顶部添加文章字数及阅读时间信息:阅读本文需要xx分钟
  6. 第一周第二部分 coursera.org
  7. 65 TCP连接中,流的关闭会造成Socket的关闭
  8. .net core mvc启动顺序以及主要部件3-Startup
  9. 发送邮件使用html模板的实现的大致思路
  10. Docker中上传镜像到docker hub中