首页 > 其他分享 >策略游戏

策略游戏

时间:2023-09-26 12:55:20浏览次数:32  
标签:aa r1 int 策略 负数 l1 正数 游戏

P8818 [CSP-S 2022] 策略游戏

以下的分析,定义正数 \(\ge 0\),负数 \(\le 0\)。

我们发现,如果第一个人取了正数,第二个人如果有负数,那么就取绝对值最大的负数,即最小的数;如果没有,就取最小的正数,也是最小的数。

如果第一个人取了负数,第二个人如果有正数,那么就取最大的正数,即最大的数;如果没有,就取绝对值最小的负数,也是最大的数。

于是,第二个人的最优策略只有最大值或者最小值。

对于第一个人,我们发现他只可能取最小的正数、最大的负数、最小值、最大值四者其一。

所以我们只要枚举第一个人的四选一,第二人的二选一,然后判断一下第一个人是否存在最小的正数、最大的负数即可。

第一个人要 \(4\) 个最值,第二个人 \(2\) 个,于是开了 \(6\) 个 ST 表维护。

时间复杂度 \(O(n\log n+m\log m+q)\)。

#include<cstdio>
#include<algorithm>
using namespace std;
#define Ed for(int i=h[x];~i;i=ne[i])
#define Ls(i,l,r) for(int i=l;i<r;++i)
#define Rs(i,l,r) for(int i=l;i>r;--i)
#define Le(i,l,r) for(int i=l;i<=r;++i)
#define Re(i,l,r) for(int i=l;i>=r;--i)
#define L(i,l) for(int i=0;i<l;++i)
#define E(i,l) for(int i=1;i<=l;++i)
#define W(t) while(t--)
#define Wh while
typedef long long ll;

const int N=100010,M=17,INF=1e9+1;
int n,m,q,a[N],b[N],LOG[N],amx[M][N],amn[M][N],bmx[M][N],bmn[M][N],fmx[M][N],zmn[M][N];
void init(int mn[][N],int mx[][N],int n,int a[]){
    E(i, n)mn[0][i]=mx[0][i]=a[i];
    E(i, LOG[n])
        for(int j=1;j+(1<<i)-1<=n;++j){
            mn[i][j]=min(mn[i-1][j],mn[i-1][j+(1<<i-1)]);
            mx[i][j]=max(mx[i-1][j],mx[i-1][j+(1<<i-1)]);
        }
}
void Init(){
    E(i, n){
        fmx[0][i]=a[i]<=0?a[i]:-INF;
        zmn[0][i]=a[i]>=0?a[i]:INF;
    }
    E(i, LOG[n])
        for(int j=1;j+(1<<i)-1<=n;++j){
            zmn[i][j]=min(zmn[i-1][j],zmn[i-1][j+(1<<i-1)]);
            fmx[i][j]=max(fmx[i-1][j],fmx[i-1][j+(1<<i-1)]);
        }
}
int qmax(int f[][N],int l,int r){
    int k=LOG[r-l+1];
    return max(f[k][l],f[k][r-(1<<k)+1]);
}
int qf(int l,int r){
    int k=LOG[r-l+1];
    return max(fmx[k][l],fmx[k][r-(1<<k)+1]);
}
int qz(int l,int r){
    int k=LOG[r-l+1];
    return min(zmn[k][l],zmn[k][r-(1<<k)+1]);
}
int qmin(int f[][N],int l,int r){
    int k=LOG[r-l+1];
    return min(f[k][l],f[k][r-(1<<k)+1]);
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("1.in","r",stdin);
    #endif
    scanf("%d%d%d",&n,&m,&q);
    int lim=max(n,m);
    Le(i, 2, lim)LOG[i]=LOG[i>>1]+1;
    E(i, n)scanf("%d",a+i);
    E(i, m)scanf("%d",b+i);
    init(amn,amx,n,a);
    init(bmn,bmx,m,b);
    Init();
    W(q){
        int l1,r1,l2,r2;
        scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
        ll aa[]={qz(l1,r1),qf(l1,r1),qmax(amx,l1,r1),qmin(amn,l1,r1)};
        ll bb[]={qmax(bmx,l2,r2),qmin(bmn,l2,r2)};
        ll ans=-2e18;
        L(i, 4)
            if(i>1||aa[i]!=INF&&aa[i]!=-INF)
                ans=max(ans,min(aa[i]*bb[0],aa[i]*bb[1]));
        printf("%lld\n",ans);
    }
    return 0;
}

标签:aa,r1,int,策略,负数,l1,正数,游戏
From: https://www.cnblogs.com/wscqwq/p/17729845.html

相关文章

  • 2022年抖音最近很火的游戏直播:挤地铁教程+源码+软件
    音最近很火的游戏直播:挤地铁教程+源码+软件先上车先吃肉,卡好后带货,卖号,引私域,接星途广告,接小程序广告,带小游戏赚收益均可。有需要的材料自取:提取码:9jbw ......
  • 论文研读_通过具有可扩展的小子种群的协方差矩阵适应性进化策略解决大规模多目标优化
    论文研读_通过具有可扩展的小子种群的协方差矩阵适应性进化策略解决大规模多目标优化问题创新点随着目标或决策变量的数量增加,收敛性和多样性之间的冲突变得更为严重,因此在它们之间取得平衡变得越来越困难。此时S3-CMA-ES,它使用一系列子种群来近似LSMOPs的PFs,并强调不同子种......
  • win10家庭版开启组策略
    @echooffpushd"%~dp0"dir/b%systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum>gp.txtdir/b%systemroot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mu......
  • 服务器主机:复杂理论的视角与SEO策略
    本文分享自天翼云开发者社区《服务器主机:复杂理论的视角与SEO策略》,作者:不知不觉在数字世界的演变中,服务器主机在信息存储和数据处理方面发挥着核心作用。本文将带你重新认识服务器主机的价值,并通过复杂理论解释其重要性和必要性,同时结合SEO关键字布局来指导你如何优化内容。......
  • GPT 被曝重大缺陷;腾讯侦破国内首个 AI 游戏外挂;特斯拉人形机器人再进化丨 RTE 开发者
    开发者朋友们大家好:这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,欢迎大家留......
  • 【Python入门教程】Python实现猜数字小游戏
    ​    今天跟大家分享一下很久之前自己做的一款猜数字小游戏,基本的循环判断语句即可实现,可以用来当练手或者消磨时间用。    大家在编代码的时候最重要就是先理清逻辑思路,例如应该套几层循环、分几个模块等等。然后在编码时可以先随意一点,变量名、函数等可以先......
  • Oracle RMAN 保留策略
      OracleRAMN支持备份文件保留策略,方便DBA根据需要删除过期的备份文件,提供了时间窗口、备份次数2钟策略。   时间窗口:rman确保保留数据库能恢复到最近N天的备份文件CONFIGURERETENTIONPOLICY TORECOVERYWINDOWTONDAYS   备份次数:rman确保保留数据库......
  • 用Python实现的本地美食和餐饮业SEO策略
     当谈到本地美食和餐饮业的SEO(搜索引擎优化)策略时,Python是一种强大的编程语言,可以帮助我们自动化和优化各种任务。在这篇文章中,我将介绍一些使用Python实现的本地美食和餐饮业SEO策略的方法。 1.网站优化(WebsiteOptimization): -使用Python的网页解析库(如BeautifulSoup)来......
  • Kibana数据索引模式设计策略案例
    前言Kibana是一个非常流行的数据可视化工具,它可以帮助我们快速地对数据进行分析和展示。在使用Kibana的过程中,数据索引模式的设计非常重要,它直接影响到我们对数据的查询和分析效率。本文将介绍一些Kibana数据索引模式设计的策略案例,希望能够帮助大家更好地使用Kibana。策略一:尽量......
  • unity 中实现 rts 游戏对士兵的选择和移动
    playerController部分用来处理玩家鼠标对场景内元素交互的逻辑代码如下usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.AI;publicclassPlayerController:MonoBehaviour{//场景中的士兵角色列表publicGa......