惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
罗磊的独立博客
腾讯CDC
云风的 BLOG
云风的 BLOG
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
U
Unit 42
I
InfoQ
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
美团技术团队
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
GbyAI
GbyAI
S
SegmentFault 最新的问题

某岛

AtCoder Beginner Contest 409 Luogu P5325. 【模板】Min_25 筛 UOJ #188. 【UR #13】Sanrd AtCoder Beginner Contest 371 AtCoder Beginner Contest 369 RPGMaker 2k3 百科 OneShot 的考古 2024“开创拓芯”游戏创享节的相关记录 CJ 回来后的戒断反应 Luogu P10221. [省选联考 2024] 重塑时光 Luogu P5308 [COCI2018-2019#4] Akvizna wqs 二分 歌唱王国 Lean 相关 BZOJ 3153. Sone1 The 2023 ICPC World Finals Luxor 新巴别塔 Sora 的想象与思考 Facebook Hacker Cup 2023 Round 1 AtCoder Beginner Contest 322 LLaMA 2 相关 HuggingFace AI Game Jam ACL 2023 Trans 相关… Luogu P2053. [SCOI2007] 修车 Luogu P1973. [NOI2011] NOI 嘉年华 Luogu P1933. [NOI2010] 旅行路线 Luogu P1954. [NOI2010] 航空管制 Luogu P2048. [NOI2010] 超级钢琴 Luogu P2046. [NOI2010] 海拔
AtCoder Regular Contest 158
2023-04-28 · via 某岛

April 28, 2023

Problem C. All Pair Digit Sums

#159 的最后那个题 一样,我们也需要考虑容斥,计算进位所带来的代价。
注意枚举每一位的时候,进位可能会产生复杂的后效性(进位再进位…)我们不能仅仅考察那一位。。。
而是需要整个后缀都纳入考虑,比如对于一个末尾是 17 的数那么符合条件的就是末尾 >= 83 的数。。。
可以排序后二分查找或者线性做,复杂度 O(nlognlog(Ai))。

#include <lastweapon/io>
#include <lastweapon/number>
using namespace lastweapon;
const int N = int(2e5) + 9;
LL a[N], b[N];
int n;

int f(LL x) {
    int z = 0; while (x) {
        z += x % 10;
        x /= 10;
    }
    return z;
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
#endif
    LL z = 0, c = 0;
    RD(n); REP(i, n) z += f(RD(a[i])); z <<= 1; z *= n;
    LL p10 = 1;
    REP(h, 15) {
        p10 *= 10; REP(i, n) b[i] = a[i] % p10; sort(b, b+n);
        REP(i, n) c += b+n-lower_bound(b, b+n, p10-b[i]);
    }
    cout << z - c*9 << endl;
}

Problem E. All Pair Shortest Paths

非常厉害的题,之前 fhc 出过三列的,这个题虽然只有两列,但是考察的东西更有趣了。

General 的 Floyd 是 O(n3) 的,格点图且没有负数的情况不存在向右又折返的情况,复杂性大为降低,但是状态依然是 O(n2) 的。
不过我们大量转移可以合并,我们只需要考察相邻的情况。

分类讨论后把 min 消掉,实际只有三种情况,且只和之前 dp 状态的差有关、
(这个十分 make sense,因为其实也只有上下,下上,和平推。交叉的情况肯定不存在。就像欧几里得平面里点的匹配一样囧)

于是我们可以开始根据这个差合并同类项!。。。然后惊喜的发现这个题最关键的性质。。。
对于平推的情况。。这些同类项的差依然是不变的!(寻找不变量!)
而对于另外两种情况,新的状态里它们又都被合并到一起了!。。。

于是我们就可以通过简单记录一个 offset 进行整体转移了。。后面就可以平推了。。甚至平衡树都不需要。。deque 即可。。
反而最后这步借助 offset 简化数据结构转移的题倒是非常常见的,甚至比线段树的懒标记还要简单(比如 COT6 里我们就用过)。

Posted by xiaodao
Category: 日常