首页 > 其他分享 >P8818 [CSP-S 2022] 策略游戏

P8818 [CSP-S 2022] 策略游戏

时间:2024-09-22 13:01:42浏览次数:1  
标签:lg mmib 20 int ll P8818 2022 ans CSP

原题链接

学习笔记

感觉非常复杂?对于现在的我还是有深度的,首先第一个大坑就是并不需要真的求出c矩阵,这个题意就是让你在区间中选数,但要求乘积最大,所以要分讨。

你假定 \(a_i\ge0\),那这时如果 \(min(b_i)\ge0\) 取 \(max(a_i)\),否则取 \(min(a_i\ge0)\),相反的,假定\(a_i<0\),那这时如果 \(max(b_i)\ge0\) 取 \(max(a_i)\),否则取 \(max(a_i<0)\)。

这就是贪心的思想,感觉非常有深度(菜),然后就需要维护6个ST表,非常糟糕啊,然后就没有然后了,你就慢慢维护去吧。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;

int a[N],b[N],lg[N];
int n,m,q;

int mxa[N][20];
int mia[N][20];
int rmxa[N][20];
int rmia[N][20];

int mxb[N][20];
int mib[N][20];

int main(){
	ios::sync_with_stdio(false);
	cin>>n>>m>>q;
	lg[1]=0;
	for(int i=2;i<=max(n,m);i++){
		lg[i]=lg[i>>1]+1;
	}
	
	for(int i=1;i<=n;i++){
		cin>>a[i];
		mxa[i][0]=mia[i][0]=a[i];
		rmia[i][0]=0<=a[i]?a[i]:INT_MAX;//正数中取最小,没正数取intmin标记为无 
		rmxa[i][0]=a[i]<0?a[i]:INT_MIN;//负数中取最大,没负数取intmax标记为无 
	}
	
	for(int i=1;i<=m;i++){
		cin>>b[i];
		mxb[i][0]=mib[i][0]=b[i];
	}
	
	for(int j=1;j<=lg[n];j++){
		for(int i=1;i<=n-(1<<j)+1;i++){
			int p=i+(1<<(j-1));
			mxa[i][j]=max(mxa[i][j-1],mxa[p][j-1]);
			rmxa[i][j]=max(rmxa[i][j-1],rmxa[p][j-1]);
			mia[i][j]=min(mia[i][j-1],mia[p][j-1]);
			rmia[i][j]=min(rmia[i][j-1],rmia[p][j-1]);
		}
	}
	
	for(int j=1;j<=lg[m];j++){
		for(int i=1;i<=n-(1<<j)+1;i++){
			int p=i+(1<<(j-1));
			mxb[i][j]=max(mxb[i][j-1],mxb[p][j-1]);
			mib[i][j]=min(mib[i][j-1],mib[p][j-1]);
		}
	}
	
	while(q--){
		int la,ra,lb,rb;
		cin>>la>>ra>>lb>>rb;
		int x=lg[ra-la+1],y=lg[rb-lb+1];
		int pa=ra-(1<<x)+1,pb=rb-(1<<y)+1;
		
		int mmxa=max(mxa[la][x],mxa[pa][x]);
		int rmmxa=max(rmxa[la][x],rmxa[pa][x]);
		
		int mmia=min(mia[la][x],mia[pa][x]);
		int rmmia=min(rmia[la][x],rmia[pa][x]);
		
		int mmxb=max(mxb[lb][y],mxb[pb][y]);
		int mmib=min(mib[lb][y],mib[pb][y]);
		
		long long ans=LONG_LONG_MIN;
		
		ans=max(ans,(ll)mmxa*(mmxa>=0?mmib:mmxb));
		ans=max(ans,(ll)mmia*(mmia>=0?mmib:mmxb));
		
		if(rmmxa!=INT_MIN){
			ans=max(ans,(ll)rmmxa*(rmmxa>=0?mmib:mmxb));
		} 
		if(rmmia!=INT_MAX){
			ans=max(ans,(ll)rmmia*(rmmia>=0?mmib:mmxb));
		}
		cout<<ans<<"\n";
	}

	return 0;
}

标签:lg,mmib,20,int,ll,P8818,2022,ans,CSP
From: https://www.cnblogs.com/sadlin/p/18425184

相关文章

  • CSP2024 游记
    初赛\(\rmDay1\)上午到机房,但是啥也不想干,摆了一会。等有毒老师来了之后围观有毒老师下\(\rmchess\),虽然我不会下\(\rmchess\),但是看得很快乐,有毒老师超超快棋一路下到了\(\rmrating\800\),有实力的。看了一下\(\rmJ\)组题,发现不会格雷码,保单了。下午润去考初赛,在......
  • 第31次CCF-CSP认证考试 第一题 坐标变换(其一)满分题解
    第31次CCF-CSP认证考试第一题坐标变换(其一)写在前面的话这道题偏简单,我们废话不多说,直接上代码。老系统的链接:旧系统(不过只有第三十二次以及之前的,第三十三及以后的只能在新系统里提交查看分数)。代码#include<iostream>usingnamespacestd;intmain(){ intn,m; ......
  • 「Grow」CSP初赛 2024 可乐消失记
    过了。(虽然没用)Day0睡不着觉。想到如果出锅就要再搞一年whk,那样还不如跳了。Day1坐地铁来到可爱的HNSDFZ。环境真好,至少比我们学校好。来到高阳楼蹭网。传奇之连不上的SDFZwifi。打J组比赛。前30min正常写题,10min检查完毕。睡觉。基本没遇到熟人。小朋友都......
  • 中国能源发展报告2022
    中国能源发展报告2022林伯强高耗能产业的出路高耗能产业布局:08年,东高西低>>08年之后,西高东低,自南向北移动,东减西增;转移趋势北部沿海城市-河北,山东,2012-2017高耗能产业流入下降,去产能;2009提出中部崛起战略,通过促进中部地区的制造业和城市化促进经济的增长,大量高......
  • CSP-J 2024 入门组初赛第一轮初赛试题及答案解析
    CSP-J2024入门组初赛第一轮初赛试题及答案解析一、单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项)132位int类型的存储范围是()A-2147483647~+2147483647B-2147483647~+2147483648C-2147483648~+2147483647D-2147483648~+2147483648答案C......
  • CSP 2024 初赛
    周一开始集训!!!正式赛季咯,不得好好记录一下(day-9982443539.17中秋节,在放假,得知在本部考初赛,这就不好玩了啊,连坐大巴的机会都没有了。day-1晚3来机房做2022年的初赛真题,三十多分钟做完选择,huge开始\(d\)我们早预备睡觉(骂的好黑)又单独\(d\)我课间睡觉,huge:我看看你们......
  • CSP 初赛游记
    \(J\)组估分\(86.5\)\(S\)组估分\(68.5\)(没救了)。上午\(6:20\)起床,吃早饭。早读背诵岳阳楼记,获得一位数竞爷和一位物竞爷的祝福。\(7:25\)上车,成为唯一的初三还在打\(J\)组的菜鸡。车上没有手机,听着MP3睡觉。\(8:50\)到达考点。拿到了准考证和餐卷。找到了自己......
  • CSP-S2024初赛心得
    预估分数:73.5写题心得:13min:前15道题直接写完了,这是CSP-S的难度?25min:阅读程序第一题写完,还算简单,主程序看着应该是排序,直接模拟就能写完。45min:这tm是什么题???第二题只看懂是状压dp,实现什么根本不知道。第三题看出来了质数筛,其他的一点没懂,赛后才知道tmd要手模哈希表,20min写了个......
  • CSP-S游寄
    《写写吧,不然学弟学妹以为我是来打酱油的......
  • 历年CSP-J初赛真题解析 | 2024年CSP-J初赛完善程序(33-42)
    学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。附上汇总贴:历年CSP-J初赛真题解析|汇总_热爱编程的通信人的博客-CSDN博客#include<iostream>#include<vector>usingnamespacestd;boolisSquare(intnum){ inti=__1__; intbound=__2__......