首页 > 其他分享 >Atcoder题解:Agc004_e

Atcoder题解:Agc004_e

时间:2023-04-16 18:44:42浏览次数:48  
标签:ansx Atcoder ansy Agc004 int 题解 mu dp 105

\[吓死我了,还以为写了半天的被自己删掉了 \]

\[但是 \text{Ctrl+S} 会保存草稿啊 \]

\[以后一定要保留这个好习惯 \]

第一步转化题意,我们把“所有机器人移动”转化成“出口带着边框移动”,而在出口运动过程中超出边框的机器人,就“死”了。

然后我们发现,出口运动过程中,假设出口目前走到的最左边的列是 \(l\),以此类推定义 \(r,u,d\),那么设一开始出口离四个方向边框的距离分别是 \(ml,mr,mu,md\),那么对于 边框之外一定不会已经被遇到 的机器人而言,只要大于 \(l+mr-1\),其贡献就已经变成 \(0\) 了,不会再产生贡献了。而我们目前在 \(l,r,u,d\) 限定的范围内运动,一定不会导致本来存活的机器人在移动后死亡

那么,我们就可以设 \(dp\) 状态为 \(dp_{l,r,u,d}\) 表示当前出口走到的最左边的列是 \(l\),类似定义 \(r,u,d\),拯救的机器人个数最大值。

然后我们枚举当前往下是往上下左右哪个方向扩展。我们发现,如果我们往 \(l-1\) 列扩展,只要 \(u\) 和 \(d\) 的最值不改变,我们可以在这一列任意移动。所以我们就可以钦定当前机器人已经可以在 \(\{l,r,u,d\}\) 限定范围内移动且在这个范围内移动不会造成新贡献,并且往 \(l-1\) 转移就计算整个 \(l-1\) 列上 \([u,d]\) 的所有格子的贡献。

而 \(l-1\) 列上的有贡献的格子是一段区间 \([U,D]\),\(U\) 首先要满足大于等于 \(u\),其次要满足 \(d-mu+1\le U\)。\(D\) 同理。有且仅有子矩形 \(\{l-1,l-1,U,D\}\) 内的点会产生贡献,可以直接使用二维前缀和 \(O(1)\) 求出。

然后同理可得 \(r,u,d\) 的转移。这样的复杂度是 \(O(n^3)\),乍一看常数不小,四次转移,每次做一次二维前缀和。但是实际上,我们只要剪掉所有贡献为 \(0\) 的转移,就可以了。因为我们相当于剪掉了所有处在某一端点向已经死绝的方向转移的所有转移,而这类转移在任何的图上都会出现在 \(\dfrac{3}{4}\) 的转移里。

int n,m,a[105][105],ansx,ansy;
int dp[105][105][105][105];
int ml,mr,mu,md;
int sum[105][105],tmp[105];
st s;
inline void upd(int &x,int y){
	x=max(x,y);
}
inline int query(int x,int y,int xx,int yy){
	if(x>xx||y>yy||x<1||y<1)return 0;
	return sum[xx][yy]-sum[xx][y-1]-sum[x-1][yy]+sum[x-1][y-1];
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m;
	rp(i,n){
		cin>>s;
		rp(j,m){
			if(s[j-1]=='o')a[i][j]=1;
			else if(s[j-1]=='E')ansx=i,ansy=j;
		}
	}
	ml=ansy,mr=m-ansy+1,mu=ansx,md=n-ansx+1;
	rp(i,n){
		rp(j,m){
			tmp[j]=tmp[j-1]+a[i][j];
			sum[i][j]=sum[i-1][j]+tmp[j];
		}
	}int ans=0;
	per(l,1,ansy)rep(r,ansy,m){
		per(u,1,ansx)rep(d,ansx,n){
			int res=dp[l][r][u][d];
			ans=max(ans,res);
			if(l-1>=r-ml+1){
				int U=max(u,d-mu+1),D=min(d,u+md-1);
				upd(dp[l-1][r][u][d],res+query(U,l-1,D,l-1));
			}
			if(r+1<=l+mr-1){
				int U=max(u,d-mu+1),D=min(d,u+md-1);
				upd(dp[l][r+1][u][d],res+query(U,r+1,D,r+1));
			}
			if(u-1>=d-mu+1){
				int L=max(l,r-ml+1),R=min(r,l+mr-1);
				upd(dp[l][r][u-1][d],res+query(u-1,L,u-1,R));
			}
			if(d+1<=u+md-1){
				int L=max(l,r-ml+1),R=min(r,l+mr-1);
				upd(dp[l][r][u][d+1],res+query(d+1,L,d+1,R));
			}
		}
	}cout<<ans<<endl;
	return 0;
}
//Crayan_r

标签:ansx,Atcoder,ansy,Agc004,int,题解,mu,dp,105
From: https://www.cnblogs.com/jucason-xu/p/17323553.html

相关文章

  • js 传递汉字 乱码_JavaScript 字符串反转乱码问题解决
    https://blog.csdn.net/weixin_36483301/article/details/113451892emoji表情和非常用字实际解决中文编码问题,可以通过解码解决js中使用decodeURL即可解决......
  • Atcoder题解:Agc013_e
    我们考虑转化题意,一个合法的将\(1\simN\)划分成长度依次为\(a_1,a_2,\cdotsa_k\)的小区间,对答案的贡献为\(a_1^2a_2^2\cdotsa_k^2\)。化贡献为方案数,我们在每个长度为\(a_i\)的小区间内放置两个独立的标记,每个合法的划分方案对放置标记方案种数的贡献恰好是其对最终答......
  • CF题解
    D.ABGraph2000构造https://codeforces.com/problemset/problem/1481/D题解:由于只有两种边,我们可以枚举较小结构的特性并循环来构造整体解。对于任意两个点,[u->v,v->u]只有4种情况,对于[1,1],[0,0]直接得解,可以循环这个环来构造回文,否则[1,0],[0,1],注意到当所需回文为odd长时,......
  • abc249_f Ignore Operations 题解
    IgnoreOperations题意Takahashi有一个整数\(x\),初始\(x=0\)。有\(n\)次操作。第\(i\)次操作用两个整数\(t_i,y_i\)描述:如果\(t_i=1\),将整数\(x\)替换为\(y_i\)。如果\(t_i=2\),将整数\(x\)替换为\(x+y_i\)。Takahashi可以跳过其中至多\(K\)......
  • TJOI 2015 概率论 题解
    TJOI2015概率论题解题意求\(n\)个点随机生成的有根二叉树(所有互不同构的二叉树出现情况等概率)的叶子节点数的期望值。题解70答案显然是\(\dfrac{g(n)}{f(n)}\),\(g(n)\)是\(n\)个点为所有二叉树的叶子总数,\(f(n)\)是\(n\)个点能生成的二叉树数。一棵树可以用左......
  • AtCoder 板刷 / vp 记录
    ARC104AtCoder传送门A题解一道小学数学题,$X=\frac{A+B}{2},Y=\frac{A-B}{2}$。B题解一道暴力题。发现子串合法的充要条件是$cnt_{\text{A}}=cnt_{\text{T}}\landcnt_{\text{G}}=cnt_{\text{C}}$,暴力统计即可。C题解简单区间dp。发现$[1,2n]$可以拆......
  • abc249_d Index Trio 题解
    IndexTrio题意给定长度为\(n\)的整数序列\(a=(a_1,a_2,\dots,a_n)\)。请你求出有多少个整数三元组\((i,j,k)\)满足:\(1\leqslanti,j,k\leqslantN\)\(\frac{a_i}{a_j}=a_k\)数据范围\(1\leqslantn,a_i\leqslant2\times10^5\)思路转变式子:\(......
  • Ubuntu系统硬盘安装到其他的电脑上,网络连接不上问题解决
    把Ubuntu系统硬盘安装到其他的电脑上,网络连接不了在一台i5电脑上安装好ubuntu18.04后,把该系统磁盘安装到另外一台i5电脑上。系统可以成功启动,但是不能正常上网。解决办法如下:1)用下面这个命令查看本台电脑上可用的网络接口$ifconfig-a#查看可用的网络接口$iplinks......
  • 题解:【ABC298G】Strawberry War
    题目链接场上被F干碎了,没看见这个典题。原题差不多是这个吧......
  • 栈和队列经典题题解
    目录......