首页 > 代码库 > 170611 NOIP模拟赛

170611 NOIP模拟赛

盘子序列

【题目描述】

有 n 个盘子。盘子被生产出来后,被按照某种顺序摞在一起。初始盘堆中如果一

个盘子比所有它上面的盘子都大,那么它是安全的,否则它是危险的。称初始盘堆为

A,另外有一个开始为空的盘堆 B。为了掩盖失误,生产商会对盘子序列做一些“处

理”,每次进行以下操作中的一个:(1)将 A 最上面的盘子放到 B 最上面;(2)将 B 最上

面的盘子给你。在得到所有n个盘子之后,你需要判断初始盘堆里是否有危险的盘子。

【输入格式】

输入文件包含多组数据(不超过 10 组)

每组数据的第一行为一个整数 n

接下来 n 个整数,第 i 个整数表示你收到的第 i 个盘子的大小

【输出格式】

对于每组数据,如果存在危险的盘子,输出”J”,否则输出”Y”

【样例输入】

3

2 1 3

3

3 1 2

【样例输出】

Y

J

【数据范围】

20%的数据保证 n<=8

80%的数据保证 n<=1,000

100%的数据保证 1<=n<=100,000,0<盘子大小<1,000,000,000 且互不相等

思路

倒序栈模拟;

代码实现

 1 #include<cstdio> 2 #include<cstring> 3 const int maxn=1e5+10; 4 int n; 5 int a[maxn],b[maxn],bs,c[maxn],cs; 6 int main(){ 7     freopen("disk.in","r",stdin); 8     freopen("disk.out","w",stdout); 9     while(scanf("%d",&n)!=EOF){10         for(int i=1;i<=n;i++) scanf("%d",&a[i]);11         for(int i=n;i>0;i--){12             if(!bs||b[bs]<a[i]) b[++bs]=a[i];13             else while(bs&&b[bs]>a[i]) c[++cs]=b[bs--];14         }15         while(bs) c[++cs]=b[bs--];16         for(bs=2;bs<=n;bs++) if(c[bs]>c[bs-1]) break;17         if(bs>n) puts("Y");18         else puts("J");19         bs=cs=0;20         memset(b,0,sizeof(b));21         memset(c,0,sizeof(c));22     }23     return 0;24 }

lazy的不想优化逻辑了。

四轮车

【题目描述】

在地图上散落着 n 个车轮,小 J 想用它们造一辆车。要求如下:

1. 一辆车需要四个车轮,且四个车轮构成一个正方形

2. 车轮不能移动

你需要计算有多少种造车的方案(两个方案不同当且仅当所用车轮不全相同,坐

标相同的两个车轮视为不同车轮)。

【输入格式】

第一行一个整数 n

接下来 n 行,每行两个整数 x y,表示在(x,y)处有一个车轮

【输出格式】

一行一个整数,表示方案数

【样例输入】

9

0 0

1 0

2 0

0 2

1 2

2 2

0 1

1 1

2 1

【样例输出】

6

【数据范围】

30%的数据保证 n ≤ 30

100%的数据保证 1 ≤ n ≤ 1000;|x|,|y| < 20000

思路

枚举

点名

【题目描述】

在J班的体育课上,同学们常常会迟到几分钟,但体育老师的点名却一直很准时。

老师只关心同学的身高,他会依次询问当前最高的身高,次高的身高,第三高的身高,

等等。在询问的过程中,会不时地有人插进队伍里。你需要回答老师每次的询问。

【输入格式】

第一行两个整数 n m,表示先后有 n 个人进队,老师询问了 m 次

第二行 n 个整数,第 i 个数 Ai 表示第 i 个进入队伍的同学的身高为 Ai

第三行 m 个整数,第 j 个数 Bj 表示老师在第 Bj 个同学进入队伍后有一次询问

【输出格式】

m 行,每行一个整数,依次表示老师每次询问的答案。数据保证合法

【样例输入】

7 4

9 7 2 8 14 1 8

1 2 6 6

【样例输出】

9

9

7

8

【样例解释】

(9){No.1 = 9}; (9 7){No.2 = 9}; (9 7 2 8 14 1){No.3 = 7; No.4 = 8}

【数据范围】

40%的数据保证 n ≤ 1000

100%的数据保证 1 ≤ m ≤ n ≤ 30000;0 ≤ Ai < 2 32

思路

splay裸题,好吧我splay卡常数了,

 

170611 NOIP模拟赛