ICode9

精准搜索请尝试: 精确搜索
  • AcWing 356. 次小生成树2022-07-10 20:36:37

    分析 这题做法很简单: 跑一遍 \(\texttt{MST}\)(最小生成树),把这棵树建立起来,上面的边标记为树边。 枚举非树边 \((u, v)\),记边权为 \(w\),考虑这条边能够提供的增量 \(del\)。 具体来说:只需要求出树上 \(u\to v\) 的路径上的边的最大值 \(mx_1\) 和严格次大值 \(mx_2\)(也就是保证

  • P3629 [APIO2010]巡逻 题解2022-05-20 12:32:06

    题面 \(k=1\) 的时候就是边数 \(\times 2\) 再减去直径长度。考虑 \(k=2\) 的时候,减去的相当于是选出的两条路径的对称差。考虑一个贪心,第一次取某一条直径一定不会更劣,这个感性理解就好。然后把这个直径的边权都设成 \(-1\) 再跑一遍直径就行了。 点击查看代码 const int N=1e5+

  • leetcode 2127. 参加会议的最多员工数2022-01-03 12:05:18

    1 class Solution { 2 public: 3 int maximumInvitations(vector<int>& favorite) { 4 int n=favorite.size(); 5 vector<int>ind(n); 6 for(int i=0;i<n;i++)ind[favorite[i]]++; 7 vector<int>mxlen(n

  • Codeforces Round #753 (Div. 3) (A~E)2021-11-05 17:06:43

    A. Linear Keyboard 题目大意 第一行给你一个长度为26的字符串,代表26个字母的排列循序,相邻字母的距离为 1 。 第二行给你一个字符串,问从头走到尾共走了多长的距离。 解题思路 暴力枚举即可。 AC代码 #include <bits/stdc++.h> using namespace std; int main() { int t;

  • 牛客小bai月赛39 F 孤独(dp)2021-10-29 19:01:34

    牛客小白月赛39 F 孤独 #include <bits/stdc++.h> using namespace std; typedef long long ll; int ans = INT_MAX, n; int sz[1000006]; int dp[1000006]; vector<int>vec[1000006]; void dfs(int i, int fa) { sz[i] = 1; int mx1 = 0; int mx2 = 0; int mx3 = 0;

  • P3174 [HAOI2009]毛毛虫2021-09-14 23:04:29

    Jisoo \(dp_i\)表示节点i为头的最长毛毛虫 (我这里i的父节点呗算作腿的一条) 然后就可以不用特判地进行转移 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define int long long using namespace std; int n,m; struct ed{ int to; int ne; }ed[6

  • 总之就是 CF 1535 A & B2021-06-11 19:01:49

    截至到我写这篇文章前,我的做法还没被 Hack 掉,因此我就先在这里写一写 UPD:没有 fst 声明 我菜的一笔,只能做出来简单的题 A 和 B ,还都是 BF 拿分( 希望大家能把我瞎搞的做法 Hack 掉。 A Fair Playoff 洛谷 | CF1535A CF | 1535A 这个 A 一看就非常之......水。 题意简述 现有

  • P4180 [BJWC2010]严格次小生成树2021-03-20 09:02:45

    题目 题目 思路 最小生成树都会吧? 不会的戳这里 接下来我们用LCA求每一条非树边在树上环的最大边权和次大边权,然后求一个min(s-mx+v,s-mx2+v,mn)就可以了,注意如果mx=v,第一项不比较. code: #include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<c

  • [FJOI2018]领导集团问题2021-03-12 23:03:23

    线段树合并简单题,贪心神题! 题意简述:给定一棵树,每个点有权值\(w_i\),要求你选择一个最大的点集(不要求联通),使得若\(u是v的祖先\),则\(w_u \leq w_v\). \(n \leq 1e5,w_i \leq 1e9\) 考虑设\(dp_{u,i}\)为以\(u\)为根的子树内,最大值为i能选的最大的点数,将\(w_i\)离散化. 有

  • CF1136E Nastya Hasn't Written a Legend 势能线段树/二分2021-01-18 11:03:01

    原题链接:Nastya Hasn't Written a Legend 题目大意 给定长度为\(n\)的数组\(a\)和长度为\(k-1\)的数组\(k\),执行\(q\)个操作,每个操作形如: 对\(a_i\)加\(x\),之后如果有\(a_{i+1} < a_i +k_i\)则修改\(a_{i+1}\)为\(a_i+k_i\),之后对\(a_{i+2}\)如果有\(a_{i+2}<a_{i+1}+k_{i+

  • Codeforces 1092C Prefixes and Suffixes【字符串+思维】2020-11-19 10:04:55

    题目链接:点这里 题意:理解错了题意导致WA好几发,QAQ暴击 题意是判断给你的2*n-2个字符串是前缀还是后缀,不是判断这个字符串的内容...我真的欲哭无泪,理解能力太菜了 思路:将两个n-1长的字符串取出,先判断第一个取出的字符串和给出的字符串前缀的匹配程度。如果匹配程度大于半数,则这个为

  • 【佛山市选2013】JZOJ2020年8月7日提高组T2 树环转换2020-08-07 21:31:57

    【佛山市选2013】JZOJ2020年8月7日提高组T2 树环转换 题目 描述 给定一棵N个节点的树,去掉这棵树的一条边需要消耗值1,为这个图的两个点加上一条边也需要消耗值1。树的节点编号从1开始。在这个问题中,你需要使用最小的消耗值(加边和删边操作)将这棵树转化为环,不允许有重边。 环的定义如

  • P2195 HXY造公园2020-04-17 20:01:08

    题目描述 现在有一个现成的公园,有 \(n\) 个休息点和 \(m\) 条双向边连接两个休息点。众所周知,\(HXY\)是一个\(SXBK\) 的强迫症患者,所以她打算施展魔法来改造公园并即时了解改造情况。她可以进行以下两种操作: \(1、\)对某个休息点 \(x\),查询公园中可以与个点互相到达的休息点组成的

  • 2019牛客暑期多校训练营(第二场)H Second Large Rectangle2019-07-31 18:00:40

    题意: 就是给你个n行字符串,字符串由0和1构成,让你找出来一个里面全部字符都是1的第二大的矩形,如果一个大矩形包含一个小矩形,那么他们算两个   题解: 这道题和51nod 1158很相似,只不过我们要找第二大,那么我们可以维护一个记录第一大和第二大的变量,每次都对他们进行判断 但是注意我们不

  • BZOJ4199 NOI2015品酒大会(后缀树)2019-05-04 13:45:26

      利用SAM建出后缀树,树上每个节点计算一下|right|、right集合中ai的最大、次大、最小、次小值即可。 #include<iostream> #include<cstdio>#include<cmath>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;#define ll long long#define N 600010#

  • Codeforces Round #530 (Div. 2) F 线段树 + 树形dp(自下往上)2019-05-03 18:38:40

    https://codeforces.com/contest/1099/problem/F 题意 一颗n个节点的树上,每个点都有\(x[i]\)个饼干,然后在i节点上吃一个饼干的时间是\(t[i]\),有n-1条边,每条边有边权w为经过一条边所需时间,你从树根开始先手向下走,然后对手割掉你所在节点到子节点的任意一条边,你可以在任何时

  • UOJ #131 BZOJ 4199 luogu P2178【NOI2015】品酒大会 (后缀自动机、树形DP)2019-04-06 21:47:36

    水是水,但是写出了不少问题,因此写一发博客。 https://www.luogu.org/problemnew/show/P2178 https://www.lydsy.com/JudgeOnline/problem.php?id=4199 http://uoj.ac/problem/131 首先我们知道,反串SAM就是原串的后缀树,所以两个后缀的LCP就是反串SAM parent树上的LCA。 可是这个LC

  • Educational Codeforces Round 58 (Rated for Div. 2) 树形dp + 数学2019-03-31 16:39:45

    https://codeforces.com/contest/1101/problem/D 题意 一颗n个点的树,找出一条gcd>1的最长链,输出长度 题解 容易想到从自底向长转移 因为只需要gcd>1即可,所以定义\(dp[u][i]\)为u的子树中和u相连的gcd含有i的最长链长度,i为素因子 这样对于每个点u,维护\(dp[u][i]\),用两条最

  • bzoj1912 树形dp求直径(新写法),求直径的两端点2019-03-10 22:48:17

    通过回溯法可以求出直径的两个端点,同时注意有负权边的树求直径不可以用两次dfs来求,而必须用dp做 /*分情况讨论问题一条边也不加的情况,显然每条边要扫描两次, 该情况的答案是2(n-1)只加一条边的情况,找到直径,将其变成一个环,在这个环上的所有边只要扫描一次,剩下的边就要扫描两次

  • 洛谷P3247 [HNOI2016]最小公倍数 [分块,并查集]2019-02-17 14:50:47

    洛谷 思路 显然,为了达到这个最小公倍数,只能走\(a,b\)不是很大的边。 即,当前询问的是\(A,B\),那么我们只能走\(a\leq A,b\leq B\)的边。 然而,为了达到这最小公倍数,又需要有\(\max\{a\}=A,\max\{b\}=B\)。 那么暴力做法就很显然了:并查集维护连通块的\(\max\{a\},\max\{b\}\),询问时把

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

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

ICode9版权所有