我cin被吞了?
  • 板块灌水区
  • 楼主EurekaStriker
  • 当前回复13
  • 已保存回复13
  • 发布时间2022/11/9 20:26
  • 上次更新2023/10/27 03:35:46
查看原帖
我cin被吞了?
469470
EurekaStriker楼主2022/11/9 20:26
#include<bits/stdc++.h>
using namespace std;
int n,m,k,x,y,a[210][210],f[2][210][210],q[210],v[210],ans,h,r;
bool pan;
int X[6]={0,-1,1,0,0},Y[6]={0,0,0,-1,1};
void dp(int x,int y,int n,int now,int d){
	h=1,r=0;
	for(int i=1;i<=n;i++){
		if(a[x][y]==0)
			r=h+1;  
		else 
		{
			int temp=f[!pan][x][y]+n-i;
			while(h>=r&&temp>v[r]) r--;
			q[r++]=i;
			v[r]=temp;
			while(i-q[h]>now) h++;
			f[pan][x][y]=v[h]+i-n;
		}
		x+=X[d];
		y+=Y[d];
	}
}
int main()
{
    memset(f,0x80,sizeof f);
	cin>>n>>m>>x>>y>>k;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			int tmp;
			scanf("%c",&tmp);
			if(tmp=='x')
				a[n][m]=1;
		}
	}
	f[pan][x][y]=0;
    for(int i=1;i<=k;i++) {
		int h,r,d;
		cin>>h>>r>>d;
		pan^=1;
		if(d==1) 
			for(int j=1;j<=m;j++) 
				dp(n,j,n,r-h+1,d);
		else if(d==2) 
			for(int j=1;j<=m;j++) 
				dp(1,j,n,r-h+1,d);
		else if(d==3) 
			for(int j=1;j<=n;j++) 
				dp(j,m,m,r-h+1,d);
		else 
			for(int j=1;j<=n;j++) 
				dp(j,1,m,r-h+1,d);
	}
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
			ans=max(ans,f[pan][i][j]);
	cout<<ans;
	return 0;
}

k的那个循环里tnnd输入不进东西,是我孤陋寡闻了还是咋了?

2022/11/9 20:26
加载中...