天梯赛选拔

2024-02-12 01:40
文章标签 天梯 选拔

本文主要是介绍天梯赛选拔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

T322082 顶级理解

题目背景

昊昊作为游戏大神,游戏时长上千小时,拥有顶级理解,准备用一级号裸装单挑boss.

题目描述

该boss只有一个技能:(模仿大师)

玩家每攻击一次就会记忆玩家招式及伤害;

每被打掉100血,会模仿出招,将最近3次的伤害反弹到玩家身上,并遗忘这3次招式。(不足3次的话,将最近的伤害全都反弹)

作为有顶级理解的高级玩家,昊昊决定用1级号,靠站撸(不闪避)打败boss。

boss血量�u, 玩家血量�v, n次攻击�1,�2...��a1,a2...an。 由于是新手裸装,攻击力不会超过99(��<100ai<100)

问昊昊能否在n次攻击内打败boss。

如果打败boss输出'Yes',并输出玩家还剩的血量

如果N次攻击后没有打败boss输出'No',并输出boss还剩的血量

如果中途被boss打死输出'gg',并输出boss还剩的血量

输入格式

第一行输入�,�,�u,v,n(boss血量,玩家血量,攻击次数)

第二行输入�1,�2,...��a1,a2,...an

输出格式

如果打败boss输出'Yes',并输出玩家还剩的血量

如果�n次攻击后没有打败boss输出'No',并输出boss还剩的血量

如果中途被boss打死输出'gg',并输出boss还剩的血量

(空格隔开)

题目解析

注意每达到100攻击后,boss会反击,但攻击只会减少100,不会清零

eg:50 60 90

在第二次打击后cc==110;反击,cc-=100; c=10, c+=90==100;第三次再反击

还有招式也是不会全部清零,而是每次反击后面三个,不够三个就全部反击,这样才会清零

eg:20 20 20 20 20 达到100后反击后三个招,剩下 20 20

代码

#include<iostream>
#define F(i,l,r) for(int i=l;i<=r;++i)
using namespace std;
int  aa[1010];int main()
{int u, v, n;cin >> u >> v >> n;int cc = 0;//打击总伤害bool tf = 0;//用于判断是否boss死了,或者玩家死了int idx = 1;//数列模仿栈F(i, 1, n){cin >> aa[idx];//伤害cc += aa[idx];//总伤害更新u -= aa[idx];//boss血量减少if (u <= 0)//boss死了{cout << "Yes" <<" " << v;tf = 1;break;}if (cc >= 100)//每达到100打击,反击{cc -= 100;if (idx >= 3)//分三类{v -= aa[idx] + aa[idx - 1] + aa[idx - 2];idx -= 3;}    else if (idx == 2){v -= aa[idx] + aa[idx - 1];idx -= 2;}else if(idx==1){v -= aa[idx];idx -= 1;}if (v <= 0)//玩家是否死了{cout << "gg" <<" " << u;tf = 1;break;}}idx++;//每次都要++,模仿栈}if (tf == 0)//都没死cout << "No" << " "<<u;return 0;
}

T322022 Ltree的数据结构

题目描述

成绩处于[G,100]的同学会获得50元饭票,处于[60,G)的同学会获得20元饭票同时Ltree还会把总评成绩前 K 名的学生列入优秀学生名单。本题就请你编写程序,帮助Ltree列出优秀学生,并统计一共发出了面值多少元的 饭票。

输入格式

输入在第一行给出 3 个整数,分别是 N(不超过 10 000 的正整数,为学生总数)、G(在 (60,100) 区间内的整数,为题面中描述的代金券等级分界线)、K(不超过 100 且不超过 N 的正整数,为进入优秀学生名单的最低名次)。

接下来 N 行,每行给出一位学生的账号(长度不超过15位、不带空格的字符串)和总评成绩(区间 [0, 100] 内的整数),其间以空格分隔。题目保证没有重复的账号。

输出格式

输出一行为饭票的总价值,接下来K行按照学生成绩的非升序进行排序,输出学生的排名,账号,成绩,用一个空格分隔,成绩相同的学生排名并列,并列时按照账号字典序升序排列输出。

输入 #1复制

10 80 5

cy@zju.edu.cn 78

cy@pat-edu.com 87

1001@qq.com 65

uh-oh@163.com 96

test@126.com 39

anyone@qq.com 87

zoe@mit.edu 80

jack@ucla.edu 88

bob@cmu.edu 80

ken@163.com 70

输出 #1复制

360

1 uh-oh@163.com 96

2 jack@ucla.edu 88

3 anyone@qq.com 87

3 cy@pat-edu.com 87

5 bob@cmu.edu 80

5 zoe@mit.edu 80

解析

饭钱过于简单,不说了,讲结构体排名

主要看样例,同个分数占据同一个排名,但也会影响下面的排名,如样例,两个3名,没有第四名;

我们可以以aa[k].cou 排在k名的同学分数作为最低分数,比他大才有机会

如何实现上面的同位次排名呢?还有隔位排名呢?

int sc = aa[k].cou;//能进排名的最低分(用了结构体)for (int i = 1; aa[i].cou >= sc; ++i)//能进排名的最低分,大于才能循环{if (aa[i].cou != aa[i - 1].cou)//若和上一位不同分,更新为真实排名aa[i].idx = i;else                //若和上一名同分,即继承上一位的排名,若很多同分也可一直继承aa[i].idx = aa[i-1].idx;}

整体代码

#include<iostream>
#include<cstring>
#include<algorithm>
#define F(i,l,r) for(int i=l;i<=r;++i)
using namespace std;
struct kkk
{int idx;//排名string str;//名字int cou;//分数}aa[10010];//数组形式long long sum = 0;bool cmp(kkk a,kkk b)//sort排序
{if (a.cou > b.cou)return 1;else if (a.cou < b.cou)return 0;else//同分{if (a.str < b.str)return 1;elsereturn 0;}}int main()
{int n, g, k;cin >> n >> g >> k;for (int i = 1; i <= n; ++i){cin >> aa[i].str;cin >> aa[i].cou;}sort(aa + 1, aa + 1 + n, cmp);for (int i = 1; i <= n; ++i)//饭钱{if (aa[i].cou >= g)sum += 50;else if (aa[i].cou >= 60)sum += 20;}cout << sum << endl;int sc = aa[k].cou;//能进排名的最低分for (int i = 1; aa[i].cou >= sc; ++i){if (aa[i].cou != aa[i - 1].cou)aa[i].idx = i;elseaa[i].idx = aa[i-1].idx;}for (int i = 1; aa[i].cou>=sc; ++i){cout << aa[i].idx<< " " << aa[i].str << " " << aa[i].cou << endl;}return 0;
}

这篇关于天梯赛选拔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701360

相关文章

显卡天梯图(2024年9月版),游戏性能/生产力性能榜单

​原文地址(高清无水印原图/持续更新/含榜单出处链接): >>> 2024年9月显卡天梯图 <<< 2024年9月4日更新日志:更新所有显卡天梯图至9月/最新数据;移除Technical显卡榜单;新增OpenCL显卡性能榜单(含专业卡、计算卡、车机等)。 2024年8月2日更新日志:更新并拓展3DMark显卡榜单长度至150位;更新并拓展Technical显卡榜单至139位;

河南省第三届职业技能大赛 网站技术(世赛选拔)项目任务书

河南省第三届职业技能大赛 网络安全(世赛选拔)项目样题 Module_A 网页设计制作:一、项目简介:二、具体要求1. 网站基本元素2. 内容区域3.网站页面开发 三、该模块要收集的文件 Module_B 后台模块开发:Module_C 前端游戏设计:一、游戏基本要求:二、具体要求三、该模块要收集的文件Module_D 前端功能实现与交互:一、游戏基本逻辑二、详情图示

河南省第三届职业技能大赛 网络安全(世赛选拔)项目样题

河南省第三届职业技能大赛 网络安全(世赛选拔)项目样题 A模块基础设施设置/安全加固(200分)A-1任务一 登录安全加固A-2任务二 Web安全加固(Web)A-3任务三 流量完整性保护与事件监控(Web,Log)A-4任务四 防火墙策略A-5:登录安全加固(Windows, Linux)A-6:本地安全策略设置(Windows)A-7:流量完整性保护(Windows, Linux)A-8

HDU 2188 选拔志愿者 巴什 博弈

其实就是巴什博弈,只要倒着想就行,水题     Description 对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心理疏导的心理学专家。根据要求,我校也有一个奔赴灾区救灾的名额,由于广大师生报名踊跃,学校不得不进行选拔来决定最后的人选。经过多轮的考核,形势逐渐明朗,最后的名额将在

全国大学生数学建模大赛模拟测试选拔题——移动机器人路径规划

移动机器人路径规划是机器人学的一个重要研究领域。 它要求机器人依据某个或某些优化原则(如最小能量消耗、最 短行走路线、最短行走时间等),在其工作空间中找到一条从 起始状态到目标状态能避开障碍物的最优路径。 机器人路径规划问题可以建模为一个有约束的优化问 题,都要完成路径规划、定位和避障等任务。 如上图所示正方形地板边长为1*1,整体为20*20块 地板的地面上,深蓝色为障碍物无法通行,浅

第二次选拔——ZOJ

简单,不多说。 Description 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。 Input 题目包含多组用例,每组用例占一行,包含ZOJ三个字符,当输入“E”时表示输入结束。  1<=length<=100。  Output 对于每组输入,请输出一行,表示

第二次选拔——排序

Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。  你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。  Input 输入包含多组测试用例,每组输入数据只有一行数字(数字之

2013省赛选拔

Sum of Digits http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4165 求一段区间有多少个数每一位加起来的和是s,并且求出最小的一个。 数位dp求个数,模拟求最小的数。 package net.smgui.common;import java.util.Arrays;import java

2015省赛选拔

Arc and Point http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4709 几何弱成狗 Block Toy http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4710 3维版本的铺砖,状态压缩dp。 Four c

fzu1894 志愿者选拔 单调队列

Problem 1894 志愿者选拔 Accept: 1299    Submit: 4084 Time Limit: 1500 mSec    Memory Limit : 32768 KB  Problem Description 世博会马上就要开幕了,福州大学组织了一次志愿者选拔活动。 参加志愿者选拔的同学们排队接受面试官们的面试。参加面试的同学们按照先来先面试