• 计算机学院2022级新生邀请赛(一)


    目录

    A: Hello , HAUE

    B: 我必须立刻签到,因为它有手就行

    C: OrzOrzOrz 

    D: 红心诡计   

    E: 不要停下来啊!!! 

    F: 反卷行动 

    G: 机器人OR寄器人 

    H: 帕秋莉GO!!! 

    另一篇出题人官方题解 

    A: Hello , HAUE

    题目描述

    欢迎大家参加河南工程学院2022级第一次新生周赛,LYS代表计算机ACM协会在此祝愿大家的大学生涯一帆风顺,自信满满;友情爱情,两全其美;三阳开泰,学业大展;魅力四射,朋友万千;五福临门,幸福美满;六六大顺,学识博渊;七步之才,知识无边;八仙过海,才华呈现;九霄云外,烦恼抛开;十全十美,大学前途熠熠生辉!!!

    输入

    第一行,输入一个整数 N。

    输出

    输出占一行,不含引号。

    若 N = 1,输出 "One Sail Wind Go"。

    若 N = 6,输出 "Six Six Big Go"。

    若 N = 10,输出 "Ten OK Ten OK"。

    若 N = 2022,输出 "Hello , HAUE"。

    样例输入 

    2022

    样例输出 

    Hello , HAUE

    源代码 

    很简单的if语句来匹配实现,输出对应字符串即可 

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. int n;
    6. cin >> n;
    7. if(n == 1)cout << "One Sail Wind Go";
    8. else if(n == 6)cout << "Six Six Big Go";
    9. else if(n == 10)cout << "Ten OK Ten OK";
    10. else if(n == 2022)cout << "Hello , HAUE";
    11. return 0;
    12. }

    B: 我必须立刻签到,因为它有手就行

    题目描述

    在算法竞赛的题目当中,有很多难度逆天的题,然鹅,也有个别的题肥肠煎蛋,像这种HFCJ一看就是"有手就行"的题目就被称之为签到题。
    例如这道题目:

    输入

    第一行,输入一个整数 X。

    输出

    一行,输出按照上述公式计算所得 X 的结果。

    样例输入

    2

    样例输出

    4

    源代码 

    简单的递归函数的运用,注意数据范围int将会溢出,要开long long 

    1. #include <iostream>
    2. using namespace std;
    3. long long fun(long long x)
    4. {
    5. if(x >= 0 && x <= 10)return x * x;
    6. else if(x > 10 && x <= 50)return x * fun(x - 5);
    7. else if(x > 50 && x <= 100)return (x + fun(x - 10));
    8. }
    9. int main()
    10. {
    11. long long x;
    12. cin >> x;
    13. long long ans = fun(x);
    14. cout << ans;
    15. return 0;
    16. }

    C: OrzOrzOrz 

    题目描述

    河工院21级计算机学院和软件学院存在着许许多多的大佬,这些大佬都是LYS所膜拜的对象,他们分别是:陈佬(C) ,郭佬(G),皇甫爷(H),金佬(J),李佬(L),魏佬(W),邢佬(X),毅佬(Y),朱佬(Z) 等等诸多大佬(以上排名不分先后,未列出亦视为大佬),由于这些大佬经常水群,所以大家对这些大佬耳熟能详。

    每次见到这些大佬在群里出现,LYS就会膜拜一番,发出“OrzOrzOrz”的消息,对于未列出的大佬出现,LYS见到了只敢在心中膜拜,不敢发消息

    一天结束,LYS想要统计今天见到的大佬的次数,可统计实在是个大工程,令LYS肥肠困扰,你能帮助他进行统计吗?

    输入

    第一行输入两个整数 N 和 M,代表大佬出现 N 次和 M 次询问。

    第二行输入 N 个大写字母 (A~ Z),代表出现的大佬的编号。

    接下来 M 行,每行输入一个大写字母 (A~Z),代表询问的大佬编号。

    0≤N≤1e4
    1≤M≤26

    输出

    第一行输出询问编号的大佬出现的次数,若该编号的大佬是上述列出的大佬且出现过,则输出一个空格后输出"OrzOrzOrz"(不加引号)。

    样例输入

    1. 12 6
    2. D N F H L H W Z A W H J
    3. C
    4. Z
    5. W
    6. A
    7. J
    8. H

    样例输出

    1. 0
    2. 1 OrzOrzOrz
    3. 2 OrzOrzOrz
    4. 1
    5. 1 OrzOrzOrz
    6. 3 OrzOrzOrz

    源代码 

    利用类型转换,将字符转换为数组下标,同时也是离散化的思想,将字母A-Z映射至1-26,由于其中含有陈佬(C) ,郭佬(G),皇甫爷(H),金佬(J),李佬(L),魏佬(W),邢佬(X),毅佬(Y),朱佬(Z),因此读取的字符若是属于他们其中一位,即为LYS熟悉的佬,输出出现次数之后而后开始OrzOrzOrz,否则证明LYS和出现的佬不熟悉他不敢OrzOrzOrz,那么仅仅输出

    1. #include <iostream>
    2. using namespace std;
    3. int a[100];
    4. int main()
    5. {
    6. int n,m;
    7. cin >> n >> m;
    8. while(n -- )
    9. {
    10. char c;
    11. cin >> c;
    12. int idx = c - 'A' + 1;
    13. a[idx] ++ ;
    14. }
    15. while(m -- )
    16. {
    17. char c;
    18. cin >> c;
    19. int idx = c - 'A' + 1;
    20. if(c == 'C' || c == 'G' || c == 'H' || c == 'J' || c == 'L' || c == 'W' || c == 'X' || c == 'Y' || c == 'Z')
    21. {
    22. if(a[idx] == 0)cout << 0 << endl;
    23. else
    24. {
    25. cout << a[idx] << ' ' << "OrzOrzOrz" << endl;
    26. }
    27. }
    28. else cout << a[idx] << endl;
    29. }
    30. return 0;
    31. }

    D: 红心诡计   

     Vainglory(虚荣)是由Super Evil Megacorp开发的魔幻风格MOBA类手游,曾依靠超高质量的游戏画质和独特的“点触”操控,在全球收割了千万玩家的喜爱,借助独家的游戏渲染引擎,这款风靡全球的游戏亦曾两度被Apple公司选作Iphone的性能演示宣传片,由该团队首席环境艺术设计师EvilOnTheInside绘制的地图令人着迷。除此之外,独具特色的操控和精心设计的英雄角色,也令Vainglory在MOBA竞技史上给所有人留下了深刻的印象。

    可惜的是,由于Vainglory独特的操控模式上手难度极大,以及种种运营不善等原因,导致这款曾经的现象级的游戏在2020年停止了运营,但停服之后,仍有大量热爱Vainglory的玩家活跃在社区服,LYS也不例外。
    LYS肥肠喜欢使用剑客黑羽这名角色,因为他不但有爆发性的刺客输出,也有一定的拉扯和扛伤能力,同时还兼具免控与位移为一体的高机动性技能,使得他在单体和团战都能发挥强大的作用。

    其中,该英雄的一技能"红心诡计"描述如图:
     


    例如:对于某一次正在发生的团战,LYS的黑羽已经将”红心诡计“升至了 5 级,满级的黑羽基础物理普通攻击的伤害是 160,且身上的装备为其提供了 50 点物理强度和 300 点法术强度。

    此时LYS遇到了一名敌人,该敌人当前生命值为 500,生命值上限为 2800,他在敌人到达技能释放范围内时,发动了”红心诡计“,迅速位移至敌人位置对其施加了满层的“震颤红心”并造成伤害,击杀了敌人并刷新了“红心诡计”的冷却时间,其伤害计算如下:
     


    已知

    当前LYS已经将”红心诡计“升至了 5 级,且黑羽的等级已达到最大,其基础物理普通攻击的伤害是 160。

    : 敌人原地挂机不动,LYS是否可以操作黑羽,在 (X,Y) 处选择任意一个在技能范围 D 之内的敌人开始,使用“红心诡计”位移到其身边击杀敌人并刷新技能,然后选择下一个敌人,如此重复,直到击杀所有的 5 名敌人。若"红心诡计"的范围内不存在敌人或使用一次”红心诡计“无法击杀敌人,LYS将停止后续的操作

    输入

    第一行 5 个数,分别为黑羽装备的物理强度 AD,法术强度 AP,黑羽目前的位置横坐标 X 和纵坐标 Y,以及以 (X,Y) 为中心的”红心诡计“释放范围半径 D。

    接下来 5 行,每行四个数,分别为敌人当前所剩的生命值 L,生命上限 R,以及其位置的横坐标 x 和纵坐标 y.
    0≤AD,AP,D≤1000
    -1000≤X,Y,x,y≤1000
    1≤L≤R≤5000

    输出

    第一行,若可以击杀全部敌人,输出”YES“,否则输出”NO“。

    若为"NO",第二行额外输出一个整数,表示最大击杀数。

    样例输入 

    1. 50 200 0 0 3
    2. 200 1500 0 3
    3. 800 4000 2 2
    4. 100 1200 1 1
    5. 500 3900 3 0
    6. 600 4400 4 3

    样例输出 

    YES

    提示

    对于样例 ,可行的情况为从 (0,0) 开始,先击杀 (0,3) 刷新了技能,然后击杀 (1,1) 再次刷新技能,接着击杀 (3,0),(2,2),(4,3)或者从 (0,0)开始,先击杀 (3,0) 刷新了技能,然后击杀 (1,1) 再次刷新技能,接着击杀 (0,3),(2,2),(4,3)

    源代码 

    简单的DFS深度优先搜索,属递归函数,也属基础算法。首先,在我们进行AP、AD、X、Y、D的输入之后,进行5组敌人的数组输入,在每个敌人的数据进行输入时,结合已经给定的AP、AD来计算是否能够击杀其,若是不能击杀则在vis用于标记的数组之中置其为0(1为可杀0为不可杀),而后开始进行深度优先搜索,在搜索的时候选择距离合适的杀(运用cmath库的sqrt函数来计算两点之间的距离),不管三七二十一就是杀,杀完个再杀一个,直到不能杀了(人被杀完了或者不能再杀了),回归条件为杀人人数,若是满足5人则置flag为1用于输出YES,否则求取所杀人的最大值,而后返回一步换另一人杀,若是还不能杀则返回上一步,继续换人杀,所有路走完毕时,输出NO和所杀人的最大值即可

    1. #include <iostream>
    2. #include <cmath>
    3. using namespace std;
    4. double AD,AP,X,Y,D;
    5. double x[10],y[10],L[10],R[10],s[10];
    6. int vis[10],flag = 0,ans = 0;
    7. void dfs(int x0,int y0,int nums)
    8. {
    9. ans = max(ans,nums);
    10. if(nums == 5)
    11. {
    12. flag = 1;
    13. return;
    14. }
    15. for(int i = 1;i <= 5;i ++ )
    16. {
    17. double d = sqrt((x0 - x[i]) * (x0 - x[i]) + (y0 - y[i]) * (y0 - y[i]));
    18. if(d <= D && vis[i] == 0)
    19. {
    20. vis[i] = 1;
    21. dfs(x[i],y[i],nums + 1);
    22. vis[i] = 0;
    23. }
    24. }
    25. }
    26. int main()
    27. {
    28. cin >> AD >> AP >> X >> Y >> D;
    29. for(int i = 1;i <= 5;i ++ )
    30. {
    31. cin >> L[i] >> R[i] >> x[i] >> y[i];
    32. s[i] = 240 + AP * 0.5 + 160 + AD * 1.0 + (R[i] - L[i]) * 0.25;
    33. if(s[i] < L[i])vis[i] = 1;
    34. }
    35. dfs(X,Y,0);
    36. if(flag == 1)cout << "YES" << endl;
    37. else cout << "NO" << endl << ans << endl;
    38. return 0;
    39. }

    E: 不要停下来啊!!! 

    题目描述

    新的学期开始了,我们的奥尔加团长又一次嘱托我们,无论以后学习遇到什么困难,都请记住:“不要停下来啊!!!”
     

    输入

    同样例输入

    第一行输入三个整数N,M,K,代表一个N行M列的二维数组和K行坐标信息

    接下来共K行,每行输入两个整数x,y,对于二维数组(x,y)位置的点标记为"#",未被标记的点记为"."

    输出

    同样例输出(注意每个字符间隔一个空格)

    样例输入 

    1. 15 9 44
    2. 0 2
    3. 1 1
    4. 2 1
    5. 3 1
    6. 3 3
    7. 3 4
    8. 4 1
    9. 4 3
    10. 4 4
    11. 5 1
    12. 5 2
    13. 5 3
    14. 5 4
    15. 5 5
    16. 5 6
    17. 6 2
    18. 6 3
    19. 6 4
    20. 6 5
    21. 6 6
    22. 7 2
    23. 7 3
    24. 7 4
    25. 7 5
    26. 7 6
    27. 8 2
    28. 8 3
    29. 8 4
    30. 8 5
    31. 8 6
    32. 9 3
    33. 9 4
    34. 9 6
    35. 10 3
    36. 10 5
    37. 10 7
    38. 11 3
    39. 11 6
    40. 12 3
    41. 12 6
    42. 13 3
    43. 13 6
    44. 14 3
    45. 14 6

    样例输出

    1. . . # . . . . . .
    2. . # . . . . . . .
    3. . # . . . . . . .
    4. . # . # # . . . .
    5. . # . # # . . . .
    6. . # # # # # # . .
    7. . . # # # # # . .
    8. . . # # # # # . .
    9. . . # # # # # . .
    10. . . . # # . # . .
    11. . . . # . # . # .
    12. . . . # . . # . .
    13. . . . # . . # . .
    14. . . . # . . # . .
    15. . . . # . . # . .

    源代码 

    简单的二维字符型数组的处理 

    1. #include <iostream>
    2. using namespace std;
    3. const int N = 1000 + 10;
    4. char a[N][N];
    5. int main()
    6. {
    7. int n,m,k;
    8. cin >> n >> m >> k;
    9. while(k -- )
    10. {
    11. int x,y;
    12. cin >> x >> y;
    13. a[x][y] = '#';
    14. }
    15. for(int i = 0;i < n;i ++ )
    16. {
    17. for(int j = 0;j < m;j ++ )
    18. {
    19. if(a[i][j] != '#')a[i][j] = '.';
    20. cout << a[i][j] << ' ';
    21. }
    22. cout << endl;
    23. }
    24. return 0;
    25. }

    F: 反卷行动 

    题目描述

    众所周知,河工院的计算机学院和软件学院存在着许多大佬,这些大佬们每天最喜欢做的事情就是口口声声的称:"今天又是摆烂的一天,啥也没干",其实背地里却是名副其实的"卷王",私底下学了不少东西

    LYS心中大惊Σ(っ °Д °;)っ!他说:“这样好吗?这不好!”

    LYS深知卷王的可怕,靠近卷王的人迟早也会被卷王传染,进而也会变成卷王,如此下去,所有人都将被卷,这太可怕了!

    可惜的是,变成卷王的人再也变不会原来的样子了,所以LYS只能尽可能的想办法守护还没有变成卷王的人。
     

    输入

    第一行输入两个整数N,M,分别代表寝室最大编号和卷王宿舍的数量


    5≤N≤1e9
    1≤M≤min(N,2e5)
    1≤mi≤N

    输出

    输出一个整数,输出最终没有被变成卷王的宿舍数量

    样例输入 

    1. 6 2
    2. 3 5

    样例输出

    2

    提示

    输入的卷王宿舍编号的顺序是随机的

    源代码 

    局部最优化、贪心原则,首先我们将问题模型简化,将所有的宿舍看作一个环,其中的卷王宿舍就好比生物课本之中嵌入环之中的蛋白质,计算每两个环之间的非卷王宿舍个数,对于首尾相良的非卷王宿舍我们采取特判来进行计算,注意题目提示,卷王宿舍并非按照一定顺序给出,而是随机的,因此,我们首先要对卷王宿舍进行sort升序排序,而后对其遍历,在遍历之中利用特判计算首位相连之间的非卷王宿舍的个数,并计算两个卷王宿舍之间的非卷王宿舍的个数,存入动态数组当中,对于动态数组中的数据采用cmp重定义使其降序排序,得到一个降序序列,而后我们将两天两天的计算,举个例子,初始时所能感染的个数flag为0,若是两个卷王宿舍之间存在非卷王宿舍,非卷王宿舍的个数之和A[i]大于等于2,那么两天之后我们能够得到的受保护的非卷王宿舍个数则是A[i] - 1,ans加上A[i] - 1即可,在此两天之内,此二者卷王宿舍所能感染的宿舍为4个,因此感染数flag自增4,i自增1,从而对于下一个非卷王宿舍数的和进行判断,和A[若是下一个非卷王宿舍之i]减去flag大于等于2则ans加上A[i] - 1即可,若是A[i]减去flag小于等于0,则跳出循环,若是A[i]减去flag等于1,则ans加1再break

    1. #include <iostream>
    2. #include <vector>
    3. #include <algorithm>
    4. using namespace std;
    5. vector<int> A,B;
    6. int cmp(int a,int b)
    7. {
    8. return a > b;
    9. }
    10. int main()
    11. {
    12. int n,m;
    13. cin >> n >> m;
    14. int ans = 0;
    15. int extra = 0;
    16. for(int i = 1;i <= m;i ++ )
    17. {
    18. int num;
    19. cin >> num;
    20. B.push_back(num);
    21. }
    22. sort(B.begin(),B.end());
    23. for(int i = 0;i < B.size();i ++ )
    24. {
    25. if(i == 0)
    26. {
    27. if(B[i] == 1)extra += 0;
    28. extra += B[i] - 1;
    29. }
    30. else if(i == int(B.size()) - 1)
    31. {
    32. if(B[i] == n)extra += 0;
    33. else extra += n - B[i];
    34. }
    35. if(i - 1 >= 0)A.push_back(B[i] - B[i - 1] - 1);
    36. }
    37. A.push_back(extra);
    38. sort(A.begin(),A.end(),cmp);
    39. int flag = 0;
    40. for(int i = 0;i < int(A.size());i ++ )
    41. {
    42. A[i] -= flag;
    43. if(A[i] == 1)
    44. {
    45. ans += 1;
    46. break;
    47. }
    48. if(A[i] <= 0)break;
    49. ans += A[i] - 1;
    50. flag += 4;
    51. }
    52. cout << ans << endl;
    53. return 0;
    54. }

    G: 机器人OR寄器人 

    题目描述

    随着新学期的开始,HFCJ学长准备开发一个可以接收指令从而行动的机器人,现在硬件部分的设计已经解决,只剩下编辑指令和处理的部分。可是这种小事对他来说太简单了,用他的原话说就是:"有手就行",于是他就懒得继续做下去了。

    HFCJ把这个做了一半的机器人丢给了LYS,如果他能完成剩余的工作,并且成品能够通过测试,那么这个机器人就归LYS辣。

    以下是待完成的任务要求:
     



    LYS肥肠想要这个机器人,可是他啥也不会,现在他来找你帮忙了,你能帮帮他吗?

    输入

    输出

    一行,输出两个整数,表示执行完所有指令后机器人的坐标
    1≤N,M≤1000
    -1000≤X,Y,x,y≤1000
     

    样例输入

    1. 3 4 0 0
    2. 1 1
    3. -1 -1
    4. 2 2
    5. 1 3 2 2

    样例输出

    1 1

    源代码 

    对于二维坐标移动的指令进行存储,创建两个一位数组,一个记录x的变化,一个记录y的变化,若在接下来m次调用指令的过程之中,将目前的X + dx[m],Y + dy[m]即可完成坐标的变换,输出最后的坐标即可 

    1. #include <iostream>
    2. using namespace std;
    3. const int N = 100000 + 10;
    4. int dx[N],dy[N];
    5. int main()
    6. {
    7. int n,m,x,y;
    8. cin >> n >> m >> x >> y;
    9. for(int i = 1;i <= n;i ++ )cin >> dx[i] >> dy[i];
    10. while(m -- )
    11. {
    12. int num;
    13. cin >> num;
    14. x = x + dx[num];
    15. y = y + dy[num];
    16. }
    17. cout << x << ' ' << y;
    18. return 0;
    19. }

    H: 帕秋莉GO!!! 

    题目描述

    众嗦♂粥汁,帕秋莉·诺蕾姬是《东方Project》系列弹幕游戏及其衍生作品的登场角色之一。

    她是大小姐蕾米莉亚的好朋友,是个大概有100岁的魔女。她居住在幻想乡中藏书最多的大图书馆——红魔馆地下图书馆中。喜欢读书,并且会使用七曜魔法。

    贤者(Philosopher)的另一个意思是哲学家,因此也可称她为七曜的哲♂学家。平常总待在大图书馆里的她,患有哮喘、贫血,体质虚弱,因此在肉搏♂战中非常劣势。

    在比利王客串的兄贵本篇TalesFromTheFoxhole里,作为军官的比利对于下属的小兵在休息时间感到不满而发出的“Attention on”因为音质问题常被空耳成“帕秋莉♂GO”。



    由于某种不可知的异变,姆Q穿越到了知名演员野兽♂仙贝的家中,这名不谙世事的马猴烧酒头一次从红魔馆的地下走出,没想到居然会收获颇丰,她在野兽♂仙贝的激情指导下学习到了她从未见识过的膜法,只不过由于哮喘的原因,导致她无法将这强大的咒语一次性咏唱完毕。

    我们的姆Q非常困扰,她决定将这条强大的咒语告诉你,想借助科学的力量完成咏唱,你能帮帮她吗?

    咒语:持续进行咏唱“114514”直到达到“1919“次

    输入

    输出

    每行输出"114514"(不包含引号),共输出1919行

    源代码 

    签到题,太简单了 

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. for(int i = 1;i <= 1919;i ++ )cout << "114514" << endl;
    6. return 0;
    7. }
  • 相关阅读:
    Spring 缓存注解这样用,太香了!
    电脑监控软件是如何提高员工工作效率的?
    从MVC到DDD的架构演进
    【Linux】I/O多路复用-SELECT/POLL/EPOLL
    七牛云图床设置
    神经网络中常见的超参数,神经网络参数个数计算
    javaScript:DOM中常用尺寸
    L2-035 完全二叉树的层序遍历(Python)
    ChatGPT提示词工程&LLM应用全解
    浅谈Batch(批次合并)
  • 原文地址:https://blog.csdn.net/couchpotatoshy/article/details/127027105