题目名称 2487. 膜法师
输入输出 maf.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 GravatarOstmbh 于2016-10-08加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:44, 提交:141, 通过率:31.21%
GravatarHzoi_QTY 100 0.371 s 25.42 MiB C++
Gravatarxyz117 100 0.409 s 19.36 MiB C++
GravatarWildRage 100 0.440 s 13.64 MiB C++
Gravatar하루Kiev 100 0.469 s 15.57 MiB C++
GravatarHzoi_Maple 100 0.641 s 33.69 MiB C++
GravatarHzoi_moyi 100 0.682 s 34.65 MiB C++
Gravatarrvalue 100 0.717 s 27.97 MiB C++
Gravatarwangxh 100 0.754 s 63.31 MiB C++
GravatarHZOI_蒟蒻一只 100 0.760 s 30.83 MiB C++
GravatarLadyLex 100 0.787 s 32.74 MiB C++
关于 膜法师 的近10条评论(全部评论)
把这个年轻人拉出去续一续
GravatarAZog
2017-10-04 16:54 11楼
队列
Gravatar하루Kiev
2017-08-02 21:32 10楼
经本人实验,并不需要加库
GravatarHZOI_蒟蒻一只
2017-08-02 18:53 9楼
玄学手动开栈= =
还有题目描述不是很暴力%嘛。。。
GravatarHzoi_Mafia
2017-08-02 18:33 8楼
手动开大栈空间……否则可能会RE一个点……
在文件操作下加上
int __size__= 128 << 20;
char *__p__ = (char*)malloc(__size__) + __size__;
__asm__("movl %0, %%esp\n" :: "r"(__p__));
开头文件cstdlib.
Gravatarlicone
2017-07-06 20:18 7楼
暴力膜一发。一种常数和代码复杂度巨大的O(n)做法,tarjan+树规+线性DP飙到150+行,加快读后极限数据0.9s+卡时过。
Gravatarliu_runda
2016-10-09 21:44 6楼
一怒之下手动开栈
Gravatar小e
2016-10-09 21:37 5楼
GravatarLOSER
2016-10-09 15:23 4楼
我的正确率呀......
——扩大栈内存只能在主函数使?
GravatarMagic_Sheep
2016-10-09 14:49 3楼
我为什么会把memset(vis, 0, sizeof(bool) * (n + 1))的bool写成int ... = =一直以为是栈空间开小了
BTW,COGS评测机有猫病,需要手动增大栈空间,推荐编译加入-Wl,--stack,[msize]指令
GravatarFmuckss
2016-10-09 09:26 2楼

2487. 膜法师

★★   输入文件:maf.in   输出文件:maf.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

小x机房里有一些蛤,每到比赛时都会被拉出来续了。。。。

现在有n个人,每个人都有一个自己要膜的对象,并且轮到他后,他肯定会膜自己想膜的人,当然,如果有人很自恋,要膜自己,轮到自己的时候,也是可以续掉自己的。。。

当然,如果一个人被膜了之后就会很膨胀,不会去膜自己要膜的人。。

现在,作为一名膜法师,你可以设计膜人的顺序,顺序不一样,被膜的人的数目肯定也不一样。现在你想知道,如何设计顺序,让被膜的的最多和最少。

所有可以膜别人的人都要膜

【输入格式】

第一行,一个整数n,表示有n个人。

第二行,n个用空格隔开整数Xi,Xi表示第i个人要膜的人的编号。

【输出格式】

空格隔开的两个整数表示最少的膜人数和最多的膜人数

【样例输入】

8
2 3 2 2 6 7 8 5

【样例输出】

3 5

【数据范围】

50% n<=5000

100% n<=1000000

【样例解释】

膜掉6 8 2最少其他人无法再膜了

膜掉8 7 6 3 2最多其他人无法再膜了