• 【CSP-S 2019模拟】题解


    垃圾考试浪费时间

    T1:

    不说是随机数据做nmnm

    每次O(n)O(n)暴力很显然
    每次考虑一次修改对当前根的影响,暴力跳即可

    心情太差没写代码

    T2:

    以为分治消元跑不过去就没写
    不过只消有值得位置就可以跑的很快

    #include<bits/stdc++.h>
    using namespace std;
    #define re register
    #define cs const
    #define pb push_back
    #define ll long long
    #define pii pair<int,int>
    #define fi first
    #define se second
    #define bg begin
    cs int RLEN=1<<20|1;
    inline char gc(){
    	static char ibuf[RLEN],*ib,*ob;
    	(ib==ob)&&(ob=(ib=ibuf)+fread(ibuf,1,RLEN,stdin));
    	return ib==ob?EOF:*ib++;
    }
    inline int read(){
    	char ch=gc();
    	int res=0;bool f=1;
    	while(!isdigit(ch))f^=ch=='-',ch=gc();
    	while(isdigit(ch))res=(res+(res<<2)<<1)+(ch^48),ch=gc();
    	return f?res:-res;
    }
    cs int mod=998244353;
    inline int add(int a,int b){a+=b-mod;return a+(a>>31&mod);}
    inline int dec(int a,int b){a-=b;return a+(a>>31&mod);}
    inline int mul(int a,int b){return 1ll*a*b%mod;}
    inline void Add(int &a,int b){a+=b-mod,a+=a>>31&mod;}
    inline void Dec(int &a,int b){a-=b,a+=a>>31&mod;}
    inline void Mul(int &a,int b){a=1ll*a*b%mod;}
    inline int ksm(int a,int b,int res=1){for(;b;b>>=1,Mul(a,a))(b&1)&&(Mul(res,a),1);return res;}
    inline int Inv(int x){return ksm(x,mod-2);}
    cs int N=305;
    int a[11][N][N];
    typedef int ar[N];
    typedef ar arr[N];
    int n,m,in[N],ans[N],pos[N],cnt;
    vector<int> e[N];
    inline void solve(int l,int r,int dep){
    	auto f=a[dep],pre=a[dep-1];
    //	ar *ttt=f[dep];
    	if(l==r){
    		ans[l]=mul(pre[1][n+1],Inv(pre[1][1]));
    		return;
    	}
    	int mid=(l+r)/2;
    	for(int i=1;i<=n;i++)
    	for(int j=1;j<=n+1;j++)f[i][j]=pre[i][j];
    	for(int i=l;i<=mid;i++){
    		int iv=Inv(f[i][i]);cnt=0;
    		for(int j=1;j<=n+1;j++)if(f[i][j])pos[++cnt]=j;
    		for(int j=1;j<=n;j++)if(j!=i&&f[j][i]){
    			int mt=mul(f[j][i],iv);
    			for(int k=1;k<=cnt;k++)
    			Dec(f[j][pos[k]],mul(mt,f[i][pos[k]]));
    		}
    	}
    	solve(mid+1,r,dep+1);
    	for(int i=1;i<=n;i++)
    	for(int j=1;j<=n+1;j++)f[i][j]=pre[i][j];
    	for(int i=mid+1;i<=r;i++){
    		int iv=Inv(f[i][i]);cnt=0;
    		for(int j=1;j<=n+1;j++)if(f[i][j])pos[++cnt]=j;
    		for(int j=1;j<=n;j++)if(j!=i&&f[j][i]){
    			int mt=mul(f[j][i],iv);
    			for(int k=1;k<=cnt;k++)
    			Dec(f[j][pos[k]],mul(mt,f[i][pos[k]]));
    		}
    	}
    	solve(l,mid,dep+1);
    }
    int main(){
    	#ifdef Stargazer
    	freopen("lx.in","r",stdin);
    	freopen("my.out","w",stdout);
    	#endif
    	n=read(),m=read();
    	for(int i=1;i<=m;i++){
    		int u=read(),v=read();
    		in[u]++,Dec(a[0][u][v],1),Add(a[0][u][n+1],1);
    	}
    	for(int i=1;i<=n;i++)Add(a[0][i][i],in[i]);
    	solve(2,n,1);
    	for(int i=2;i<=n;i++)cout<<ans[i]<<'
    ';
    }
    

    T3:

    暴力模拟交换即可

    也不想写


    考试体验极差,告辞

  • 相关阅读:
    arc路径例子-磊哥
    使用路径arc-奥运五环
    arc路径-磊哥
    使用路径arc-七彩
    html5- 摘自网友dudu
    使用路径arc
    textBaseline
    html5-磊哥
    【洛谷1345】 [USACO5.4]奶牛的电信(最小割)
    【洛谷1231】 教辅的组成(网络流)
  • 原文地址:https://www.cnblogs.com/stargazer-cyk/p/12328380.html
Copyright © 2020-2023  润新知