ICode9

精准搜索请尝试: 精确搜索
  • 2022.5.6 AcWing每日一题2022-05-06 09:02:44

    签到题 字符串模拟二进制加法,因为 X17 = X16 + X1,而 16 倍相当于二进制左移四位,再和本身进行二进制相加即可。 #include <bits/stdc++.h> using namespace std; const int N = 1e3 + 10; int a[N]; int b[N]; string str; int main() { cin >> str; int len = str.size(); f

  • [AcWing 844] 走迷宫2022-05-05 00:32:19

    BFS 使用STL中的queue 点击查看代码 #include<iostream> #include<cstring> #include<queue> using namespace std; typedef pair<int, int> PII; const int N = 100 + 10; int n, m; int g[N][N], d[N][N]; queue<PII> q; int bfs() { q.push({0,

  • AcWing 802.区间和2022-05-04 22:33:10

    AcWing 802.区间和 题目描述 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。 输入格式 第一行包含两个整数 n 和 m。

  • [acwing]第1天2022-05-04 03:01:11

    2.1.3 BFS中的双向广搜和A-star:https://www.acwing.com/video/455/ ps:为了督促自己学习新算法,开启每日acwing,如果顺利的话,暑假前可以把提高课刷完,然后暑假继续学习进阶课,学习过程中可以顺便看oiwiki,其他的算法学习方式感觉就没必要了,先把acwing搞定再说。 记录方式和cf一样,先把两

  • [AcWing 841] 字符串哈希2022-05-03 22:35:53

    点击查看代码 #include<iostream> using namespace std; typedef unsigned long long ULL; const int N = 1e5 + 10; const int P = 131; int h[N], p[N]; char str[N]; ULL get(int l, int r) { return h[r] - h[l - 1] * p[r - l + 1]; } int main() { int n, m;

  • [AcWing 839] 模拟堆2022-05-03 18:04:38

    点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int h[N], sz, m; int ph[N], hp[N]; void heap_swap(int a, int b) { swap(ph[hp[a]], ph[hp[b]]); swap(hp[a], hp[b]); swap(h[a], h[b]); } void down(int u) { int t =

  • [AcWing 838] 堆排序2022-05-03 16:00:06

    点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int h[N], sz; void down(int u) { int t = u; if (2 * u <= sz && h[2 * u] < h[t]) t = 2 * u; if (2 * u + 1 <= sz && h[2 * u + 1] < h[t]

  • [AcWing 836] 合并集合2022-05-02 21:00:52

    点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int p[N]; int find(int x) { if (p[x] != x) p[x] = find(p[x]); return p[x]; } int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i

  • [AcWIng 835] Trie字符串统计2022-05-02 17:35:22

    点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int son[N][26], cnt[N], idx; char str[N]; void insert(char str[]) { int p = 0; for (int i = 0; str[i]; i ++) { int u = str[i] - 'a'; if (!son[

  • [AcWing 829] 模拟队列2022-04-30 01:02:01

    点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int q[N]; int l = 0, r = 0; void push(int x) { q[r] = x; r ++; } void pop() { l ++; } bool empty() { return l == r; } int query() { return q[l]; } int main()

  • [AcWing 3302] 表达式求值2022-04-30 00:31:07

    点击查看代码 #include<iostream> #include<stack> #include<cstring> #include<unordered_map> using namespace std; stack<int> nums; stack<char> op; unordered_map<char, int> h{ {'+', 1}, {'-', 1}, {

  • AcWing 854. Floyd求最短路2022-04-29 21:00:33

    模板题     解释一下第36行 判断两点间是否有路径 为什么是 INF/2 而不是INF? 题目所说“边权可能为负数”,虽然我们可能无法到达那个点,但是那个点的权值可能会被更新掉。如图所示   因为4到5的边权值为负的,那么1到5的距离是INF,这个点可能经过了4,也就是经过了负边,到点5,这时候1

  • AcWing 456. 车站分级 拓扑排序2022-04-27 23:33:26

    车站分级 今日份DAG呈上 题目 https://www.acwing.com/problem/content/458/ 思路 题意:同一趟车次内,停靠的车站\(a\)的等级严格大于未停靠的车站\(b\)的等级 所以可以根据\(a>b\)来建边(即,所有未停靠站建边指向所有停靠站) 优化:对于两个点集之间,可以在中间建立一个虚拟源点,复杂度O(n

  • [AcWIng 799] 最长连续不重复子序列2022-04-27 16:02:38

    点击查看代码 #include<iostream> using namespace std; const int N = 1e5 + 10; int a[N], s[N]; int main() { int n, res = 0; scanf("%d", &n); for (int i = 0; i < n; i ++) scanf("%d", &a[i]); for (int i = 0

  • [AcWing 793] 高精度乘法2022-04-25 21:36:16

    点击查看代码 #include<iostream> #include<vector> using namespace std; vector<int> mul(vector<int>& A, int b) { vector<int> C; int t = 0; for (int i = 0; i < A.size() || t; i++) { if (i < A.size())

  • [AcWing 790] 数的三次方根2022-04-25 00:33:28

    点击查看代码 #include<iostream> using namespace std; int main() { double x; scanf("%lf", &x); double l = -1e5, r = 1e5; while (r - l > 1e-8) { double mid = (l + r) / 2; if (x <= mid * mid * mid) r =

  • acwing区间2022-04-24 21:32:49

    首先区间个数可以转化为前缀和的形式 然后就是差分约束了 最少包含多少个数 就是不等式为a>=b+c 的形式 只要满足了最长路的不等式 其他所有的不等式也都满足 就是跑一遍最长路 差分约束的关键在于这个约束 一定要把所有的限制条件找出来 这个题看似只有一个区间个数的限制 其实

  • AcWing 4412. 构造数组2022-04-24 13:32:10

    AcWing 4412. 构造数组(三种解法) 思路分析 经分析可得, \[若a_i = a_j,则 b_i <= b_{i + 1} <= ... <= b_j\\ 又\because b_i=b_j\,\,\,\therefore b_i = b_{i + 1} = ... = b_j \]所以只需要去统计有多少个这样的区间,然后乘2即可(因为每一个区间都有两种选择) 法一:区间合并 基础 防止

  • [AcWing 53] 最小的 k 个数2022-04-23 18:00:22

    堆排序 点击查看代码 class Solution { public: vector<int> getLeastNumbers_Solution(vector<int> input, int k) { priority_queue<int> heap; for (auto x : input) { heap.push(x); if (heap.size() > k) h

  • [AcWing 29] 删除链表中重复的节点2022-04-22 17:33:07

    点击查看代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* deleteDuplication(ListNode* head) { a

  • [AcWing 35] 反转链表2022-04-21 23:31:25

    点击查看代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* reverseList(ListNode* head) { if (!he

  • AcWing 2. 01背包问题(01背包)2022-04-21 19:34:12

    题目链接 题目描述 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 题目模型 01背包:每个物品只能选或不选 集合表示:f(i,j) 集合含义:所有

  • Floyd2022-04-19 00:31:33

    #include <bits/stdc++.h> using namespace std; const int N = 210, INF = 0x3f3f3f3f; int d[N][N], n, m, q; void Floyd(){ for (int k = 1; k <= n; k ++ ) for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= n; j ++ ) d[i][j] = min(d[i]

  • AcWing 1275. 最大数2022-04-16 11:34:48

    题目传送门 题意: 给两种操作。 添加操作:向序列后添加一个数,序列长度变成 \(n+1\); 询问操作:询问这个序列中最后 \(L\) 个数中最大的数是多少。 思路:线段树裸题,通过单点修改和回溯中的\(pushup\)维护区间最大值。 #include <bits/stdc++.h> using namespace std; typedef long long

  • 4395. 最大子矩阵(acwing)2022-04-16 09:33:05

    根据题意很容易想到二分 但是问题来了 二分面积但是长宽还是需要O(n)来确定 完全承受不了 观察这个题目相较于一般的最大子矩阵问题 在于两个数列 #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long const int maxn=2e3+5; ll a[max

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

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

ICode9版权所有