![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题目
Rw-chen
talk is not cheap.
展开
-
数位DP(记忆化搜索)
例如,如果 digits = [‘1’,‘3’,‘5’],我们可以写数字,如 ‘13’, ‘551’, 和 ‘1351315’。每个结果包含十个用空格隔开的数字,第一个数字表示 0 出现的次数,第二个数字表示 1 出现的次数,以此类推。题目描述 给定两个整数 a 和 b,求 a 和 b 之间的所有数字中 0∼9 的出现次数。题目描述:给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。这样的,形如前面5位中包含3位1,后面的部分可排列的情况是一样的,只要第一次算出。原创 2022-10-18 21:13:20 · 391 阅读 · 0 评论 -
Codeforces 52C
C. Circular RMQ题目大意:好激动,带懒标记的上百行的线段树带A掉这道题,线段树真好玩,可以看出来是裸的带懒标记的线段树难点1:读入的时候怎么判断是3个数还是2个数,看快读最后有无读入空格,如果读入了space就等于1难点2:线段是环形的l <= r正常区间,l > r 就讲区间分成 1 ~ r, l ~ n, 读入的是0~n-1我们处理成1 ~ n难点3:线段树和懒标记,我也是初学者不会讲,找大佬学呗Ac code#include <bits/stdc原创 2021-12-18 22:04:04 · 366 阅读 · 0 评论 -
P3372 【模板】线段树 1
P3372 【模板】线段树 1这一题是线段树懒标记的入门,懒标记的思想就是,当查询或者更改时,需要用到某段区间,那么我们就去将需要用到的区间传递下去,否者我们不动他,像不像你不用的知识不复习,用的时候再复习呢?#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;int w[N];struct Node{ ll l, r, sum, lazy;原创 2021-12-17 18:20:41 · 98 阅读 · 0 评论 -
树状数组 + 离散化 求逆序对数量
AcWing 788. 逆序对的数量#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;int nums[N], tr[N];vector<int> dc; //离散化的数组int Idx(int x){ return lower_bound(dc.begin(), dc.end(), x) - dc.begin() + 1; //返回原创 2021-12-16 17:59:04 · 218 阅读 · 0 评论 -
带权并查集
How Many Answers Are Wrong图解合并的时候代码如下#include <iostream>using namespace std;const int N = 2e5 + 10;int p[N], dist[N]; //并查集数组 距离数组int find(int x){ if(x != p[x]) { int f = p[x]; //保存父节点 p[x] = find(p[x]); /原创 2021-12-07 19:45:25 · 474 阅读 · 0 评论 -
Candies-POJ 3159
Candies-POJ 3159题目大意输入n和m,n为点数,m为边数,后面有m行表示点a和b之间的差值不超过c,问1和n直接的差最大是多少?题解堆优化版dijkstra跑,利用差分约束dist[t] + w < dist[j]#include <iostream>#include <cstring>#include <cstdio>#include <queue>using namespace std;struct no原创 2021-11-21 23:43:43 · 326 阅读 · 0 评论 -
POJ 2240 Arbitrage(SPFA判正环)
POJ 2240 Arbitrage题目大意套利是指利用货币汇率的差异,将一种货币的一个单位转换为同一货币的多个单位。例如,假设1美元买0.5英镑,1英镑买10.0法国法郎,1法国法郎买0.21美元。然后,通过兑换货币,聪明的交易者可以从1美元开始,购买0.5 * 10.0 * 0.21 = 1.05美元,获利0.05美元。您的工作是编写一个程序,以货币汇率列表作为输入,然后判断是否存在可能进行套利。提示判正环的SPFA,任意货币都可以作为起点,不仅仅是美元,所以开始将所有点都入队,并判断正原创 2021-11-19 18:16:00 · 228 阅读 · 0 评论 -
Currency Exchange (POJ 1860)
Currency Exchange思路:用spfa来找正环,只要存在一个正环(cnt >= n),那么走这个圈穷次后资产一定无穷,因为路是双向的,所以一定可以返回,正无穷再怎么亏损,一定还是正无穷AC Code#include <iostream> #include <cstring>#include <cstdio>#include <queue>using namespace std;const int N = 202原创 2021-11-18 18:52:01 · 710 阅读 · 0 评论 -
Silver Cow Party
Silver Cow Party(POJ-3268)思路:跑堆优化版dijkstra,从x到其他任意点,然后其他n-1个点跑一个dijkstra到x点,两者相加求最大值,复杂度O(nlog(m))O(nlog(m))O(nlog(m))#include <iostream> #include <cstdio>#include <queue>#include <cstring>using namespace std;typedef pair原创 2021-11-16 23:07:50 · 341 阅读 · 1 评论 -
Heavy Transportation
Heavy Transportation(POJ 1793)写这题被坑了好几次,这题解法思路就是在最短路中用权值最大的边为基础不断更新可以用朴素dijkstra,堆优化dijkstra, spfa,kurskal等。注意:1.数据量大要用cin,cout会TLE 2.图是无向图不是有向图 3.输出格式记得每组答案后面有两回车ac代码如下1.朴素版Dijkstra#include <iostream>#include <cstdio>原创 2021-11-16 17:51:30 · 300 阅读 · 0 评论 -
Acwing 240食物链(带权并查集)
AcWing 240.食物链#include <iostream>using namespace std;//巧妙的利用余数的关系//种类0 : d[x] % 3 == 0//种类1 : d[x] % 3 == 1//种类2 : d[x] % 3 == 2//2 -> 1 -> 0 -> 2const int N = 5e4 + 10;int p[N], d[N];int find(int x){ if(x != p[x]) {.原创 2021-11-14 22:30:12 · 350 阅读 · 0 评论 -
Function
2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛 Function题目思路:g(x) 函数范围小, 1到1e6也只有1到54(999999)这54种取值,所以先打个表把g(x)给固定下来当g(x)固定了函数f(x)=Ax2g(x)+Bx2+Cxg2(x)+Dxg(x)f(x) = Ax^2g(x) + Bx^2 + Cxg^2(x) + Dxg(x)f(x)=Ax2g(x)+Bx2+Cxg2(x)+Dxg(x)便可以化成 (Ag(x)+B)x2+(Cg2(x)+Dg(x))x(Ag(x)原创 2021-11-09 21:17:38 · 70 阅读 · 0 评论 -
Forgger
POJ 2253 Forgger题目大意:给你一个整数N代表存在N个点,接下来N行每行一个笛卡尔坐标x> y,任意两点之间都存在一条双向边,这条边的大小是它们之间的欧几里得距离(x0−x1)2+(y0−y1)2\sqrt{(x0 - x1)^2 + (y0 -y1)^2}(x0−x1)2+(y0−y1)2,起点是第一个点,终点是第二个点,问你从起点到终点所有的路线中,单次跳跃的最小距离不超过多少,,输出按题目格式要求,每个答案之后空两行。可能存在多组输入,当输入为0的时候结束。- 方法1(原创 2021-11-09 16:59:47 · 69 阅读 · 0 评论 -
树状数组入门(有被精简的树状数组所震撼到)
1264. 动态求连续区间和模板题,代码如下#include <iostream>using namespace std;const int N = 1e5 + 10;int tr[N], n, m;int lowbit(int x){ return x & -x;}int query(int x){ int sum = 0; for(int i = x; i; i -= lowbit(i)) sum += tr[i]; return sum;}原创 2021-11-07 20:13:29 · 59 阅读 · 0 评论 -
线段树入门
AcWing 1264. 动态求连续区间和(线段树入门模板)#include <iostream>using namespace std;const int N = 1e5 + 10;int w[N];struct Node{ int l, r, sum; //区间的左右端点和区间和} tr[N * 4]; //开四倍大小void pushup(int u) //更新区间和{ tr[u].sum = tr[u <&原创 2021-11-07 17:16:19 · 43 阅读 · 0 评论 -
C++ cout 输出x位小数位数设置
fixed和setprecision的使用签到题原来我只会printf输出题目一次定下的位数,现在题目要求的小数位数会改变,所有就学习了一下C++的输出格式#include <bits/stdc++.h>using namespace std;int main(){ int n, x; cin >> n >> x; double ans = sqrt(n+1.0) - 1; // fixed 表示位数不够补零 //原创 2021-11-06 21:17:18 · 574 阅读 · 0 评论 -
Trie习题
Trie字典树习题HDU P2072 单词数#include <bits/stdc++.h> using namespace std;const int maxn = 1e5;int son[maxn][26], idx;bool vis[maxn];void init(){ idx = 0; memset(son, 0, sizeof son); memset(vis, 0, sizeof vis);}void insert(string &s){原创 2021-09-23 23:31:26 · 101 阅读 · 0 评论