- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2022年CSP-S第二轮真题的解析和源码
2022年CSP-J第二轮真题源码解析
个人解析,非评分标准答案。
T2[ CSP-J?2022] 策略游戏
【题目描述】
小L和小Q在玩一个策略游戏。
有一个长度为?n?的数组?A?和一个长度为?m?的数组?B,在此基础上定义一个大小为?n×m?的矩阵?C,满足?Ci j = Ai×Bj。所有下标均从?1?开始。
游戏一共会进行?q?轮,在每一轮游戏中,会事先给出?4?个参数?l1, r1, l2, r2,满足?1≤ l1≤ r1≤ n、1≤ l2≤ r2≤ m。
游戏中,小L先选择一个?l1~r1?之间的下标?x,然后小Q选择一个?l2~r2?之间的下标?y。定义这一轮游戏中二人的得分是?Cx y。
小L的目标是使得这个得分尽可能大,小Q的目标是使得这个得分尽可能小。同时两人都是足够聪明的玩家,每次都会采用最优的策略。
请问:按照二人的最优策略,每轮游戏的得分分别是多少?
【输入格式】
第一行输入三个正整数n,m,q,分别表示数组?A,数组B的长度和游戏轮数。
第二行:n个整数,表示?Ai,分别表示数组?A的元素。
第三行:m个整数,表示Bi?,分别表示数组?B?的元素。
接下来q行,每行四个正整数,表示这一次游戏的?l1, r1, l2, r2。
【输出格式】
输出共q行,每行一个整数,分别表示每一轮游戏中,小L和小Q在最优策略下的得分。
【输入输出样例】
输入#1
3 2 2
0 1 -2
-3 4
1 3 1 2
2 3 2 2
输出#1
0
4
输入#2
6 4 5
3 -1 -2 1 2 0
1 2 -1 -3
1 6 1 4
1 5 1 4
1 4 1 2
2 6 3 4
2 5 2 3
输出#2
0
-2
3
2
-1
【样例解释#1】
这组数据中,矩阵C?如下:
0
在第一轮游戏中,无论小L选取的是?x=2?还是?x=3,小Q都有办法选择某个?y?使得最终的得分为负数。因此小L选择?x=1?是最优的,因为这样得分一定为?0。
而在第二轮游戏中,由于小L可以选x=2,小Q只能选y=2,如此得分为?4。
【数据范围】
对于所有数据,1≤n,m,q≤100000,?1000000000≤Ai,Bi≤1000000000。对于每轮游戏而言,1≤l1≤r1≤n,1≤l2≤r2≤m。
其中,特殊性质1为:保证Ai,Bi0。
特殊性质2为:保证对于每轮游戏而言,要么l1=r1,要么l2=r2。
参考源码1:
#include?bits/stdc++.h
using?namespace?std;
typedef?long?long?LL;
const?int?N?=?100005;
const?LL?MAX_VALUE?=?(1e9?*?1e9);
int?a[N],?b[N];
LL?minValue[N];
int?main()?{
????int?n,?m,?q;
????cin??n??m??q;
????for?(int?i?=?1;?i?=?n;?i++)?cin??a[i];
????for?(int?i?=?1;?i?=?m;?i++)?cin??b[i];
????for?(int?i?=?1;?i?=?q;?i++)?{
????????int?l1,?r1,?l2,?r2;
????????cin??l1??r1??l2??r2;
????????int?rows?=?r1?-?l1?+?1;
????????int?columns?=?r2?-?l2?+?1;
????????int?index?=?0;
????????for?(int?row?=?0;?row??rows;?row++)?{
????????????minValue[index]?=?MAX_VALUE;
????????????for?(int?column?=?0;?column??columns;?column++)?{
????????????????LL?temp?=?a[l1?+?row]?*?b[l2?+?column];
????????????????//不能直接用min函数,不指出long?long?int
????????????????minValue[index]?=?(minValue[index]??temp)???temp?:?minValue[index];
????????????}
????????????index=index+1;
????????}
????????LL?maxScore?=?-MAX_VALUE;
????????for?(int?j?=?0;?j??rows;?j++)?{
????????????//不能直接用max函数,不指出long?long?int
专注于计算机专业的毕业论文辅导,包括:选题、文献搜集、论文结构、算法、程序、毕业论文答辩等; 专注于计算机专业的期刊论文辅导; 专注于计算机专业教学课件、教案和考试试题的开发。
文档评论(0)