ICode9

精准搜索请尝试: 精确搜索
  • 洛谷 P4178 / POJ 1741 Tree2022-07-26 20:33:48

    洛谷传送门 POJ 传送门 一眼点分治。 当递归到结点 \(u\) 时,计算出子结点 \(v\) 的子树内,所有结点和 \(u\) 的距离。然后与之前的合并并计算答案即可。使用树状数组,时间复杂度 \(O(n \log n \log k)\),空间复杂度 \(O(n + k)\)。 code /* p_b_p_b txdy AThousandSuns txdy Wu_Ren

  • 2022“杭电杯”中国大学生算法设计超级联赛(2) 题解2022-07-26 10:03:46

    A. Static Query on Tree 将集合 \(|A|,|B|,|C|\) 内取出的点记为 \(a,\ b,\ c\),我们可以从题目条件中提取三个信息 ① 满足要求的点一定在 a到c 的这条链上 ② 满足要求的点一定在 b到c 的这条链上 ③ 满足要求的点一定在 c 的子树内 利用树链剖分+线段树,我们可以在树上维护 \(a,

  • 博弈论2022-07-25 23:35:29

    博弈论 1.必胜点和必败点和sg函数定义。 2.单个取石子游戏。 sg值的定义就是找到一个不等于后继节点的最小非负整数。 光建就是sg函数。sg[x]=0就是p点,否则就是N点。下面是单个取石子游戏sg函数的计算方法。 第三条求法。利用搜索求解就好。 int f[MAXN],sg[MAXN];//f是可以取

  • P1077 [NOIP2012 普及组] 摆花2022-07-25 17:34:48

    https://www.luogu.com.cn/problem/P1077涉及知识点:模拟,动态规划DP 黄色题   思路:状态定义: 用f[i][j]表示前i种花,目前摆放了j盆的方案数 那么f[i][j]=f[i-1][j-0]+f[i-1][j-1]+f[i-1][j-2]+f[i-1][j-3]+f[i-1][j-min(a[i],j)];  //当k=0时也算上了 f[i-1][j]的情况,也就是

  • CF859E 题解2022-07-25 11:34:14

    分析 我们不妨把这些座位看作是一张图中的节点,把每个人的诉求作为一条边(由【原座位】指向【想去的座位】) 比如,对于样例#1,我们就可以得到这样一张图: 显然,我们有可能会得到多个连通图(比如上面这张) 因为每个座位上的人都只有一个想去的座位,所以每个点的出度就是 \(0\)(可能只有其他的

  • A层邀请赛32022-07-24 22:33:58

    日常垫底,赛个球 A. 玩个球 组合数\(DP\),搞了个傻逼性质在那乱转移,结果还是只有\(n == 2\)的分,有趣的是中间交的一份码过了\(n == 3\)的,但是不是最后一次提交。。 正解 \(dp[i][j]\)表示放了\(i\)个白球,有\(j\)个颜色放完的方案数,主要思想在枚举剩余位置的第一个放啥 考虑放白球,直

  • 2022牛客多校7.232022-07-24 21:35:26

    A B C D E F G H I J K L M 总题数 通过题数 ! ! O O ! O 12 3 Ø Ø O Ø Ø O Ø O 12 ? 赛后总结 G 证明见《离散数学》鸽巢原理 思想是分成\(\sqrt (n)\)个长度不超过\(\sqrt (n)\)的单增子序列,每个子序列按第一位数,从大到小排列 #include<cstdio> #i

  • 方格取数问题2022-07-24 21:32:10

    link 由于相邻的两个数不能同时选择,于是考虑把相邻的两个元素连边。又由于整张图很明显可以进行黑白染色,于是连边之后的图会形成一张二分图。于是寻找最大的方案就变成了割掉最小的方案,跑最大流最小割即可。 #include<bits/stdc++.h> //#define feyn #define int long long const

  • 题目Luogu-P1311 选择客栈2022-07-24 20:05:41

    题目链接 题目很好理解 1.暴力 60分 根据题面不难想到O(n2)的暴力,对b数组做一个最小值st表,然后暴力枚举两个端点,看区间最小值是否小于等于p即可 // Problem: P1311 [NOIP2011 提高组] 选择客栈 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P1311 // Memory Limi

  • Re:从爆零开始的预设型DP考题——我们不生产DP,我们只是DP的搬运工(缓更)2022-07-24 19:31:51

    题面 题面在这里 有的没的 预设型dp的意思大概是 枚举当前放哪个数。 搬运工系列都是计数dp。 First dp当然要从设立dp数组开始。 定义状态 \(dp[i][j][k]\) 表示 填到位置 \(i\) 、还有 \(j\) 个位置可以填数、贡献总和为 \(k\) 的方案数。 假定从小到大填数,对于一个数 \(x\) ,分

  • 来自学长的馈赠42022-07-24 19:02:53

    A. 活动投票 2MB内存!?红色的大字我都没看见,还以为他只是想考一个离散化,于是乎MLE爆0……不过如果我注意到了,我能保证做对吗?这是一个问题…… (1MB=1034KB, 1KB=1024B 1int=4B) #include <bits/stdc++.h> using namespace std; typedef unsigned long long ll; const int maxn = 3

  • 树状数组2022-07-23 22:04:11

    \(emm……\),作为一个完全可以被线段树代替的数据结构,其主要优点只有代码短与常数小 然而总有无聊的出题人卡常以及类似我的蒟蒻调不出线段树,所以还是得学一下的 树状数组天然用来维护前缀和,所以支持区间修改,单点查询;单点修改,区间查询 如果非要区间修改,区间修改也不是不行: 首先差分

  • 线性代数——矩阵2022-07-23 15:03:55

    1. 定义 由 \(m × n\) 个数 \(a_{ij}\) 排成的 \(m\) 行 \(n\) 列的数表称为 \(m\) 行 \(n\) 列的矩阵,简称 \(m × n\) 矩阵。记作: 这 \(m×n\) 个数称为矩阵 \(A\) 的元素,简称为元,数 \(a_{ij}\) 位于矩阵 \(A\) 的第 \(i\) 行第 \(j\) 列,称为矩阵 \(A\) 的 \((i,j)\) 元,以数 \(

  • 2022 年多校冲刺 NOIP 联训测试 第四场2022-07-23 08:35:43

    甲国的军队 按照\(b[i] - a[i]\)排序即可,考场想法是\(b[i] - a[i]\)代表的是可以重复利用的,显然选大的 code #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int read(){ int x = 0; char c; c = getchar(); while(c < '0�

  • Educational Codeforces Round 132 (Rated for Div. 2) A - E2022-07-23 00:31:47

    传送门 最近没进入状态,好久没更新博客了,有点开摆的感觉,不过集训期间肯定会认认真真打的 多校的题目是真的难顶 A - Three Doors 模拟一下 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <string> #include <queue> #include <functiona

  • 树上启发式合并2022-07-22 11:42:28

    模板 #include <iostream> #include <cstdio> using namespace std; const int N = 100010; int n, c[N], head[N], ver[N << 1], nex[N << 1], tot, cnt[N], num[N], siz[N], son[N], L[N], R[N], dfn, pos[N], maxn; long long sum[N], ans[N]; inlin

  • CF512D Fox And Travelling2022-07-22 11:04:18

    题意 给定一张图,每次只能选择一个与之相连的点中至多有一个点未选择的点,然后选择它。求有序选择 \(k\) 个点的方案数,对 \(k\in[0,n]\) 求解。 Solution 考虑选择点可以看成是删点,那么每次只有度数小于等于 \(1\) 的点可以删掉。这样的话容易想到就是一个环(边双)是删不掉的,于是我们

  • P1600 天天爱跑步 题解 Treap启发式合并2022-07-22 08:31:39

    仔细看了题解区里面好像平衡树的解法写的不太清楚,网上资料更是寥寥无几,经过自己的摸索之后,我尽量写一篇清楚的题解。 统一变量 设路径 \(i\) 的起点和终点为 \(s_i\) 和 \(t_i\), 长度为 \(dis_i\),起点和终点的lca为 \(lc_i\). 节点 \(i\) 深度为 \(d_i\). 推柿子 像其他题解所说

  • 并查集2022-07-22 08:03:43

    一般对于连通性问题,并查集是非常好用的 不仅仅可以维护出是否连通,还可以顺便维护出当前连通块的一些信息,比如直径 有时候并查集的祖先节点不做区分,即合并是认定父子关系是随意的,但是是遇到构建 \(kruscal\) 重构树等情形就需要做出区分,甚至在并查集树上做一些事情,所以一般情况下不

  • 【CF1635F】 Closest Pair 题解2022-07-20 09:34:39

    CF 传送门:CF1635F 找性质规律 + 单调栈 + 线段树 Solution 1 考场上想出了把那些点对扔进单调队列然后乱搞的做法。发现对于一个询问区间,如果想要直接都扔进单调队列然后从中找到带权距离最小值复杂度仍然很高。 换句话说,我们无法直接得到区间最优解。那不妨来试着求解单点最优解,

  • 【AT4162 [ARC099C]】 Independence 题解2022-07-20 09:05:29

    Link:(洛谷)AT4162 [ARC099C] Independence 首先在此感谢 @kymru 大佬提供的学术支持。 Solution 题意 给一张图,\(N\) 个点,\(M\) 条边,要求将图分成两个团,使得两个顶点都在同一个团中的边最少,求最小值。(团是一个两两之间有边的顶点集合。) 1 发现把所有节点分层两个团的本质就是对这些

  • 【CF487B】Strip 题解2022-07-20 09:05:13

    Solution 没想到这道题就个 RMQ + 简单 dp。从小到大遍历 \(l\) 到 \(n\),对于每个确定的区间右端点 \(i\),记 \(f_i\) 表示 \([1,i]\) 中最少能分成几段。那么显然,\(f_i = \min(f_j|j\in[1,i - l + 1]) + 1\)。当然,前提是 \(f_j\) 可被分为若干段。 下面先贴上代码,后面会详讲优化及

  • 2022.5.2 比赛题整理2022-07-20 08:35:30

    2022.5.2 2022初一测试五 链接集合 总结 \(80 + 80 +20 + 0 = 180\) 会拿部分分了,有进步。 T1:模拟,最后一个大数据打表。 T2:概率问题,贪心。 T3:找规律/性质,模拟。 \({\color{Red}{\text{dp 好题}}}\)T4:dp + 前缀和 + 预处理最长相同前缀长度。 Problem A Solution \({\color{Red}{\t

  • 【题解】CF1706C Qpwoeirut And The City2022-07-19 22:31:30

    【题解】CF1706C Qpwoeirut And The City 题意简述 给出一个长度为 \(n\) 的序列 \(h\),其中的每一项代表第 \(i\) 座建筑物的高度。 当 \(h_i > h_{i-1}\) 且 \(h_i>h_{i+1}\) 时,称第 \(i\) 座建筑是“凉爽的” 。 注意,第一座建筑和最后一座建筑不可能为“凉爽的”。 你可以增

  • CodeForces 1045D Interstellar battle2022-07-19 09:35:49

    洛谷传送门 CF 传送门 题意 给一棵树和每个结点消失的概率 \(p_i\),有 \(q\) 组询问,每组询问要求: 将 \(p_u\) 修改为 \(x\) 查询森林的期望连通块数量 思路 题中给出的是每个结点消失的概率,那不妨先 \(p_i \gets 1 - p_i\) 将 \(p_i\) 转化为每个结点出现的概率。 众所周知森林连

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

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

ICode9版权所有