合集-洛谷

摘要:原题链接 我曾经写题时有个疑惑,那就是会不会算力恢复之后大于最大算力? 其实不会,把消耗的算力想象成占领,恢复算力想象成撤离,不管怎么恢复,领地都是那个领地。 #include<bits/stdc++.h> using namespace std; int power[200005]={0}; st 阅读全文
posted @ 2023-11-22 22:54 纯粹的 阅读(64) 评论(0) 推荐(0) 编辑
摘要:1. 利用map实现速查,优点是代码简洁,缺点是速度慢,内存大 #include<bits/stdc++.h> using namespace std; int a[200005]={0}; int main() { int n,c; scanf("%d%d",&n,&c); map<int,int 阅读全文
posted @ 2023-11-26 16:28 纯粹的 阅读(22) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 每次从所有果子堆中选重量最小的两堆并累加,观察到只需要找出 最小 因此考虑用堆,而当你对于堆的理解足够深之后,可以用c++ 的 priority_queue 代码 #include<bits/stdc++.h> using namespace std; int pile[10005] 阅读全文
posted @ 2023-11-26 16:58 纯粹的 阅读(43) 评论(0) 推荐(1) 编辑
摘要:原题链接 非常详细的题解见洛谷,个人见解见代码 方法一:倍增法 #include<bits/stdc++.h> using namespace std; #define N 500005 vector<int> G[N];//链树,以链上的元素为根节点的树 void add(int x,int y) 阅读全文
posted @ 2023-11-28 19:15 纯粹的 阅读(27) 评论(0) 推荐(1) 编辑
摘要:原文链接 枚举即可 #include<bits/stdc++.h> #define ll long long using namespace std; int s[14]={0}; int main() { ll n; scanf("%lld",&n); for(int i=1;i<=9;i++)s 阅读全文
posted @ 2023-11-28 20:50 纯粹的 阅读(23) 评论(0) 推荐(1) 编辑
摘要:原题链接 详解见题解区,个人见解见代码,蒟蒻真的折服于dalao的思路 #include<bits/stdc++.h> #define ll long long using namespace std; ll dp[20][210][1026]={0}; ll counts(int now) { l 阅读全文
posted @ 2023-11-29 20:59 纯粹的 阅读(15) 评论(0) 推荐(1) 编辑
摘要:不能用dijkstra算法 的原因(个人拙见): 题解 1.思想导论 对于没有负环的图中能到达的任意一个节点,从1出发的最短路径,途中经过的点至少有2个,最多为n个(包括两端)。 设经过的点数为路径的长度 2.思想落实 设cnt[i]为到达i的最短路径的最大长度,每更新一次长度,就更新一次cnt[i 阅读全文
posted @ 2023-12-06 11:40 纯粹的 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原题链接 1.审题 1.使得转账后 B 收到 100 元。 2.互相转账 3. z%的手续费(z<100) 2.思路 1.dijkstra算法(很讨厌这种算法名字):把已探访过的点的下一个点中“ ‘还没探访过的点’的更新”放进堆里,堆里弹出未探访点的第一个更新便是该点的最值 2.准备工作,把所有的边 阅读全文
posted @ 2023-12-06 14:51 纯粹的 阅读(27) 评论(0) 推荐(0) 编辑
摘要:原题链接 点拨: 运用动态规划的思路 对于一给定的字符串,其未来和现在有什么关系? 假如其过去已知,其现在和过去有什么? 细节 当两端相等时,继承不一定比从中间合起来要小 代码 #include<bits/stdc++.h> using namespace std; int main() { int 阅读全文
posted @ 2023-12-06 19:30 纯粹的 阅读(66) 评论(0) 推荐(0) 编辑
摘要:原题链接 导入 1.对于一个给定的序列,最后一个加进来的元素不是最左端就是最右端,如果是最左端,那么代表去掉最左端的序列中最后一个加进来的元素比最左端小,最右端同理。 2.对于一个给定的序列,可能的排序结果无非两类,一类是以最左端的元素结尾的,一类是以最右端的元素结尾的。因此设\(sum[i][j] 阅读全文
posted @ 2023-12-06 21:05 纯粹的 阅读(8) 评论(0) 推荐(0) 编辑
摘要:原题链接 导入 1.假如你是老头,你每次关灯最多有两个选择: 一.关最左边的灯 二.关最右边的灯 而你的目的是:使总耗电量最小 Q:那我能不能每次选去关功率大的那个灯呢? A:不行,因为耗电量还与时间有关 Q:那我能不能每次选去关 路程(时间)功率 较大的灯(即贪心)呢? A:不行,假设这 阅读全文
posted @ 2023-12-07 18:43 纯粹的 阅读(9) 评论(0) 推荐(0) 编辑
摘要:前言 翻遍洛谷题解,看到大家都在套模板,却很少有人讲出为什么,使我十分崇拜天赋哥。 原题链接 关于这题的一些事实性证据 事实1.来自 事实2.来自 事实3.来自 事实4.来自 整理上述事实 1.每一次”最短“最优涂色,要么在其他颜色的基础上涂,这称之为融入一个整体;要么另辟蹊径单独找一块地涂,这称为 阅读全文
posted @ 2023-12-11 19:35 纯粹的 阅读(33) 评论(0) 推荐(0) 编辑
摘要:原题链接 前情提要 题目不难看懂,即求a->b过程中的所有点的延迟和。显然可以暴力遍历一遍完成,但是时间复杂度太高了。 改进算法 想象这个图是由点和线组成的,把其中一个点提起来,这样就变成了一个树(n叉树),任意两点(a,b)间的延迟和等于a->lca->b,其中lca为ab两点的最近公共祖先 这样 阅读全文
posted @ 2023-12-12 11:26 纯粹的 阅读(32) 评论(0) 推荐(0) 编辑
摘要:原题链接 洛谷题解很详细,自己写了些理解在代码注释里 代码 #include<bits/stdc++.h> using namespace std; int atch[50005]={0}; int vis[50005]={0}; vector<int> G[505]; int weiy(int n 阅读全文
posted @ 2023-12-20 20:17 纯粹的 阅读(13) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解说的很详细,我来讲讲我对为什么要用异或判断的想法 异或为零是先手必败状态的一个属性,我们通过属性来判断类别。 代码 #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { 阅读全文
posted @ 2023-12-20 21:04 纯粹的 阅读(11) 评论(0) 推荐(0) 编辑
摘要:原题链接 总结 1.搜索其实就是全部遍历一遍,只不过可以把遍历过的,以及接下来一看就知道不用遍历的不去遍历,也就是剪枝 2.一定要明确自己所设的搜索函数各个变量的含义!! 代码 #include<bits/stdc++.h> using namespace std; int n,k; int a[3 阅读全文
posted @ 2023-12-21 18:55 纯粹的 阅读(24) 评论(0) 推荐(0) 编辑
摘要:原题链接 思路 找到所有入度为零的点,然后消除其子节点的入度,再把入度为零的点塞入队列中 为什么可以这么做呢? 一个点能弹出队列,其父节点一定比他先入队,以此类推。。 代码 #include<bits/stdc++.h> using namespace std; vector<int> G[1000 阅读全文
posted @ 2023-12-26 17:25 纯粹的 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原题链接 题解 1.在处理最短路的时候,我们采用优先队列的方法,即第一个出现的点一定是最小的,之后出现的点都是在其他点的基础上叠加的值,肯定不小于第一个。那么依然是这个思路,第二个出现的点一定是次短的。 代码 #include<bits/stdc++.h> using namespace std; 阅读全文
posted @ 2023-12-26 19:17 纯粹的 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原题链接 首次尝试用chatgpt帮我写注释 code #include<bits/stdc++.h> using namespace std; int main() { int n; // 声明整数变量 n,用于存储输入序列的长度 cin >> n; // 读入序列长度 // 定义两个优先队列,q 阅读全文
posted @ 2024-01-02 16:35 纯粹的 阅读(10) 评论(0) 推荐(0) 编辑
摘要:原题链接 方法1: 有点像剪枝。 i1~n循环,j同理,如果a[i]+b[j]放不进去,那么a[i]+b[j+1]也放不进去 code #include<bits/stdc++.h> using namespace std; int a[100005 阅读全文
posted @ 2024-01-02 18:48 纯粹的 阅读(5) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示