2783: 【基础】小 X 玩游戏(game)

news/2024/11/20 23:19:28/

2783: 【基础】小 X 玩游戏(game)
时间限制: 1 Sec 内存限制: 64 MB
提交: 752 解决: 294
[提交] [状态] [讨论版] [命题人:ghost79]

题目描述
听完了故事,小 X 又想去玩一会儿游戏了。 这是一个很奇特的单机游戏, 游戏规则如下:
游戏中一共有 4× n 张牌,每张牌上有一个数字, 这些数字恰好是 1~4× n。一开始电脑会把这 4× n张牌随机打乱,然后会发 2× n 张牌给小 X。那些剩下的 2× n 牌电脑会再打乱一次,然后排成一排展示给小 X 看。而小 X 需要做的就是将自己的 2× n 张牌也排成一排,与电脑展示的 2× n 张牌一一对应。
之后就开始评分了,对于前 n 对牌(一对牌是指小 X 的一张加上电脑的一张), 牌上数字小的一方获得一分; 而对于后 n 对牌, 牌上数字大的一方获得一分。
例 如当 n=3 时, 共 有 12 张牌 , 牌 上的数字是 1 ~ 12 。 电脑打乱 后,小 X 拿到 6 张牌 , 假设 是1, 3, 4, 5, 7, 8。 此时电脑手中还剩下 2, 6,9, 10, 11, 12。同样假设电脑会将这 6 张牌按照 9, 11, 6, 2, 12, 10 这样的顺序展示给小 X 看。如果小 X 是将 6 张牌按 1, 7, 5, 8, 4, 3 这么排的,那么小 X 会获得 4 分。
第 1 对: 1 – 9 ,小 X 得 1 分, 电脑得 0 分
第 2 对: 7 –  11,小 X 得 1 分, 电脑得 0 分
第 3 对: 5 –  6 ,小 X 得 1 分, 电脑得 0 分
第 4 对: 8 –  2 ,小 X 得 1 分, 电脑得 0 分
第 5 对: 4 –  12, 电脑得 1 分,小 X 得 0 分
第 6 对: 3 –  10, 电脑得 1 分,小 X 得 0 分
前一半第 1 对~第 3 对牌是比谁小,后一半第 4 对~第 6 对牌是比谁大。前一列数字代表的是小 X 的牌,后一列数字代表的是电脑的牌。
小 X 现在已经拿到了 2× n 张牌,同时电脑也已经展示出了它的 2× n 张牌是怎么排列的,小 X 想知道他最多能够获得多少分?输入
输入数据第一行为一个正整数 n。
接下来一行共有 2× n 个用空格隔开的正整数, 表示小 X 手中拥有的 2× n 张牌。
再下一行同样是 2× n 个用空格隔开的正整数, 表示电脑展示出的 2× n 张牌(以读入的顺序展示)。输出
输出一行只有一个数ans, 表示小 X 最多能够获得的分数。样例输入
4
5 3 2 16 14 13 9 7
1 8 12 11 15 6 4 10样例输出
7提示
【数据范围】
对于 30% 的数据, 1 ≤ n ≤ 4
对于另外 40% 的数据, 电脑展示的 2× n 张牌是从小到大排好序的
对于 100% 的数据, 1 ≤ n ≤ 1000
```c
来源/分类
常州市2016“信息与未来”夏令营选拔赛 
***
**题解如下**```c
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{int n;scanf("%d",&n);int ar[2*n];int br[2*n];for(int i=0;i<2*n;i++){scanf("%d",&ar[i]);}for(int i=0;i<2*n;i++){scanf("%d",&br[i]);}sort(br,br+n);sort(br+n,br+2*n);  //思路把电脑牌分成前后两部分对这两部分分别进行排序,sort(ar,ar+2*n);    //把小X的拍直接排序,也将小X的牌分成前后两部分int sum_score=0;for(int i=n-1;i>=0;i--)     //排完序后对前一部分操作,把ar元素从最大值开始,与br的最小值元素开始进行比较,直到找到符合题意的进行次数加1,//如果无符合题意的,则进行ar下一个最大元素的比较,{int flag=0;for(int j=0;j<n;j++){if(ar[i]<br[j]){flag=1;br[j]=-1;break;}}if(flag==1){sum_score++;}}for(int i=n;i<2*n;i++)  //对后一部分进行操作{int flag=0;for(int j=2*n-1;j>=n;j--){if(ar[i]>br[j]){flag=1;br[j]=9999;break;}}if(flag==1){sum_score++;}}printf("%d",sum_score);return 0;
}

http://www.ppmy.cn/news/140657.html

相关文章

[CF1221E]Game With String

Game With String 题解 首先&#xff0c;我们可以发现不同的 . . .连续段之间是独立的&#xff0c;也就是说我们可以将原问题等价成多个连续 . . .游戏的 n i m nim nim和。 所以我们可以单独讨论连续段的状况的状况。 首先明确一个事实&#xff0c;由于 a > b a>b a&g…

Scratch编程与游戏之坦克炮弹V3!

注&#xff1a;这个游戏需要用到积木模块&#xff1a;动作、声音、控制、侦测&#xff08;用于判断炮弹伤害是否触及敌方&#xff09;、事件&#xff08;V3多了一个敌方坦克相关通知&#xff09;、变量&#xff08;控制双方血量&#xff09; 游戏要求&#xff1a;我们绘制一辆坦…

Win32游戏制作之---致我们曾经怀念的仙剑一

曾今有一个游戏是一代人的回忆&#xff0c;曾今有一部电视剧让很多人都落下了感动的泪&#xff01; 好久没有写博客了&#xff0c;前段时间准备考试&#xff0c;这段时间又忙着有事&#xff0c;所以博客很久没写了&#xff0c;这两天闲着&#xff0c;因此写一个小小的回…

★「C++游戏」幻影之战 BattleOfPhantom:一款集合多种人机对战以及联机对战的战斗游戏

&#xff08;原创&#xff09; 目前正在不断更新&#xff01; ★ 一款超级有趣的大乱斗游戏&#xff0c;包含多种游戏模式&#xff0c;支持双人联机。 离线情况下也可以与多个&#xff08;或一群&#xff09;机器玩家进行疯狂的对战。 直接上图 使用C with EGE图形库编写 有…

玩编程,玩游戏

1.coding Games 2.codecombat 3.screeps 4.checkio 5.vim Adventures 6.cgber dojo 7.code Monkey 8.Elevator saga 9.codewars 10.codewars 11.ruby quiz 12.git-Game 13.Hacker.org 14.code hunt 15.Fight code

c语言之玩游戏

1 二分查找/折半查找 2 密码登录 int main() { int i 0; char password[20] ""; // 假设密码是"123456" for (i 0; i < 3; i) { printf("请输入密码&#xff1a;>"); scanf("%s", passwo…

CPO技术重塑光模块:行业变革与突破

随着OpenAI的ChatGPT重磅面世&#xff0c;在短短时间内&#xff0c;内容生成式人工智能消费级应用掀起一波新的科技浪潮。ChatGPT用户数也在短短两个月内破亿,成为史上活跃用户破亿速度最快的软件。 可以预料的是,未来算力和数据需求将迎来爆发式的增长,且传统可插拔光模块技术…

C++小游戏---坦克大战(一)

刚开始写的时候想想这个应该是非常好写的&#xff0c;但是写到后面&#xff0c;尤其是遇到很多莫名其妙的bug之后&#xff0c;发现似乎没那么简单。以下是开发过程中的一些想法&#xff0c;在这里做个笔记。 目录 游戏介绍 素材引入 初始化 全局初始化 关卡初始化 初始化效果 对…