- 博客(7)
- 收藏
- 关注
原创 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组
如何算,sum[i]代表从根走到i节点需要花多少时间,那么从u到v(后文表示为dis(u,v))则需要花sum[u]+sum[v]-sum[lca(u,v)]*2这么多时间,如果删去一个点i后,全程答案为 asum - dis(a[i],a[i+1]) - dis(a[i],a[i-1]) + dis(a[i-1],a[i+1]),删掉开头和结尾特判,入代码所示。对结尾字符出现次数做前缀和,枚举a字符开头的位置,假设s[i]是a字符,那么i+k-1以后的出现的b都可以作为答案。复杂度:O(nlogn)
2023-04-08 15:20:17
5259
7
原创 2021ICPC沈阳 H.Line Graph Matching(dfs树求割边+简单树形dp)
2021icpc区域赛沈阳站银牌题 H.Line Graph Matching
2022-09-09 10:34:51
519
原创 第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组
第十三届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组小结提示:代码为比赛时本人提交的代码,不代表是正解!!!试题 A: 九进制转十进制暴力1478试题 B: 顺子日期012居然不算QAQ!!!!!!!反正也是暴力,根据队友的答案应该是4试题 C: 刷题统计假设需要用x周+y天,我们可以快速求出需要用多少周,再慢慢减求出多出几天就行#include<iostream>#include<algorithm>#include<cstdio>#i
2022-04-09 18:23:57
695
1
原创 区间dp
文章目录区间dp例题:石子归并1石子归并2时间优化Brackets区间dp概念:当在求解一个区间的问题答案是,我们可以先分成小的区间求解,在推导到大的区间,最后得出答案。模板:for(int len = 1;len<=n;len++){ for(int j = 1;j+len-1<=n;j++){ int ends = j+len-1; for(int i = j;i<ends;i++){ dp[j][ends] = min(dp[j][ends],dp[j
2021-04-19 20:04:58
117
原创 acm算法总结
文章目录寒假总结笔记DFS/BFS/二分BFSDFS二分相关例题马的遍历SticksObtain Two Zeroes数论取模快速幂快速幂快速幂取模GCD/欧几里德算法扩展欧几里德素数筛埃氏筛欧拉筛容斥原理相关例题A/B青蛙的约会美素数动态规划(DP)背包问题01背包完全背包多重背包概率DP相关例题送快弟划分Unidirectional TSPFlipping Coins数据结构栈队列链表树有根树二叉树例题Minimum pathLargest Rectangle in a Histogram图论图的储存最
2021-03-10 13:12:20
1064
原创 数论(取模、快速幂、欧几里德算法、扩展欧几里得算法、素数筛)+例题(A/B、青蛙的约会、美素数)
数论取模有关取模的几个重要式子:1.(ab)%c = ( (a%c)(b%c) )%c2.(b/a)%c = b*(a)^(c-2)%c快速幂快速幂这个算法是个死算法,理解代码后把他记下来。快速幂:int POW(int a,int b){ int ans = 1; int base = a; while(b){ if(b & 1) ans *= base; base *= base; b >>= 1
2021-02-17 17:49:37
491
原创 DFS/BFS/二分专题+例题(马的遍历、Sticks、Obtain Two Zeroes)
文章目录DFS/BFS/二分BFSDFS二分相关例题马的遍历SticksObtain Two ZeroesDFS/BFS/二分BFS用数据结构中的队列(queue)来实现:把第一个状态放入队列中,随后将这一状态取出,搜索这个状态所能到达的状态,并把这些状态再放入队列中,以此类推。代码基本格式:#include<bits/stdc++.h>using namespace std;int a[450][450] = {0},n,m;int v[450][450] = {0};in
2021-02-16 16:51:29
239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人