2024年3月2日

摘要: 首先我们来考虑题目的弱化版。 若地图中没有障碍, 则从 \((1,1)\) 走到 \((H,W)\) 需要 \(H+W-2\) 步, 其中往右的步数为 \(H-1\), 于是答案即为: \[C_{H-1}^{H+W-2} \]当存在 \(1\) 个障碍 \((r,c)\) 时, 考虑用总方案数减去会 阅读全文

posted @ 2024-03-02 16:58 _XOFqwq 阅读(7) 评论(0) 推荐(0) 编辑

摘要: T1 令 \(dp_i\) 表示以 \(i\) 结尾的最大食物链条数。 有转移方程: \[dp_i=\max(dp_i,dp_i+dp_j)(j \in \operatorname{son} i) \]按拓扑序转移即可。 #include<bits/stdc++.h> #define int lon 阅读全文

posted @ 2024-03-02 16:58 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑

摘要: T1 floyd 模板。 #include<bits/stdc++.h> using namespace std; int n,m; int dp[131][131]; void floyd(){ for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int 阅读全文

posted @ 2024-03-02 16:58 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑

摘要: 检验 \[\sqrt{\sum_{i=1}^{n} a_i} \]是否为整数即可。 实现: int n; double s=0.0; cin>>n; for(int i=1;i<=n;i++) cin>>a[i],s+=a[i]; cout<<(sqrt(s)==(int)(sqrt(s))?"YE 阅读全文

posted @ 2024-03-02 16:57 _XOFqwq 阅读(3) 评论(0) 推荐(0) 编辑

摘要: 容易发现音节的划分不仅要求子串形如 \(\texttt{CV}\) 或 \(\texttt{CVC}\),并且接下来的两个字符也必须是 \(\texttt{CV}\),不然会导致无法划分下去。 于是我们遍历字符串,找出所有满足上述条件的子串,记录需要输出 \(\texttt{.}\) 的位置即可。 阅读全文

posted @ 2024-03-02 16:57 _XOFqwq 阅读(5) 评论(0) 推荐(0) 编辑

摘要: 我们考虑维护 \(sum_i\) 表示前 \(i\) 个数中偶数下标的数之和与奇数下标的数之和之差,其中 \(sum_0=0\)。 若在某一时刻,有 \(sum_i=sum_j(j<i)\),说明 \(j \sim i\) 中偶数下标的数之和与奇数下标的数之和之差为 \(0\)。这个使用 map 判 阅读全文

posted @ 2024-03-02 16:56 _XOFqwq 阅读(14) 评论(0) 推荐(0) 编辑

摘要: 容易发现每个人在行进过程中不会追上其他任何一个人, 因此一对人 \(i,j\) 会问候当且仅当 \(b_i>b_j\),这时 \(i\) 会在 \(b_j\) 处问候 \(j\)。 于是我们考虑对所有人 \(i\) 按 \(a_i\) 排序, 根据上述推论,便可得 \(b_i\) 的逆序对数总和即为 阅读全文

posted @ 2024-03-02 16:56 _XOFqwq 阅读(20) 评论(0) 推荐(0) 编辑

摘要: 一眼最短路。 容易发现每到一个点 \(u\) 就会有两种决策:换速度系数与不换速度系数。 于是定义状态 \(dis_{u,p}\) 表示在点 \(u\) 速度系数为 \(p\) 时所需的最短时间。 跑一遍 dijkstra, 对于每条边 \(u \to v\),分别对 \(dis_{v,p}\) 与 阅读全文

posted @ 2024-03-02 16:56 _XOFqwq 阅读(6) 评论(0) 推荐(0) 编辑

摘要: 对于第一问,用并查集将所有边权为 \(0\) 的边的端点合并, 然后对于每个 type 看里面是否所有的点都在一个集合中即可。 时间复杂度 \(O(n \log n)\)(默认使用路径压缩并查集)。 对于第二问,将 type 看作点, 对于每两个 type 取它们中两个点的最小边权连边, 然后跑 f 阅读全文

posted @ 2024-03-02 16:55 _XOFqwq 阅读(3) 评论(0) 推荐(0) 编辑

摘要: T1 一头牛能确定关系,当且仅当它能到达 / 被到达除自己外的所有牛。 于是我们建出有向图,跑 floyd 传递闭包, 然后对于每个点统计他能到达的点数是否为 \(n-1\) 即可。 #include<bits/stdc++.h> using namespace std; int n,m,ans; 阅读全文

posted @ 2024-03-02 16:49 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑