【LGR-156-Div.3】洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛)

发布时间 2023-08-27 08:27:51作者: The_Shadow_Dragon

【LGR-156-Div.3】洛谷网校 8 月普及组月赛 I & MXOI Round 1 & 飞熊杯 #2(同步赛)

\(T1\) luogu P9581 宝箱 \(100pts\)

  • 水题,模拟即可。
    int main()
    {
    	int a,b,ans=0;
    	cin>>a>>b;
    	if((a<0&&b<0)||(a>0&&b>0))
    	{
    		cout<<max(abs(a),abs(b))<<endl;;
    	}
    	else
    	{
    		if(a==0||b==0)
    		{
    			cout<<abs(a)+abs(b)<<endl;
    		}
    		else
    		{
    			cout<<abs(a)+abs(b)+min(abs(a),abs(b))<<endl;
    		}
    	}
    	return 0;
    }
    

\(T2\) luogu P9582 方格 \(100pts\)

  • 水题。
  • \(sum_{i,j}\) 表示 \((1,1) \sim (i,j)\) 中与 \((i,j)\) 颜色相同的数量,则所求即为 \(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m} sum_{i,j} - 不合法答案\)
    ll a[2001][2001],sum[2001];//不开long long见祖宗
    int main()
    {
    	ll n,m,i,j,pd,ans=0;
    	cin>>n>>m;
    	for(i=1;i<=n;i++)
    	{
    		for(j=1;j<=m;j++)
    		{
    			cin>>a[i][j];
    			ans+=sum[a[i][j]]*2;
    			sum[a[i][j]]++;
    			if(a[i-1][j]==a[i][j])
    			{
    				ans-=2;
    			}
    			if(a[i][j-1]==a[i][j])
    			{
    				ans-=2;
    			}
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    

\(T3\) luogu P9583 涂色 \(0pts\)

  • 感觉类似luogu P9117 [春季测试 2023] 涂色游戏
  • 对于 \((i,j)\) 的方格,若有 \((h_i+l_j) \bmod k=0\) ,则 \((i,j)\) 无颜色;否则有颜色。
  • 考虑对原题面进行转换,有颜色的方格数量等于总方格数量减无颜色的方格数量,而无颜色的方格数量可以理解为染色次数为 \(k\) 的倍数的方格数量。开个桶维护一下即可。
    ll h[500001],l[500001],sum[500001];
    int main()
    {
    	ll n,m,q,k,i,pd,x,ans=0;
    	cin>>n>>m>>q>>k;
    	for(i=1;i<=q;i++)
    	{
    		cin>>pd>>x;
    		if(pd==1)
    		{
    			h[x]++;
    		}
    		if(pd==2)
    		{
    			l[x]++;
    		}
    	}
    	for(i=1;i<=n;i++)
    	{
    		sum[h[i]%k]++;
    	}
    	sum[k]=sum[0];
    	for(i=1;i<=m;i++)
    	{
    		l[i]%=k;
    		ans+=n-sum[k-l[i]];//也可以写成ans+=sum[k-l[i]]; 输出时输出n*m-ans即可
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    

\(T4\) luogu P9584 城市 \(0pts\)

  • 有时间再写,暂时咕了。

总结

  • 自己的模拟能力和题目转化能力太差,往后要多练习这种能力。