20180414模拟赛T1——BEAD
BEAD
- 源程序名 BEAD.???(PAS,C,CPP)
- 可执行文件名 BEAD.EXE
- 输入文件名 BEAD.IN
- 输出文件名 BEAD.OUT
- 时间限制 1S
- 内存限制 128MB
有n颗形状和大小都一致的珍珠,它们的重量都不相同。n为整数,所有的珍珠从1到n编号。你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量中,该珍珠的重量列(n+1)/2位。下面给出将一对珍珠进行比较的办法:
给你一架天平用来比较珍珠的重量,我们可以比出两个珍珠哪个更重一些,在作出一系列的比较后,我们可以将某些肯定不具备中间重量的珍珠拿走。
例如,下列给出对5颗珍珠进行四次比较的情况:
- 珍珠2比珍珠1重
- 珍珠4比珍珠3重
- 珍珠5比珍珠1重
- 珍珠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;
}
20180414模拟赛T1——BEAD的更多相关文章
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- 20180610模拟赛T1——脱离地牢
Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...
- NOIP欢乐模拟赛 T1 解题报告
小澳的方阵 (matrix.cpp/c/pas) [题目描述] 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局. 他努力钻研,发现秦始皇布置兵马俑 ...
- [模拟赛] T1 高级打字机
Description 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序,支持如下3种操作: 1.T x:在文章末尾打下一个小 ...
- 2019.2.25 模拟赛T1【集训队作业2018】小Z的礼物
T1: [集训队作业2018]小Z的礼物 我们发现我们要求的是覆盖所有集合里的元素的期望时间. 设\(t_{i,j}\)表示第一次覆盖第i行第j列的格子的时间,我们要求的是\(max\{ALL\}\) ...
- [NOIP2018校模拟赛]T1 阶乘
题目: 描述 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值. 输入 共两行. 第一行一个正整数n. 第二行n个正整数a[i]. 输出 共 ...
- [NOIP2018校模拟赛]T1聚会 party
题目链接: 聚会 分析: 设每个点到1号点的距离为dist_{i},每个点的权值为x_{i},目标点到1号点的距离为dist,权值为x,那么对于每一次查询,我们讨论三种情况: ① 目标家庭在区间左边( ...
- 【2019.8.15 慈溪模拟赛 T1】插头(plugin)(二分+贪心)
二分 首先,可以发现,最后的答案显然满足可二分性,因此我们可以二分答案. 然后,我们只要贪心,就可以验证了. 贪心 不难发现,肯定会优先选择能提供更多插座的排插,且在确定充电器个数的情况下,肯定选择能 ...
- 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...
随机推荐
- python 字典转成对象
database = { "key1": { 'period':999, "data": { 'a':1, 'b':2, } }, "key2&quo ...
- Spring的JdbcTemplate使用教程
Spring对数据库的操作在jdbc上面做了基本的封装,让开发者在操作数据库时只需关注SQL语句和查询 结果处理器,即可完成功能(当然,只使用JdbcTemplate,还不能摆脱持久层实现类的编写). ...
- ES6中的关键字 - let
let关键字 1.let关键字声明的变量仅仅在自己的块级作用域内起作用,出了块级作用域就不起作用了: var arr2 = []; for (let index = 0; index < 10; ...
- Sitecore安全性第1部分:自定义角色和权限
安全性是任何Sitecore构建的重要组成部分.它可确保您的内容作者具有适当级别的访问权限,以管理他们拥有的内容,并授予他们访问不同Sitecore功能的权限. Sitecore附带了许多提供功能访问 ...
- 59 网络编程(一)——端口与InetSocketAddress
端口与几个CMD命令 公认端口:0-1023 比如80端口分配给www,21端口分配给FTP等 注册端口:2014-49151 分配给用户进程或引用程序 动态/私有端口:49151-65535 需要 ...
- Go学习笔记之Map
Go学习笔记之Map Map 引用类型,哈希表.map的key必须可以比较相等,除了slice, map, function的内建类型都可以作为key.struct类型不包含上述字段,也可作为key. ...
- Ubuntu18 安装搭建Harbor
1.安装docker-compose1.下载docker-compose的最新版本 sudo curl -L "https://github.com/docker/compose/relea ...
- java ASM
一.什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为.J ...
- router单页面多个标签tags的用法<router-view></router-view>
<keep-alive><router-view :key="path" /></keep-alive>
- DataTable求列的最大值、最小值、平均值和样本数
与sql聚合函数相似,会屏蔽null table.Compute("max(ColumnName)", "true"); table.Compute(" ...