11 2024 档案
摘要:CF1063B Labyrinth ~ Codeforces 数据范围较小,考虑使用搜索。 由于向左向右的步数限制过大,我们只能用\(x,y\)进行记忆化,否则空间和时间都过不去。 既然状态只有\(x,y\),我们就要让最优情况最先被遍历到,所以考虑BFS。 我们考虑,对于\((x,y)\)状态来说
阅读全文
摘要:求\(s\)到\(t\)必须经过某个点/某条边的最短路 这个相当板子了,点\(u\)的答案是\(dis(s,u)+dis(u,t)\),边\(e=(u,v)\)的答案是\(\min(dis(s,u)+dis(v,t),dis(s,v)+dis(u,t))+w(e)\)。其中\(dis(u,v)\)表
阅读全文
摘要:P8867 [NOIP2022] 建造军营 只有B国袭破坏的道路是无向图的割边时,这张图才会变得不连通,所以我们进行边双缩点,最终形成一棵树,不妨令根节点为\(1\)。 记\(E[u]\)为缩点后的\(u\)包含多少条原图上的边,\(V[u]\)为\(u\)包含多少个原图上的点,并定义\(s[u]\
阅读全文
摘要:P1776 宝物筛选 朴素多重背包 for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ for(int k=1;k*w[i]<=m&&k<=cnt[i];k++){ f[i][j]=f[i-1][j]; if(j>=w[i]) f[i][j]=max(f[i]
阅读全文
摘要:P3629 [APIO2010] 巡逻 \(k=1\)时,我们一定贪心选择直径\(d\)的两个端点建立道路,所以答案是\(2\times(n-1)-d+1\)。 \(k=2\)时,两条新建的道路恰好形成\(2\)个环,我们通过手玩可以发现一个结论: \(1\)条边恰好被经过\(1\)次,当且仅当它恰
阅读全文
摘要:P3146 [USACO16OPEN] 248 G(弱化版) P3147 [USACO16OPEN] 262144 P 我们先考虑区间dp,设\(f[i][j]\)表示\(a[i,j]\)恰好合并成\(1\)个元素后的答案,\(0\)表示无法合并。 那么对于\(k\)使得\(f[i][k]=f[k+
阅读全文
摘要:原题页面:https://ac.nowcoder.com/acm/contest/65194 Statements & Solution : https://www.luogu.com.cn/problem/U507978 \(80+80+50+24=234\)。 A 贪心+双指针。 根据贪心思想,
阅读全文
摘要:P1641 [SCOI2010] 生成字符串 由题意可设\(f[i][j]\)表示用了\(i\)个\(0\),\(j\)个\(1\)的答案,那么有转移: \[f[i][j]=\begin{cases} 0&i>j\\ f[i][j-1]&i=j\\ f[i-1][j]+f[i][j-1]&i<j\\
阅读全文
摘要:P2151 [SDOI2009] HH去散步 发现\(n,m\)非常小而\(t\)非常大,所以果断考虑矩阵。 这道题如果不限制“不能立即沿刚刚过来的路回去”,就直接用邻接矩阵求\(t\)次幂然后直接调用\(ans[a][b]\)就好了。 加上限制后,我们用点就比较难考虑了,因为点是无方向的。 我们可
阅读全文
摘要:整套都是牛客的原题所以就不设密码了( 原题页面:https://ac.nowcoder.com/acm/contest/65193 Statements & Solution:https://www.luogu.com.cn/problem/U507206 Solution:https://www.
阅读全文
摘要:A - 123233 照题意统计即可。 点击查看代码 #include<bits/stdc++.h> using namespace std; string s; map<char,int> ma; signed main(){ cin>>s; for(char i:s) ma[i]++; if(m
阅读全文
摘要:最近做了一些题,感觉对算法更深刻的理解是比套板子更深层次的,在这个层次上解决问题,思路会更加清晰。比如P5687 [CSP-S2019 江西] 网格图(题解)这道题就是网格图的最小生成树,解法就建立在普通Kruskal的基础上,当时想了挺久也没想出来,看了题解才豁然开朗。所以各算法总是要回顾回顾的~
阅读全文
摘要:P5687 [CSP-S2019 江西] 网格图 简单来说题目就是给定一个\(n\times m\)的网格图,同行边权相同,同列边权相同,求该网格图的最小生成树。 根据Kruskal算法的贪心思想,我们要优先选择权值尽可能小的行,并将这条边应用于尽可能多的列。列方向同理。 为了保证最终生成树的连通性
阅读全文
摘要:P3119 [USACO15JAN] Grass Cownoisseur G 显然我们可以先跑强连通分量,由\(x\)个点缩成的新点\(u\)权值为\(v[u]=x\)。 下文中的节点\(1\)均表示缩点后节点\(1\)所在的节点。 我们在缩点后的DAG上跑拓扑排序,预处理出\(fa[i]\)和\(
阅读全文
摘要:P3225 [HNOI2012] 矿场搭建 挖煤点坍塌相当于把该点和与其相连的边在图上删掉。 借用wjyyy的题解,我们定义“叶子连通块”为“只包含\(1\)个割点的点双连通分量”,“非叶子连通块”为“包含\(\ge 2\)个割点的点双连通分量”。 如下图,橙色点是割点,红色框圈出的是点双,加粗的是
阅读全文
摘要:
A - Set 显然答案是\(\max(\lfloor\frac{r}{k}\rfloor-l+1,0)\)。 点击查看代码 #include<bits/stdc++.h> #define int long long using namespace std; int t,l,r,k; signed
阅读全文
![[题解]Refact.ai Match 1 (Codeforces Round 985) A~C](https://img2024.cnblogs.com/blog/3322276/202411/3322276-20241117151315025-777069440.png)
摘要:
P11233 [CSP-S 2024] 染色 设\(f[i][j=0/1]\)表示涂到第\(i\)位,且第\(i\)为颜色为\(j\),则考虑用\(i\)之前能和\(i\)匹配的位置\(p\)进行转移。\(p\)需要满足下面的条件: \(a[p]=a[i]\)。 \(p\)的颜色为\(j\)。 \(
阅读全文
![[题解]P11233 [CSP-S 2024] 染色](https://img2024.cnblogs.com/blog/3322276/202411/3322276-20241117151254278-19323510.png)