首页 > TAG信息列表 > D
CSP_202206-2_寻宝!大冒险!
CSP_202206-2_寻宝!大冒险 题目链接 思路 相当于判断两个有限集合AB之间是不是满射和单射,只需要保证以下两点 A和B元素个数相等 A中每个元素都能通过映射\(\psi\)到B中一个元素,且\(\psi(a_1)=\psi(a_2) \iff a_1 = a_2\) 坑 输入的矩阵格式和我们平常看到的坐标系,xy轴是反过来的马走日
https://www.acwing.com/problem/content/1118/ #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N = 10; int n, m; bool st[N][N]; int ans; int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2}; int dy[8] = {1YbtOJ 「数学基础」第6章 期望问题
既然被提醒了不要咕咕咕那就先写一点(? 不过过几天估计就又咕啦。 深刻体会到了写完几道题统一补博客的难受。 期望题 LaTeX 好难打诶可能写得简略点qaq 例题1.单选错位 emmm 好像没啥可说(? code #include<bits/stdc++.h> using namespace std; const int N=1e7+5; int n,A,B,C,a[N区块反转(模拟、链表)
题意 题目链接:https://www.acwing.com/problem/content/description/4280/ 数据范围 \(1 \leq K, N \leq 10^5\) 思路 这道题难度不大,但是我们需要思考如果写得更加简短。 这里给出yxc的实现方式。以地址为索引,使用两个数组存储节点的数值以及下一个节点的地址。 用一个数组按照AT916 题解
题目传送门 小学生又双叒叕来写题解啦! 大家使用的都是 while 循环,那我来一个 for 循环版本! 我的思路是贪心。 怎么个贪心法呢? 由于最多只能执行一百次,那我们就得多用三。 准确的说,就是按三二一的顺序,一个不行就轮到下一个。 为什么可以这样也很简单。 比方说你减了三,如果你不减三,CF402A 题解
题目传送门 \(\color{red}{see}\space \color{blue}{in}\space \color{green}{my}\space \color{purple}{blog}\) 小学生又双叒叕来写题解啦! 看到其他题解描述得并不清晰,我就来一发。 这道题实际上不困难,重点就是贪心。 只要遵循“能用隔板就用隔板,尽量将一个箱子所能装的坚果数最急性中风
https://www.acwing.com/problem/content/1583/ 注意: 三维的时候有六个方向。 #include <iostream> #include <cstring> #include <queue> using namespace std; const int M = 1286, N = 128, L = 60; int m, n, l, T; int g[L][M][N]; struct Node { int x, y,2022.8.12牛客小白补题
B-Gaming_牛客小白月赛54 (nowcoder.com) 先把所有区间的权值加起来,考虑从覆盖住的区间中找一个不被覆盖的点,可以枚举删掉哪个点,删掉这个点造成的权值损失可以通过差分前缀和来得到。 const int N=1e6+5; typedef long long ll; int n,m; ll s[N]; ll tot; int main(){ scanf("%CF1634F Fibonacci Additions
written on 2022-05-06 传送门 一道好题,是对差分的进一步理解。 首先我们要明确几个结论。 设原数组为 \(C\) ,差分数组为 \(D\) ,那么\(∀i∈[1,n]\) , \(C_i=0\) \(⟺\) \(∀i∈[1,n]\) , \(D_i=0\) 。 差分数组维护的信息是几个相邻数之间的关系,支持将区间操作改为单点操作。Vjudge20220416练习9 C CodeForces - 1013D
written on 2022-04-22 传送门 这是一道很有价值的题目,也是同类型题目中一道基础题 题目所给条件可以转化为: 给定(a,c),(a,d),(b,c) 那么(b,d)自动出现 这些都是二元关系,二元关系一多,就是暗示我们要考虑建图。那么想象现在有四个点 \(a\) , \(b\) , \(c\) , \(d\) ,现在有一些无向有边数限制的最短路——Bellman Ford算法
题目传送门 首先我们来认识一下Bellman Ford算法,Bellman - ford 算法是求含负权图的单源最短路径的一种算法,效率较低,代码难度较小。其原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在 n-1 次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。 实现过程 迭代 \(AtCoder AGC033B LRUD Game
洛谷传送门 AtCoder 传送门 思路 考虑正向进行操作并且维护当前棋子能到达的行区间 \([up,down]\) 和列区间 \([left,right]\)。则先手每次将区间往外扩展一格,而后手每次尽可能将区间往内缩小。当某一时刻先手执行完操作后区间的最左端或最右端不在棋盘上了,那么输出 NO。执行完所Kruskal算法求最小生成树
AcWing 859 最小生成树的定义: 给定一张边带权的无向图 \(G=(V,E)\),其中 \(V\) 表示图中点的集合,\(E\)表示图中边的集合,\(n=|V|\),\(m=|E|\) 由$ V$ 中的全部 \(n\) 个顶点和 \(E\) 中 \(n−1\) 条边构成的无向连通子图被称为 \(G\) 的一棵生成树,其中边的权值之和最小的生成树被称AcWing 178. 第K短路(搜索)
题目描述 题目链接 题目思路 A*算法:终点第一次从终点弹出时,一定是最小值 估价函数:从当前点到终点的最短距离,估计距离<=真实距离(在终点跑一遍dijkstra算法即可) 终点弹第几次就是第几短路 题目代码 #include <iostream> #include <cstring> #include <algorithm> #include <queue>Kruskal算法求最小生成树
例题链接 Kruskal算法的对比prim的区别是,前者使用了并查集的思路,而后者类似于Dijkskal算法。操作策略是,对所有边权进行从小到大的排序,然后从小到大遍历所有边权去选择,一个边被选择的条件是,这条边的两个端点位于不同的集合,即二者的find函数得到的值不同,然后将两个点加到同一个集合acwing1782 Dynamic Rankings (整体二分)
和整体二分的模板相比,多了修改操作。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10,INF=1e9; 4 int n,m,t,c[N],ans[N],b[N]; 5 struct node{ 6 int op,x,y,z; 7 }q[N*3],rq[N*3],lq[N*3]; 8 9 void change(int x,int y){ 10 for(;CF697A Pineapple Incident
https://www.luogu.com.cn/problem/CF697A涉及知识点:模拟,数学,枚举暴力橙色题 思路: 首先,假设菠萝从时间0开始叫,则想要吃的时间变为x-t。 然后,菠萝叫的时间变为0(原x),s,s+1,2s,2s+1. 就可以得到下面的极简代码: #include<bits/stdc++.h> using namespace std; int main(){数学期望学习笔记
概念 数学期望(简称期望),是试验中每次可能结果的概率乘以其结果的总和,它反映了随机变量平均取值的大小 一般来说,对于随机变量 \(X\) ,它有 \(n\) 中可能的取值,其中取到 \(x_i\) 的概率为 \(P(x_i)\) ,那么它的数学期望 \(E(X) = \sum_{i=1}^{n} x_i \times P(x_i)\) 数学期望也可以用P2678 [NOIP2015 提高组] 跳石头[普及/提高-]
https://www.luogu.com.cn/problem/P2678涉及知识点:贪心,二分黄色题 思路: 从起点出发,先选定一段距离mid,若前面的石头B与你所站着的石头A的距离小于mid,就把B搬掉,记录一下;如果不,就把B留下,再跳到石头B上。照这个步骤多次循环后,如果搬掉的石头多了,就把距离mid定小点;如果少了,就把m求100-999的水仙花数 C语言
#include <stdio.h> int main() { for(int a = 1; a < 10; a++) for(int b = 1; b < 10; b++) for(int c = 1; c < 10; c++) { if (a*a*a + b*b*b + c*c*c == a*100+b*10+c) { printf("%d%d%d\n", a,b,POJ2763 Housewife Wind (树链剖分)
差不多是模板题,不过要注意将边权转化为点权,将边的权值赋给它所连的深度较大的点。 这样操作过后,注意查询ask()的代码有所改变(见代码注释) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=100010; 6 int head[m滑动窗口专题
Shopping in Mars (25) Link 这道题还可以用前缀和+二分做。 #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <string> #include <string.h> #include <vector> using namespace std; int n,m; int d[[CF446B]DZY Loves Modification 题解
传送门QAQ Preface 很不错的一道题,学到了遇到瓶颈时思考的方法。 Analysis 首先要发现一个东西:行上的操作对所有列的影响是等效的,列同理。 那么就有了一个朴素的贪心思路:用优先队列求出当前和最大的行或列,处理一下答案。 但稍微想一下就能发现,如果有大小相同的行和列,那就相当不好「国家集训队」单选错位 题解
「国家集训队」单选错位 题解 题目大意 试卷上共有 $ n $ 道单选题,第 $ i $ 道题有 $ a_i $ 个选项,每个选项成为正确答案的概率都是相等的。 $ A $ 全部做对,但抄错位了:每题都向后抄了一个位置,特别地,第 $ n $ 道题目抄到了第 $ 1 $ 道题目的位置。 $ A $ 想知道自己期望能做对几道图染色
图染色 根号分治 图染色 - 题目 - Daimayuan Online Judge 图染色问题一般可用,树染色可用 dp 等方法 设一个阈值 M 度数大于 M 的点可设为大点,<= M 的设为小点 查询 若为小点,直接暴力枚举邻居,最多枚举 M 个 若为大点,不能暴力枚举,可考虑在修改的时候就算出来大点的答案 修改