ICode9

精准搜索请尝试: 精确搜索
  • 复健训练-CF1698(Codeforces Round #803 (Div. 2))2022-07-24 02:00:40

    题目在这 【写完签到题就不会了...   A. XOR Mixup 题意:给一个 n 个数的序列 ${a_i}$ ,其中一个数是剩下的数的异或和,让你找出这个数。 做法:直接枚举。 #include<bits/stdc++.h> #define rep(i,x,y) for (int i=(x);i<=(y);i++) #define ll long long using namespace std; co

  • [模板]扩展卢卡斯定理2022-07-23 12:33:17

    #include<cstdio> #include<cstring> #include<string> #include<cmath> #define WR WinterRain using namespace std; const long long WR=10010; long long n0,m0,w[WR],mod; long long a[WR],b[WR]; long long res=1; long long read(){ long

  • 220722 T1 分树 (模拟)2022-07-22 14:31:40

    dfs一遍求出以每个节点为根的子树大小,然后枚举n的约数,对于每个约数i,统计sz[ ]是i的倍数的有多少个(开桶统计),如果有n/i个则答案+1。 这道题也就是个结论题,画图分析一下。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=2e6+10; 4 int head[N],to[N],nxt[N],

  • Educational Codeforces Round 132 (Rated for Div. 2) C2022-07-22 13:03:50

    https://codeforces.com/contest/1709/problem/C 题意 给你一个只包含{(,),?}的字符串。问有没有可能通过把?变成(或者),使得只存在唯一的改变方法能让字符串变为regular的 regular定义:A regular bracket sequence (or, shortly, an RBS) is a bracket sequence that can be transf

  • P1084 [NOIP2012 提高组] 疫情控制 (二分答案、贪心)2022-07-21 17:06:56

    因为若一个时间限制满足题意,则所有比它大的时间限制一定都满足题意,因此本题答案具有单调性,可以想到二分答案求解。 本题思路不是很难,但细节和代码实现比较复杂。 见牛人博客:https://www.luogu.com.cn/blog/TEoS/p1084-yi-qing-kong-zhi 1 #include<bits/stdc++.h> 2 typedef

  • LOJ #3343. 「NOI2020」超现实树2022-07-21 17:04:38

    提交记录 题目叙述 二叉树,称一棵树可以长成另外一颗树,当且仅当可以通过替换这棵树的叶子节点为随便其他的树,变成另一棵树。给定一个树的集合,判断是否可以只有有限棵树凑不出。 题解 考虑暴力怎么写,判断 \(i\) 的子树的所有情况是不是几乎完备的。然后只要判断左儿子和右儿子是不是

  • LOJ #3534. 「NOI2021」庆典2022-07-20 15:32:23

    提交记录 题目叙述 给定一个 \(n\) 个点 \(m\) 条边的有向图,满足如果 \(x\) 到 \(w\) 右边,并且 \(y\) 到 \(w\) 也有边,那么就一定有边 \(x\) 到 \(y\) 或者 \(y\) 到 \(x\) 。每次给出 \(k\) 条边 \(a_i\rightarrow b_i\) 表示这次询问新加入的边(不一定这样做之后的图还满足原题的

  • (动态)树分治 学习笔记2022-07-20 12:04:28

    浅谈一下学了好久的树分治。 一、点分治 适合处理大规模树上路径信息问题。 P3806 【模板】点分治1 很基础的了,询问树上距离为 \(k\) 的点对是否存在。 大概就是每次找重心当作根,对于当前的根,统计每个子节点到它的距离,然后用双指针遍历,当且仅当两个儿子到当前根的距离之和为 \(k\)

  • 【】树的直径与重心2022-07-20 07:31:08

    树的直径 \(2dfs\) 定理:在一棵树上,从任意节点\(x\)开始进行一次 DFS,到达的距离其最远的节点\(y\)必为直径的一端。 #include <stdio.h> const int V = 1024; const int E = 4096; struct EDGE { int t, next, w; } edge[E]; int edge_tot, head[V]; void add_edge(int f,int t,

  • 状压dp2022-07-17 17:06:50

    题目链接: https://www.luogu.com.cn/problem/P1896 题意: 在 \(n * n\) 的棋盘里面放 \(k\) 个国王,使他们互不攻击,共有多少种摆放方案。 国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 #include <bits/stdc++.h> using namespace std; #define

  • P1073 [NOIP2009 提高组] 最优贸易 (最短路spfa)2022-07-16 18:01:37

    本题就是在一条1-n的路径上找p,q(先经过p),使得q-p最大。 考虑建正反图,正图上求出d[x],表示1-x的路径经过的节点最小值,反图上则从n开始求出f[x],x-n的最大值,最后枚举断点i,取最大的f[i]-d[i]就是答案。 基于动态规划的思想。 1 #include<bits/stdc++.h> 2 using namespace std; 3 con

  • 回文自动机(PAM)2022-07-13 08:34:19

    构造 有两个空根 0 和 1,分别是偶根和奇根。以偶根为根的树存储所有偶数长度的回文串,奇根同理。 因为 Lemma. 「\(s\) 的本质不同回文子串总数是 \(O(n)\)」,所以存得下。 Proof 设以 \(i\) 为尾的最长回文子串左端是 \(l_i\),加入 \(s_{i+1}\) 后,得到了 \(l_{i+1}\)。对于 \(\subse

  • 【网络流】EK & Dinic 算法2022-07-13 08:33:32

    这两天学习了网络流,故写点东西加深理解。 关于网络流定义证明之类,前人之述备矣,此处整理一些比较舒适的代码实现。 EK 全名是 Edmonds-Karp. 慢但是码量少一些,让人十分欢乐。 EK不需要两次搜索也不需要分层。 更欢乐的是能用EK过的数据范围都较小。这是因为算法的时间复杂度 \(O(VE

  • 浅谈hash2022-07-11 22:08:03

    作者很蒻,在这里总结一下自己学一小点hash的经验。 hash可以用于查找,速度很快,可以近似看作为O(1)的时间复杂度,缺点是占用空间比较大,不过在竞赛中这种空间换时间的方式还是值得的。 哈希冲突是说不同的元素的关键字有可能相同,不能保证一个关键字与元素是一一对应的,这样就产生了哈希

  • CF #805(div3) G1. Passable Paths (easy version) 找规律+树上模拟~2022-07-11 20:33:05

    思路来自实验室一个work hard的学长~ 题意是说有一个点集,在树上,能否一笔画把这些点集走一遍 easy版本因为q在[1,5]之前,范围比较小,可以暴力 考虑什么情况下不能一笔画~ 如果对于一个点,它的分支有父亲fa、若干个儿子son 设想如果很多个分支上都有点集,显然没法一笔画走过去 当且仅当有

  • [CF1670E]Hemose on the Tree 题解2022-07-11 13:35:48

    传送门QAQ Preface 还是不会构造题啊>_< 发现性质的能力还是弱了点。 Analysis 直接说这题的结论:异或和的最小最大值为 \(n\)。 很简单,只要存在一个点和它连出去的边,两个的权值一个 \(\ge n\),一个 \(\lt n\),由于 \(n = 2^p\),珂以推出两者的异或和 \(\ge n\)。 而这样的一个点显然

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

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

  • 「APIO2014」回文串2022-07-05 22:31:35

    \(\text{Solution}\) 这是一道回文树模板题。 回文树 回文树是利用回文串的包含关系建的一个图。 首先回文树有奇根,偶根,偶根的\(fail\)指针指向奇根。 设\(fail_i\)表示标号为\(i\)的回文串失配后,他的最长后缀回文串的标号。 利用\(fail\)可以构造出回文树,考虑一个一个字符加入回

  • CF335F Buy One, Get One Free 题解--zhengjun2022-07-04 20:05:21

    思路 一道很妙的反悔贪心题。 考场上打的是 \(O(n\times k)\) 的 \(dp\),其中 \(k\) 是 \(a_i\) 的种类数。 考虑贪心,先从大到小枚举 \(a_i\),把相同的 \(a_i\) 一起处理。 当前可以白嫖的直接白嫖,如果不能再白嫖了,再看看如果前面白嫖了一个 \(x\),当前的为 \(y\)。 若 \(x<y\),显然是

  • 模拟专题2022-07-02 23:06:53

    1095 Cars on Campus Link 配对要求是,如果一个车多次进入未出,取最后一个值;如果一个车多次out未进入,取第一个值。 注意:一个车可能出入校园好多次,停车的时间应该取之和 #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <string> #include

  • 【数据结构/分块/可持久化 Trie】AcWing 269. Fotile模拟赛L2022-06-27 21:01:06

    块乐 分析 因为这题查询的是指定区间 \([l, r]\) 的最大异或子段,我们很难不想到使用可持久化 \(\texttt{trie}\) 来搞。 然而,对于每次查询,如果单纯地使用可持久化 \(\texttt{trie}\),那么必须要枚举右端点进行查询,那么每次查询的复杂度是 \(O(n{\rm {log}} V)\)(\(V\) 为值域大小),承

  • luogu P2304 [NOI2015] 小园丁与老司机2022-06-27 20:34:06

    题面传送门 非常码农的二合一题。 首先第一问看上去非常simple。因为只能往左,往右,和往上走(包括左上,上,右上),往上走显然是没有后效性的。而往左和往右因为每一层最多1000个,所以直接枚举从上一层跑过来的地方转移即可,时间复杂度\(O(1000n)\) 然后第二问只要按照我们dp的过程输出即可

  • POJ1985 Cow Marathon (树的直径)2022-06-25 15:36:34

    用两次dfs求出树的直径,这两次dfs可以写在一起,当然为了方便理解,这里是分开写的。 1 //两次dfs求树的重心 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 const int N=40005,M=40005*2; 8 int n,m,tot,p,ed; 9 int d[N],he

  • 洛谷P1395 会议 (树的重心)2022-06-25 15:05:22

    这道题考察了树的重心的性质,所有点到中心的距离之和是最小的,所以我们一遍dfs求出树的重心,在跑一次dfs统计距离之和。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int INF=0x7f7f7f7f; 4 const int N=50005; 5 int head[N],to[N*2],nxt[N*2],f[N],size[N];

  • POJ1655 Balancing Act (树的重心)2022-06-25 14:32:57

    求树的重心的模板题,size[u]维护以u为根的子树大小,f[u]表示去掉u后的最大子树。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 using namespace std; 5 const int INF=0x7f7f7f7f; 6 const int N=20005; 7 int head[N],to[N*2],nxt[N*2],f[N],size[N];

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

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

ICode9版权所有