自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 《算法竞赛入门经典》(第2版)——习题2-5 分数化小数

这道题的难点在于精确到小数点后c位,c是个变量,因而习以为常的%.nf就不适用了,所以要换一种思维去思考这个问题。首先,a/b可以得到正常除法a/b的小数点前的整数,因而设计如下代码: printf("Case %d:%d.",count,a/b);然后,考虑如何将小数逐一输出,直到要精确的位数,设计的代码如下: d=(double)a/b-a/b; / /得到...

2020-02-11 22:35:12 401 2

原创 2022-03-11每日刷题打卡

一、AcWing 99. 激光炸弹1. 问题描述2. 问题解决#include <iostream>using namespace std;typedef long long LL;const int N = 5010;int n, r;int s[N][N];int max_x, max_y;int main(){ cin >> n >> r; r = min(5001, r); max_x = max

2022-03-11 21:02:33 338 1

原创 2022-03-10每日刷题打卡

一、AcWing 1221. 四平方和1. 问题描述2. 问题解决#include <cstring>#include <iostream>#include <algorithm>#include <unordered_map>#define x first#define y secondusing namespace std;typedef pair<int, int> PII;const int N = 2500

2022-03-10 21:05:33 295

原创 2022-03-09每日刷题打卡

一、AcWing 789 数的范围1. 问题描述2. 问题解决#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int n, m;int q[N];int main(){ scanf("%d%d", &n, &m);

2022-03-09 21:19:15 297

原创 2022-03-09每日刷题打卡

一、AcWing 789 数的范围1. 问题描述2. 问题解决#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int n, m;int q[N];int main(){ scanf("%d%d", &n, &m);

2022-03-09 21:18:09 219

原创 2022-03-08每日刷题打卡

一、蓝桥杯 2017 K倍区间1. 问题描述2. 问题解决#include <iostream>#include <cstring>using namespace std;const int N = 1e5 + 10;int a[N], cnt[N];int n, k;long ans;int main(){ cin >> n >> k; long sum = 0; for(int i = 0; i < n;

2022-03-08 21:24:49 133

原创 2022-03-04每日刷题打卡

一、蓝桥杯 2017 贪吃蛇长度1. 问题描述2. 问题解决#include <iostream>using namespace std;int main(){ char c; int end = 0, ans = 0; while(c = getchar()) { if(c == '+') end++; if(end == 4) break; if(c == '#') ans++; if(c == '@') ans += 2; }

2022-03-04 19:33:21 72

原创 2022-03-03每日刷题打卡

一、蓝桥杯 2017 迷宫1. 问题描述2. 问题解决#include <iostream>#include <cstring>using namespace std;char g[15][15];bool is_out(int x, int y){ while(g[x][y] != ' ') { if(g[x][y] == 'L') { y--; if(g[x][y] == 'R') return false;} if(g[x][y] ==

2022-03-03 21:25:36 128

原创 2022-03-02每日刷题打卡

一、蓝桥杯 2017 等差素数列1. 问题描述2. 问题解决#include <iostream>#include <cmath>using namespace std;bool is_prime(int a){ for(int i = 2; i <= sqrt(a); i++) if(a % i == 0) return false; return true; }int main(){ int count = 0; for(int

2022-03-02 21:26:30 129

原创 2022-03-01每日刷题打卡

一、一本通 1311:【例2.5】求逆序对1. 问题描述2. 问题解决#include <iostream>using namespace std;const int N = 1e5 + 10;typedef long long LL;int a[N], tmp[N];LL f(int a[], int l, int r){ if(l >= r) return 0; int mid = l+r >> 1; LL res = f(a, l

2022-03-01 21:22:45 110

原创 2022-02-21每日刷题打卡

一、一本通 1260:【例9.4】拦截导弹(Noip1999)1. 问题描述2. 问题解决#include<iostream>using namespace std;int a[N],b[N],c[N];int main(){ int n=0,maxx=1; while(scanf("%d",&a[n++])!=EOF) for(int i=0;i<n;i++) { b[i]=1;

2022-02-21 19:35:43 222

原创 2022-02-20每日刷题打卡

一、一本通 1258:【例9.2】数字金字塔1. 问题描述2. 问题解决#include<iostream>using namespace std;int a[N][N],f[N][N];int main(){ int n; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>a[i][j]; for(i

2022-02-20 23:07:04 279

原创 2022-02-18每日刷题打卡

一、AcWing 901. 滑雪1. 问题描述2. 问题解决#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 310;int n, m;int g[N][N];int f[N][N];int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int dp(int x,

2022-02-18 22:06:08 153

原创 2022-02-17每日刷题打卡

一、AcWing 91. 最短Hamilton路径1. 问题描述2. 问题解决#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 20, M = 1 << N;int n;int w[N][N];int f[M][N];int main(){ cin >> n; for

2022-02-17 19:59:09 300

原创 2022-02-16每日刷打卡

一、AcWing 338. 计数问题1. 问题描述2. 问题解决#include <iostream>#include <algorithm>#include <vector>using namespace std;const int N = 10;int get(vector<int> num, int l, int r){ int res = 0; for (int i = l; i >= r; i -- )

2022-02-16 21:33:42 356

原创 2022-02-15每日刷题打卡

一、AcWing 282. 石子合并1. 问题描述2、问题解决#include <iostream>#include <algorithm>using namespace std;const int N = 310;int n;int s[N];int f[N][N];int main(){ scanf("%d", &n); for (int i = 1; i <= n; i ++ ) scanf("%d", &s

2022-02-15 21:01:10 728

原创 2022-02-14每日刷题打卡

一、AcWing 902 最短编辑距离1. 问题描述2. 问题解决#include <iostream>#include <algorithm>using namespace std;const int N = 1010;int n, m;char a[N], b[N];int f[N][N];int main(){ scanf("%d%s", &n, a + 1); scanf("%d%s", &m, b + 1);

2022-02-14 21:44:59 316

原创 2022-02-13每日刷题打卡

一、AcWing 896. 最长上升子序列 II1. 问题描述2. 问题解决#include<iostream>#include<algorithm>#include<vector>using namespace std;int main(void) { int n; cin >> n; vector<int>arr(n); for (int i = 0; i < n; ++i)cin >>

2022-02-13 19:57:17 82

原创 2022-02-11每日刷题打卡

一、AcWing 898. 数字三角形1. 问题描述2. 问题解决#include <iostream>using namespace std;const int N = 510, INF = 1e9;int n;int f[N][N], a[N][N];int main(){ cin >> n; for(int i = 1; i <= n; i++) for(int j = 1; j <= i; j+

2022-02-11 17:43:45 447

原创 2022-02-10每日刷题打卡

一、AcWing 4. 多重背包问题1. 问题描述2. 问题解决#include <iostream>#include <algorithm>using namespace std;const int N = 110;int n, m;int v[N], w[N], s[N];int f[N][N];int main(){ cin >> n >> m; for(int i = 1; i <= n;

2022-02-10 19:25:35 464

原创 2022-02-09每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing 02 01背包1. 问题描述2. 问题分析状态表示:f[i][j],表示当前选择的最大值,其属性为max,i表示物品编号,j表示背包可使用的体积状态计算:f[i][j] = max(f[i-1][j], f[i-1][j-v[i]] + w[i])3. 问题解决#include <iostream>#include <algorithm>using namespace std;const int N =

2022-02-09 18:02:35 1216

原创 2022-01-22每日刷题打卡

一、一本通 1343 牛的旅行1.1 问题描述1.2 问题分析这道题套用Y总的朴素版dijskra算法模板,只需要更改一下起点和终点就行1.3 问题解决#include <cmath>#include <iostream>#define INF 0x3f3f3f3f#define x first#define y secondusing namespace std;typedef pair<int, int> PII;const int

2022-01-22 17:14:00 360

原创 2022-01-21每日刷题打卡

一、一本通 1352 奖金1.1 问题描述1.2 问题分析这道题使用拓扑排序的思想来做,题目要求a->b,发现不好算,就把这个图倒过来存,就比较好算了。1.3 问题解决#include <cstring>#include <iostream>using namespace std;const int N = 1e5 + 10;int n, m;int h[N], e[N], ne[N], idx;int d[N], s[N];int q[N];

2022-01-21 21:53:59 370

原创 2022-01-19每日刷题打卡

一、一本通 1341 一笔画问题1.1 问题描述1.2 问题解决#include<iostream>using namespace std;int n,m;int g[N][N];int dis[N],path[N*2];int cnt;void dfs(int i){ for(int j=1;j<=n;j++) if(g[i][j]) { g[i][j]=0; g[j][i]=

2022-01-19 20:21:52 366

原创 2022-01-17每日刷题打卡

一、一本通 1329 细胞1.1 问题描述1.2 问题解决#include <iostream>#include <queue>#define x first#define y secondusing namespace std;typedef pair<int, int> PII;const int N = 1e4 + 10;char g[N][N];int n, m;int dx[4] = {-1, 0, 1, 0}, dy[4] =

2022-01-17 22:27:42 261

原创 2022-01-16周总结

一、AcWing 842. 排列数字1.1 问题描述1.2 问题分析从第0个位置开始dfs;dfs结束条件:当搜索到第n个位置时,说明0~n-1的位置已经排列好了;然后在当前u位置上,从1~n放符合条件的数,找到后继续向下一个位置搜索;从下面回来后,恢复现场;1.3 问题解决#include <iostream>using namespace std;const int N = 15;int n;int a[N];bool st[N];v

2022-01-16 22:05:56 267

原创 2022-01-14每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing 851. spfa求最短路1. 问题描述2. 问题解决#include <cstring>#include <iostream>#include <algorithm>#include <queue>using namespace std;const int N = 100010;int n, m;int h[N], w[N], e[N], ne[N], idx;int dist

2022-01-14 22:13:10 128

原创 2022-01-13每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing 850. Dijkstra求最短路 II1. 问题描述2. 问题解决#include <cstring>#include <iostream>#include <algorithm>#include <queue>using namespace std;typedef pair<int, int> PII;const int N = 1e6 + 10;int n, m

2022-01-13 21:57:12 62

原创 2022-01-12每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing 848. 有向图的拓扑序列1. 问题描述2. 问题分析找到一个入度为0的点作为拓扑序列的第一个点;把该点和该点所有的边从图中删去;再在新的图中选择一个入度为0的点作为拓扑排序的第二个点;以此类推,如果所有节点尚未删去时找不到入度为0的点则说明剩余节点存在环路,不存在拓扑排序。3. 问题解决#include <cstring>#include <iostream>#include <al

2022-01-12 22:32:52 224

原创 2022-01-11每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing 847. 图中点的层次1. 问题描述2. 问题分析这题基本上就是使用图套上bfs的模板就可以了3. 问题解决#include <iostream>#include <cstring>#include <queue>using namespace std;const int N = 1e5 + 10;int n, m;int h[N], e[N], ne[N], idx;int d[N];

2022-01-11 21:44:33 199

原创 2022-01-10每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing 845. 八数码1. 问题描述2. 问题分析没理解,之后在消化3. 问题解决#include <iostream>#include <algorithm>#include <queue>#include <unordered_map>using namespace std;int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int bf

2022-01-10 22:09:37 421

原创 2022-01-09周总结

一、AcWing-838:堆排序1.1 问题描述1.2 问题解决#include <iostream>using namespace std;const int N = 1e5+10;int n, m;int q[N];void heap_adjust(int q[], int n, int i){ for (int j = i*2 + 1; j <= n-1; j = j*2 + 1) { if(j < n-1 &&

2022-01-09 21:46:29 475

原创 2022-01-08每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing 4206. 判断数字1. 问题描述2. 问题分析这道题是周赛的一道签到题3. 问题解决#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){ string s; int ans = 0; cin >> s; for(auto

2022-01-08 21:25:03 168

原创 2022-01-07每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing-799:最长连续不重复子序列1. 问题描述2. 问题解决#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1e5 + 10;int a[N], s[N];int n;int res = 0;int main(){ scanf("%d", &n);

2022-01-07 22:53:35 287

原创 2022-01-06每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing-842:排列数字1. 问题描述2. 问题分析3. 问题解决#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 12;int path[N];bool flag[N];int n;void dfs(int u){ // 走到头后执行的操作 if(

2022-01-06 22:03:21 416

原创 2022-01-05每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing-789:差分矩阵1. 问题描述2. 问题分析3. 问题解决#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1010;int n, m, q;int a[N][N], b[N][N];void modify(int x1, int y1, int x2, int

2022-01-05 22:11:07 413

原创 2022-01-04每日刷题打卡

一、Y总视频进度二、刷题2.1 干草堆1. 问题描述2. 问题分析做题思路:如果a[n]数组全部是0,那么其差分数组b[n]也全部是0;如果a[n]数组不是全部为0,则进行第二步操作;构造差分数组b[n],进行n次: b[i] += c; b[i+1] -= c; (i 属于 1-n)操作;3. 问题解决#include <iostream>#include <algorithm>using namespace std;const int N =

2022-01-04 21:31:58 413

原创 2022-01-03每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing-795:前缀和1. 问题描述2. 问题分析3. 问题解决#include <iostream>using namespace std;const int N = 1e5 + 10;int a[N], s[N];int main(){ int n, m; scanf("%d %d", &n, &m); for(int i = 1; i < n+1; i++) scanf("%d", &am

2022-01-03 17:53:12 952

原创 2022-01-02每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing-838:堆排序1. 问题描述2. 问题分析堆是实现优先队列的一种数据结构,是一种特殊的完全二叉树。堆排序的模板应当背下来。3. 问题解决#include <iostream>using namespace std;const int N = 1e5 + 10;int q[N];void heap_adjust(int q[], int i, int n){ for(int j = i*2+1; j < n;

2022-01-02 21:20:36 356

原创 2022-01-01每日刷题打卡

一、Y总视频进度二、刷题2.1 AcWing-791:高精度加法1. 问题描述2. 问题解决#include <iostream>#include <vector>using namespace std;vector<int> add(vector<int> &A, vector<int> &B){ if(A.size() < B.size()) return add(B, A); vector

2022-01-01 20:49:33 298

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除