摘要:
一.编程思维和算法构建 1.抽象基类 AbstractCollection AbstractList AbstractQueue AbstractSequentialList AbstractMap AbstractSet 详情 2.SOLID原则 单一职责原则(SRP)——— 应该有且仅有一个原因 阅读全文
摘要:
A 传送门 先考虑无解情况,外在人的数量如果%3之后还剩下x人,只能靠第三类综合性人y来补充进去,如果x+y小于3则无解,有解只需要向上取整即可。 #include <bits/stdc++.h> using ll = long long; typedef std::pair<int, int> P 阅读全文
摘要:
H 传送门 观察下图 1. 只有在横着连续有三个*的时候才可能会出现三角形,并且随着横坐标的增加实际上增加的是(从左往右从上往下方向)斜对角线上点的数量。 2. 当横着连续有3-4个的时候斜线的长度为2,当横着又连续5-6个的时候斜线的长度为3,以此类推,所以启发使用斜对角前缀和来快速解决每一行连续 阅读全文
摘要:
A 传送门 根据题意每一步只能走一步或者两步,很显然如果有连续的两个荆棘就不能走了,在不能走之前是一定可以把路上的金币全捡起来所以只需要边捡金币边判断是否能继续走下即可。 #include <bits/stdc++.h> using ll = long long; typedef std::pair 阅读全文
摘要:
传送门 A 大致题意: 有一条长度为x的直线公路,最开始你位于0号点并且此时你的油箱装满了油,公路有n个加油站,当你经过加油站的时候你可以在加油站加满油,每走一个单位需要花费1升油量,起始位置和终点没有加油站,请问你的油箱容量至少为多少升才可以够你跑一个来回。 解题思路: 我们的路径大致是这样0 - 阅读全文
摘要:
传送门 线段树大模拟!。考验线段树功底的时候来了,作为队伍的史山选手,写这么史也是情有可原的。 #include <bits/stdc++.h> using ll = long long; const int INF = 0x3f3f3f3f; const int N = 1e6 + 10; typ 阅读全文
摘要:
传送门 大致题意: 给定数组a和数组b,需要挑选i(1 <= i <= n)个下标,对于选定的这个i个下标x1, x2... xi价值是在a[x1] + a[x2] + ... a[xi] + max(b[x1], b[x2], ..., b[xi]), 对于每个相同的i下标不能重复选,可以不连续。 阅读全文
摘要:
传送门 解题思路: 对于每个询问串的查询可以改为以节点为后缀来统计有多少个查询串在里面然后来统计答案。拿下面这个例子来说: 3 1 a bb abb aabb 首先对查询串(n个串)构建AC自动机,对于每个字符串结尾位置的状态p设置sum[p] = 1, 同时插入的时候维护每个状态的长度len[p] 阅读全文
摘要:
传送门 大致题意: 给定n个玩家,每个玩家有一个战力值,安排 x (1 <= x <= n/2(向下取整))场游戏,每场游戏安排x对玩家对战,对于每一场游戏每个玩家只能参加一次对战,要求对于每x场玩家对战的两个玩家rating差的最大值尽可能小。 例如给定6个玩家战力值为10 13 14 20 10 阅读全文
摘要:
传送门 大致思路: 1. 将操作1拆分为两个部分x(-1)^d + kd(-1)^d 。对于操作1中的x(-1)^d部分而言。我们可以对式子进行拆分,把x拆出来,我们会发现和v号点距离为奇数的点会减去x,为偶数的点会加上x,所以我们可以在线段树上用一个sum1维护应该减去的值,sum2维护加上的值即 阅读全文