ICode9

精准搜索请尝试: 精确搜索
  • CF1634F Fibonacci Additions2022-07-31 18:35:28

    written on 2022-05-06 传送门 一道好题,是对差分的进一步理解。 首先我们要明确几个结论。 设原数组为 \(C\) ,差分数组为 \(D\) ,那么\(∀i∈[1,n]\) , \(C_i=0\) \(⟺\) \(∀i∈[1,n]\) , \(D_i=0\) 。 差分数组维护的信息是几个相邻数之间的关系,支持将区间操作改为单点操作。

  • Vjudge20220416练习9 C CodeForces - 1013D2022-07-31 18:00:30

    written on 2022-04-22 传送门 这是一道很有价值的题目,也是同类型题目中一道基础题 题目所给条件可以转化为: 给定(a,c),(a,d),(b,c) 那么(b,d)自动出现 这些都是二元关系,二元关系一多,就是暗示我们要考虑建图。那么想象现在有四个点 \(a\) , \(b\) , \(c\) , \(d\) ,现在有一些无向

  • 有边数限制的最短路——Bellman Ford算法2022-07-26 13:31:36

    题目传送门 首先我们来认识一下Bellman Ford算法,Bellman - ford 算法是求含负权图的单源最短路径的一种算法,效率较低,代码难度较小。其原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在 n-1 次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。 实现过程 迭代 \(

  • AtCoder AGC033B LRUD Game2022-07-21 08:37:42

    洛谷传送门 AtCoder 传送门 思路 考虑正向进行操作并且维护当前棋子能到达的行区间 \([up,down]\) 和列区间 \([left,right]\)。则先手每次将区间往外扩展一格,而后手每次尽可能将区间往内缩小。当某一时刻先手执行完操作后区间的最左端或最右端不在棋盘上了,那么输出 NO。执行完所

  • Kruskal算法求最小生成树2022-07-18 13:35:30

    AcWing 859 最小生成树的定义: 给定一张边带权的无向图 \(G=(V,E)\),其中 \(V\) 表示图中点的集合,\(E\)表示图中边的集合,\(n=|V|\),\(m=|E|\) 由$ V$ 中的全部 \(n\) 个顶点和 \(E\) 中 \(n−1\) 条边构成的无向连通子图被称为 \(G\) 的一棵生成树,其中边的权值之和最小的生成树被称

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

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

  • Kruskal算法求最小生成树2022-07-16 12:31:46

    例题链接 Kruskal算法的对比prim的区别是,前者使用了并查集的思路,而后者类似于Dijkskal算法。操作策略是,对所有边权进行从小到大的排序,然后从小到大遍历所有边权去选择,一个边被选择的条件是,这条边的两个端点位于不同的集合,即二者的find函数得到的值不同,然后将两个点加到同一个集合

  • acwing1782 Dynamic Rankings (整体二分)2022-07-16 10:31:47

    和整体二分的模板相比,多了修改操作。 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 Incident2022-07-12 15:03:48

    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(){

  • 数学期望学习笔记2022-07-12 09:37:25

    概念 数学期望(简称期望),是试验中每次可能结果的概率乘以其结果的总和,它反映了随机变量平均取值的大小 一般来说,对于随机变量 \(X\) ,它有 \(n\) 中可能的取值,其中取到 \(x_i\) 的概率为 \(P(x_i)\) ,那么它的数学期望 \(E(X) = \sum_{i=1}^{n} x_i \times P(x_i)\) 数学期望也可以用

  • P2678 [NOIP2015 提高组] 跳石头[普及/提高-]2022-07-09 12:39:08

    https://www.luogu.com.cn/problem/P2678涉及知识点:贪心,二分黄色题   思路: 从起点出发,先选定一段距离mid,若前面的石头B与你所站着的石头A的距离小于mid,就把B搬掉,记录一下;如果不,就把B留下,再跳到石头B上。照这个步骤多次循环后,如果搬掉的石头多了,就把距离mid定小点;如果少了,就把m

  • 求100-999的水仙花数 C语言2022-07-03 16:02:53

        #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 (树链剖分)2022-07-01 20:37:52

    差不多是模板题,不过要注意将边权转化为点权,将边的权值赋给它所连的深度较大的点。 这样操作过后,注意查询ask()的代码有所改变(见代码注释) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=100010; 6 int head[m

  • 滑动窗口专题2022-06-25 10:02:20

    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 题解2022-06-18 13:02:00

    传送门QAQ Preface 很不错的一道题,学到了遇到瓶颈时思考的方法。 Analysis 首先要发现一个东西:行上的操作对所有列的影响是等效的,列同理。 那么就有了一个朴素的贪心思路:用优先队列求出当前和最大的行或列,处理一下答案。 但稍微想一下就能发现,如果有大小相同的行和列,那就相当不好

  • 「国家集训队」单选错位 题解2022-06-11 19:31:52

    「国家集训队」单选错位 题解 题目大意 试卷上共有 $ n $ 道单选题,第 $ i $ 道题有 $ a_i $ 个选项,每个选项成为正确答案的概率都是相等的。 $ A $ 全部做对,但抄错位了:每题都向后抄了一个位置,特别地,第 $ n $ 道题目抄到了第 $ 1 $ 道题目的位置。 $ A $ 想知道自己期望能做对几道

  • 图染色2022-06-11 12:00:57

    图染色 根号分治 图染色 - 题目 - Daimayuan Online Judge 图染色问题一般可用,树染色可用 dp 等方法 设一个阈值 M 度数大于 M 的点可设为大点,<= M 的设为小点 查询 若为小点,直接暴力枚举邻居,最多枚举 M 个 若为大点,不能暴力枚举,可考虑在修改的时候就算出来大点的答案 修改 ​

  • 洛谷 P1076寻宝题解--zhengjun2022-06-10 20:01:10

    题面传送门 思路 首先,一看就是一道模拟,然后这个是暴力代码(50分) #include<bits/stdc++.h> using namespace std; int n,m,x; int a[10001][101],b[10001][101],c[10001]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=0;j<m;j++) scanf(&q

  • The Cow Lexicon S2022-06-06 14:04:09

    题目描述 Few know that the cows have their own dictionary with W (1 ≤ W ≤ 600) words, each containing no more 25 of the characters 'a'..'z'. Their cowmunication system, based on mooing, is not very accurate; sometimes they hear words that

  • AtCoder 题目乱做2022-05-31 12:31:37

    NOMURA Programming Contest 2022(AtCoder Beginner Contest 253) A - Median? 无脑比大小即可。 Code namespace LZX { using namespace std; int _main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); if((a<=b&&am

  • CF1468H K and Medians 题解2022-05-28 16:32:49

    每次删数都会删恰好 \(k-1\) 个,所以删的数总个数必须是 \(k-1\) 的倍数。考虑最终状态,如果所有数左边不足 \(\frac{k-1}{2}\) 个删掉的数或右边不足 \(\frac{k-1}{2}\) 个删掉的数,那么最后一步是无法实现的。否则,实现了最后一步之后,就可以很轻松的实现前面那些步(可以把最后一步删

  • 324 最近公共祖先 倍增算法2022-05-28 13:32:02

    视频链接: // P3379 【模板】最近公共祖先(LCA) #include <iostream> #include <cstring> #include <algorithm> #include <vector> using namespace std; const int N=5e5+10; int n,m,s,a,b; vector<int> e[N]; int dep[N],fa[N][20]; void dfs(int u, i

  • 倍增总结2022-05-20 16:32:52

    日期:2022年5月20日 注:本博客仅供参考   概念 倍增,顾名思义,每次增加一倍。展开来说,就是每次根据已经得到的信息,将考虑的范围增加一倍, 从而加速操作。 应用 倍增的应用主要是三个方面:快速幂、线性(RMQ问题)、树(LCA问题)。 代码实现 快速幂及其应用 【模板】快速幂(P1226) 1 #include<

  • 组队赛-152022-05-20 01:33:22

    做了C题,找规律         在最小循环节里统计不同数的个数就行 #include <iostream> #include <cstring> #include <algorithm> #include <math.h> using namespace std; typedef long long ll; const int N=1e7+10; bool st[N]; signed main() { int p; ll n;

  • 1414:【17NOIP普及组】成绩2022-05-13 15:34:19

        #include<cstdio> using namespace std; int a,b,c,s; int main() { scanf("%d%d%d",&a,&b,&c); s=a*0.2+b*0.3+c*0.5; printf("%d",s); return 0; }  

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

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

ICode9版权所有