ICode9

精准搜索请尝试: 精确搜索
  • [AcWing 241] 楼兰图腾2022-07-19 21:01:52

    树状数组 复杂度 \(n \cdot log(n)\) 单点修改, 区间查询 点击查看代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 2e5 + 10; int n; int a[N]; int tr[N]; int g[N], l[N]; int lowbit(int x) { return x & -x; } void a

  • AcWing 237. 程序自动分析(并查集+离散化)2022-07-19 13:03:23

    题目描述 题目链接 题目思路 先进行离散化(题目中给的数据范围很大,但需要用到的很少),109 ==> 2 × 106 离散化方式: 若要求保序:排序、判重、二分 若不要求保序,用map 本题约束条件的顺序无所谓,则先考虑所有相等的约束条件(一定无矛盾),再考虑不相等的约束条件 相等则放在一个集合中,

  • AcWing算法基础课第五讲2022-07-18 23:35:48

    (typora要清理,暂时上传避免丢了) #2 01背包问题 题目描述 有 \(N\) 件物品和一个容量是 \(V\) 的背包。每件物品只能使用一次。 第 \(i\) 件物品的体积是 \(v_i\),价值是 \(w_i\)。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 试解 #in

  • AcWing 178. 第K短路(搜索)2022-07-18 10:38:17

    题目描述 题目链接 题目思路 A*算法:终点第一次从终点弹出时,一定是最小值 估价函数:从当前点到终点的最短距离,估计距离<=真实距离(在终点跑一遍dijkstra算法即可) 终点弹第几次就是第几短路 题目代码 #include <iostream> #include <cstring> #include <algorithm> #include <queue>

  • AcWing 179. 八数码(搜索)2022-07-17 12:06:52

    题目描述 题目链接 解决思路 启发函数:只需要搜索非常少的状态,就可以搜到从起点到终点的最短路径 估价函数:当前状态中每个数与它的目标位置的曼哈顿距离之和 A*算法 优先级为:从起点到当前点的真实距离 + 从当前点到终点的估计距离 题目代码 #include <iostream> #include <cstri

  • [AcWing 1250] 格子游戏2022-07-16 11:01:34

    点击查看代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 1e5 + 10; int n, m; int p[N]; int find(int x) { if (p[x] != x) p[x] = find(p[x]); return p[x]; } void solve() { cin >> n >>

  • AcWing 1107. 魔板(搜索)2022-07-13 17:34:45

    题目链接 题目描述 见题目链接! 解题思路 将每一种魔板看作一个点,从初始状态12345678搜到目标状态 用unordered_map进行哈希,如:<String, int> ==> <"21345678", 2>,指从初始状态到目前状态需要操作多少次 因为还要输出进行的操作序列,如<String, pair<char, String>> ==> <"X", <'

  • acwing校庆2022-07-12 11:01:09

    题目链接: 题目链接:https://www.acwing.com/problem/content/4272/ 此题目同pat 甲级1157 难度评价:易 解题思路:给定两个字符串集合求交集,如果有交集,则统计到来的校友人数,并且如果发现yyyymmdd较小的(则是生日较大的)就更新当前的最大年龄的校友; 如果没有交集,并且发现发现yyyymmdd较小

  • [AcWing 95] 费解的开关2022-07-11 23:32:09

  • 【图论/平面图】AcWing 403. 平面2022-07-11 15:42:29

    平面图 首先介绍一下平面图的相关性质: 若图 \(G\) 能被画在平面上且不同的边仅在端点处相交,则称图 \(G\) 为平面图。画出的没有边相交的图称为 \(G\) 的平面表示或平面嵌入。 一个图的平面嵌入会将整个平面划分成若干个互不连通的区域,每个区域称为一个面。 其中,无界的区域称作外

  • AcWing 356. 次小生成树2022-07-10 20:36:37

    分析 这题做法很简单: 跑一遍 \(\texttt{MST}\)(最小生成树),把这棵树建立起来,上面的边标记为树边。 枚举非树边 \((u, v)\),记边权为 \(w\),考虑这条边能够提供的增量 \(del\)。 具体来说:只需要求出树上 \(u\to v\) 的路径上的边的最大值 \(mx_1\) 和严格次大值 \(mx_2\)(也就是保证

  • acwing-3358. 放养但没有完全放养2022-07-10 02:32:11

    3358. 放养但没有完全放养 刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html 题目 思路 一开始用的是双重循环进行判断,如果在listen字符串中有相邻的字符符合song中的顺序,则可以视为来自同一首歌。实现代码见代码1。 发现每个字母在song中只出现一次,则每个字母对应

  • AcWing 第59场周赛2022-07-10 00:00:40

    AcWing 第59场周赛 https://www.acwing.com/activity/content/competition/problem_list/2015/ AcWing 4491. 数组操作 按题意模拟即可 注意小坑:前缀和包括第0项,多一个答案0 #include <bits/stdc++.h> using namespace std; int main () { int minn = 0, ans = 0, sum = 0;

  • [AcWing 321] 棋盘分割2022-07-09 19:02:27

    点击查看代码 #include<iostream> #include<cstring> #include<cmath> using namespace std; typedef long long LL; const int N = 10, M = 20; const double INF = 1e9; int n, m = 8; int s[N][N]; double f[N][N][N][N][M]; double xx; int front_sum(in

  • [AcWing 1069] 凸多边形的划分2022-07-08 22:02:10

    点击查看代码 #include<iostream> #include<cstring> using namespace std; typedef long long LL; const int N = 60, M = 50; int n; int w[N]; LL f[N][N][M]; void add(LL a[], LL b[]) { LL c[M]; memset(c, 0, sizeof c); LL t = 0; for (in

  • 排序 二分学习2022-07-08 03:02:36

    AcWing基础课学习 排序 1. 快速排序 1. 原理 对于一段无序的数列,若要将其排序,可以以此步骤进行: 对于一段的数列,可以先任取一点mid作为判断点。(其中mid一般为数列中点) 对于这段数列进行一次遍历,将大于mid的数放于右端,小于mid的数放于左端。 然后对于分配过的序列,选取其[l,p],[p+

  • [AcWing 479] 加分二叉树2022-07-07 23:34:25

    点击查看代码 #include<iostream> #include<cstring> using namespace std; typedef long long LL; const int N = 50; int n; int w[N]; int f[N][N], g[N][N]; void dfs(int l, int r) { if (l > r) return; int root = g[l][r]; cout &l

  • [AcWing 320] 能量项链2022-07-07 23:03:04

    点击查看代码 #include<iostream> #include<cstring> using namespace std; typedef long long LL; const int N = 210; const int INF = 0x3f3f3f3f; int n; int w[N]; LL f[N][N]; int main() { cin >> n; for (int i = 1; i <= n; i ++) {

  • AcWing 工程课 Linux 第一讲 文件管理命令2022-07-07 11:34:27

    工程课的概述: 工程的基础:服务器。后端服务器(server)有:Linux、windows等。同一个后端的框架可以同时服务多个应用。市面上90%以上的服务器为Linux服务器。Linux常用的两个版本 :Ubuntu、CentOSLinux也是一种操作系统。 文件系统:     进入根目录后,常见的文件夹:bin:存储常用的

  • [AcWing 327] 玉米田2022-07-06 21:04:45

    点击查看代码 #include<iostream> #include<cstring> #include<vector> using namespace std; typedef long long LL; const int N = 14, M = 1 << 12; const int mod = 1e8; int n, m; int g[N]; vector<int> state; vector<int> head[M];

  • AcWing 2237. 猪2022-07-06 12:05:17

    POJ 1149 Pig/AcWing2237 猪 分析 本题还是蛮有意思的,我们来理顺一下思维过程。 我们总结一下,题目的操作。 每名顾客按顺序进行 将自己有钥匙的猪舍打开,从中挑选一些不超过自己想买的数量的猪。 同时可以将,打开的猪舍中的猪进行调整 这里面,我们需要一个逆向思维 我们考虑打开的

  • AcWing 1273. 天才的记忆2022-07-04 16:33:18

    AcWing 1273. 天才的记忆 题目传送门 一、\(RMQ\)问题 英文名称:\(Range\ Maximum (Minimum)\ Query\), 含义:询问某个区间内的最大或最小值,一般采用\(ST\)算法,也称\(ST\)表、跳表。 二、\(ST\)算法 该问题,容易想到的解决方案是遍历,复杂度是\(O(n)\)。但当数据量非常大且查询很频

  • AcWing 107. 超快速排序2022-07-04 09:02:55

    超快速排序 一、引理:逆序数 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 排列的逆序数等于该排列转化为自然排序(从小到大)的最小次数 例如:\(31425\) 的逆序数为\(3\) \(3\)无逆

  • AcWing 算法提高课 二维单调队列优化dp2022-07-03 21:07:30

    单调队列可以求出,区间内的最值。 对于二维的情况,可以先在每一行,用单调队列求出,行方向上的最值。 然后在行方向上的最值的基础上,在每一列,用单调队列求出列方向上的最值。 即可得到二维区间的最值。 例题:   1091. 理想的正方形 代码: #include<bits/stdc++.h> using namespac

  • AcWing 105 七夕祭2022-07-02 19:00:53

    题目传送门 一、核心问题分析 我的解法涉及一个贪心模板 ,请先看透这个题 :糖果传递 首先提醒一下,在一行中,各列摊位之间交换位置,是不改变行的摊位数量的。列同理。 我们模拟一下交换的过程: 假设七夕祭有\(12\)个摊位,图中有红圈的是题目主角喜欢的摊位。 ​ 经过两轮交换后各列的摊

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有