• 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];
    
    • 1
    • 2
    • 3

    然后把上面那个带入下面那个,发现 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]; 
    
    • 1
    • 2

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

  • 相关阅读:
    生成删除数据库所有表的外检脚本
    Java 数据结构篇-实现双链表的核心API
    2022年12月 && Faster RCNN训练自己的数据集 && 配置环境相对简洁
    SAP - 事务码
    架构之路15. 创业 - 厌倦
    SpringBoot 接口数据加解密
    C++ list容器模拟实现
    2022年软件测试人员必读的经典书籍推荐(附电子版)
    内聚力模型
    ModuleNotFoundError: No module named ‘transformers.modeling_bert‘解决方案
  • 原文地址:https://blog.csdn.net/cryozwq/article/details/127677726