我要肆了 2024-10-06 12:39 采纳率: 100%
浏览 15
已结题

2024浦城CSP-J复赛模拟考试(一)(两道题)C++


**第一题**
题目描述
你需要维护一个集合,有n次操作,支持:

插入一个非负整数x。
删除一个非负整数x。
查询集合中是否存在非负整数x,如果存在则输出 yes,否则输出 no。
给定非负整数x,查询集合中>=x的数中最小的一个并输出,如果这个数不存在,则输出 -1。
给定非负整数x,查询集合中>x的数中最小的一个并输出,如果这个数不存在,则输出 -1。
给定非负整数x,查询集合中<=x的数中最大的一个并输出,如果这个数不存在,则输出 -1。
给定非负整数x,查询集合中<x的数中最大的一个并输出,如果这个数不存在,则输出 -1。
集合中不允许有重复数字,所以当你尝试插入一个已经存在于集合中的数字时,该操作会被忽视掉。

输入格式
第一行一个整数n。

之后n 行每行两个数 opt,x 表示一次操作,操作格式如下:

1 x:表示插入x2 x:表示删除x3 x:表示集合中是否存在x,如果存在则输出 yes,否则输出 no。

4 x:表示查询集合中>=x的数中最小的一个并输出,如果这个数不存在,则输出 -15 x:表示查询集合中>x的数中最小的一个并输出,如果这个数不存在,则输出 -16 x:表示查询集合中<=x的数中最大的一个并输出,如果这个数不存在,则输出 -17 x:表示查询集合中<x的数中最大的一个并输出,如果这个数不存在,则输出 -1。

输出格式
对每个询问,输出一行表示答案。

样例 #1
样例输入 #1
20
1 17
1 16
1 2
1 1
1 10
4 15
2 9
1 18
2 9
7 16
2 0
2 3
4 2
2 3
2 5
5 3
3 11
6 14
1 13
3 17
样例输出 #1
16
10
2
10
no
10
yes

提示
对于30% 的数据,n<=1000。

对于10%的数据,没有2操作。

对于10%的数据,没有3操作。

对于10%的数据,没有4 操作。

对于10%的数据,没有5操作。

对于10%的数据,没有6操作。

对于10% 的数据,没有7操作。

对于100%的数据,n<=5*10^5,所有输入的数都在[0,n-1]之间。

**第二题**

题目描述
n个人坐成一圈打牌,第i个人开始时手中有ai张牌。

从第一个人开始,每个人轮流选择出牌。轮到某个人选择出牌时,他可以选择出一张牌,也可以选择不出牌。不过,如果上一个出牌的人是他自己,或者从来没有人出过牌,那么他就必须选择出牌。然后轮到他的下一个人选择出牌,n的下一个人是1。如果有一个人出完了他所有的牌,游戏结束。

你需要求出,游戏最多能进行多少回合。一个人一次选择叫做一回合。

输入格式
第一行包括一个整数n。

第二行n个整数,第i个表示ai。

样例 #1
样例输入 #1
2
2 2
样例输出 #1
4
样例 #2
样例输入 #2
11
11 4 5 1 4 1 9 1 9 8 10
样例输出 #2
563
样例 #3
样例输入 #3
2
100 1
样例输出 #3
199

提示
样例一解释:

第一回合1必须出牌。
第二回合2 选择出牌。
第三回合1选择不出牌。
第四回合2必须出牌,他的牌出完了,游戏结束。

共进行了4回合,容易发现没有回合数更多的方案。

对于前30%的数据,n=2,ai<=10。

对于前60%的数据,n<=10,ai<=10。

对于前95%的数据,n<=10^5,ai<=10^4。

对于全部数据,2<=n<=10^51<=ai<=10^9

急!感谢回答的lao师!

  • 写回答

2条回答 默认 最新

  • 我要肆了 2024-10-07 18:50
    关注

    各位老师,我会做了!【戳手手】

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 修改了问题 10月6日
  • 创建了问题 10月6日