把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

【期望】CF963E Circles of Waiting

题目翻译:
首先有一个复杂度很高的(貌似是 R 6 R^6 R6级别)的高斯消元。

考虑优化。
注意到本题在网格图上操作。 f x , y f_{x,y} fx,y 有系数的方程并不会太多,而且有系数的一定与它相邻。。我们从上至下从左至右依次给在圆内的点标号,那么对于当前点来说,相关的点(除了等式右边)和他的标号都不超过 2 R 2R 2R
所以高斯消元只需要管向右和向下的 2 R 2R 2R就可以了

复杂度可以降到 R 4 R^4 R4的级别。

#include<cstdio>
#include<algorithm>
#include<vector>
#include<cmath>
#include<cstring>
using namespace std;
#define N 8005
#define M 2005
#define P 1005
#define MOD 1000000007
int n,A,B;
int w[P][P],cnt,f[N],s[N][M],val[N],ans[N],p[5],sum;
inline int rd()
{
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
	return f*x;
}
const int dx[]={-1,0,1,0},dy[]={0,-1,0,1};
int ksm(int a,int b)
{
	int res=1;
	while(b)
	{
    	if(b&1)
			res=1ll*res*a%MOD;
		a=1ll*a*a%MOD;
		b>>=1;
	}
	return res;
}
int Gauss()
{
	for(int i=1;i<=cnt;i++)
	{
	for(int j=i+1,k=1;j<=cnt&&k<=A;j++,k++)
		if(s[j][A-k])
		{
        	int num=1ll*s[j][A-k]*ksm(s[i][A],MOD-2)%MOD;
        	for(int x=A,y=A-k;x<=B;x++,y++)
				s[j][y]=(s[j][y]-1ll*num*s[i][x]%MOD+MOD)%MOD;
        	val[j]=(val[j]-1ll*num*val[i]%MOD+MOD)%MOD;
		}
	}
	for(int i=cnt;i>=w[n][n];i--)
	{
    	ans[i]=1ll*val[i]*ksm(s[i][A],MOD-2)%MOD;
    	for(int j=i-1,k=1;j&&k<=A;j--,k++)
			if(s[j][A+k])
				val[j]=(val[j]-1ll*ans[i]*s[j][A+k]%MOD+MOD)%MOD;
	}
	return ans[w[n][n]];
}
int main()
{
	n=rd();
	A=n*2;B=n*4;
	for(int i=0;i<4;i++)
	{
		p[i]=rd();
		sum+=p[i];
	}
	for(int i=0;i<=A;i++)
    	for(int j=0;j<=A;j++)
			if(1ll*(i-n)*(i-n)+1ll*(j-n)*(j-n)<=1ll*n*n)
				w[i][j]=++cnt;
	for(int i=0;i<=A;i++)
    	for(int j=0;j<=A;j++)
			if(w[i][j])
			{
				for(int k=0;k<4;k++)
				{
        			int x=i+dx[k],y=j+dy[k];
        			if(w[x][y])
						s[w[i][j]][w[x][y]-w[i][j]+A]=p[k];
				}
        		s[w[i][j]][A]=MOD-sum;
        		val[w[i][j]]=MOD-sum;
    	   }
	printf("%d\n",Gauss());
	return 0;
}

(我觉得这道题很难,很不容易想到啊喂)

参考博客:https://blog.csdn.net/lycheng1215/article/details/80180178
https://www.cnblogs.com/yqgAKIOI/p/10256438.html

posted @ 2021-11-18 14:26  Starlight_Glimmer  阅读(7)  评论(0编辑  收藏  举报  来源
浏览器标题切换
浏览器标题切换end