POI2020题解

做的时候网上似乎一篇题解都没有,写一下造福社会。

省流:都是傻逼题。

Cukiernia

一眼会想到三种里必然会移动两种所以每个点移动次数就是 min ⁡ ( a + b , b + c , a + c ) \min(a+b,b+c,a+c) min(a+b,b+c,a+c),但是三种东西货架至少得有一个,所以 dp 一下,设 dp[i][0/1][0/1][0/1] 表示有没有三种货架。非常简单。

Gang Biciaków

好像直接莫队就行了,意义不明,这题我也没写,不知道是不是存在什么高论

Gra platformowa

暴力是直接考虑每个点坐标建图 01BFS,
显然直接吧每个连续段当作点建图就行了。

Licznik długu

初见很神秘,实际很傻逼。

一眼想到分块,维护每个块前面一个块向不向自己进位时自己的结果,修改暴力重构整个块的结果,查询整块只关心向不向下一个块进位,最后那个散块暴力。

另:本校 OJ 上除本人外通过此题的三份代码分别是:压位 trie,ddp,二分树状数组,感觉很神秘。

Tablica binarna

稍微有点意思的题,但是也不难。我这种没有脑子的傻逼也做的来。

首先考虑给你一个矩阵算答案,每个点显然最多当成右端点一次,那么设 s i , j s_{i,j} si,j 表示这个点是否要进行操作, s i , j = 1 s_{i,j}=1 si,j=1 当且仅当其右下方所有 s i , j s_{i,j} si,j 异或和不等于 a i , j a_{i,j} ai,j。写成代码大概就是:

s[i][j]=s[i+1][j+1]^s[i+1][j]^s[i][j+1]^a[i][j];
ans+=s[i][j];
s[i][j]=s[i+1][j+1]^s[i+1][j]^s[i][j+1]^s[i][j];

然后把上面那个带入下面那个,发现 s i , j s_{i,j} si,j 的二维后缀和就是 a i , j a_{i,j} ai,j

因此上述代码等价于:

s[i][j]=a[i+1][j+1]^a[i+1][j]^a[i][j+1]^a[i][j];
ans+=s[i][j]; 

我们发现,这四个值有偶数个翻转的时候答案不变,而有奇数个翻转的位置每次操作只有 4 4 4 个,暴力即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值