首页 > TAG信息列表 > mx1

AcWing 356. 次小生成树

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

Codeforces 1099F Cookies

Problem - 1099F - Codeforces   给一棵树,边权为时间花费,每个节点有t[i]表示在这个节点吃一个cookie花的时间,x[i]表示这个节点cookie的个数,给了限制时间T A先手移动从根节点,每次移动到子节点或者返回,返回途中吃cookie B后手可以选择阻止A到达某个子节点 问可以吃到的最大的数量

20220502

tot: 140 (280) rk: 10/28 a 100pts 不存在 \(0\) 的话区间合法 \(\iff\) 区间和为偶数,线段树维护区间和分别为奇偶的左端点有多少个即可 \(0\) 相当于分成了若干段,维护下最后一个合法段的左端点即可 考场代码 const int N = 5e5+5; int n,m,a[N]; bool s[N]; vector<Pii> q[N];

P3629 [APIO2010]巡逻 题解

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

asgshshgadsggsg

#include<cstdio> #include<deque> #include<algorithm> #define N 1000010 #define ll long long #define fo(x,a,b) for(int x=(a);x<=(b);x++) #define fd(x,a,b) for(int x=(a);x>=(b);x--) using namespace std; inline int read() { int x=0;

leetcode 2127. 参加会议的最多员工数

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

pytorch batch sparse tensor (构建稀疏batch)

直接通过scipy sparse矩阵转化, 这个方法的缺点是不能构建 batch 的sparse tensor def sparse_mx_to_torch_sparse_tensor(sparse_mx): """Convert a scipy sparse matrix to a torch sparse tensor.""" # sparse_mx = sp.coo_matrix(sparse_mx)

牛客小bai月赛39 F 孤独(dp)

牛客小白月赛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;

软件学院CCPC选拔赛题解

前言 这次题解有点简陋,后面会慢慢更新优化,先凑合着看。有问题在群里或者评论区里直接说就行。 7-1 小学题目 四舍五入取整,只需要判断小数点最后一位就可以。考查对字符串的处理。用long double也可以过。 n的范围 0 < n <= 1e18。double的精度为精度为2^52-1=450359962737049

题解[P5666树的重心]

题目链接 题意:给定一棵树,求删去每条边后分裂成的两棵树的重心的编号和之和。 \(\text{Solution}\): 对每个点 \(x\) 分开讨论,统计有多少条边割掉后 \(x\) 能成为重心。 \(\text{Part 1}\) : 理论分析 假设让 \(x\) 成为根,其最大子树大小为 \(mx\) , 次大子树大小为 \(mx1\) 第一

P3174 [HAOI2009]毛毛虫

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 & B

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

P4180 [BJWC2010]严格次小生成树

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

[FJOI2018]领导集团问题

线段树合并简单题,贪心神题! 题意简述:给定一棵树,每个点有权值\(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 势能线段树/二分

原题链接: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+

CF1266F [*medium]

看到其他题解里面全是什么 bfs 序上线段树啊,什么根号的奇怪东西啊,蒟蒻用了一个非常好写的 \(O(n)\) 做法(这里实现的时候用了 vector,所以比较慢),写篇题解来造福社会 目前在 cf 上是最短解 如果 \(k = 1\),答案是 \(\max(dep_i + 1)\) 考虑有 \(3\) 个点的情况: 通过放缩法可以证明(证

Codeforces 1092C Prefixes and Suffixes【字符串+思维】

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

【佛山市选2013】JZOJ2020年8月7日提高组T2 树环转换

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

P2195 HXY造公园

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

洛谷3647:连珠线

洛谷3647:连珠线 题意描述: 有\(n\)个珠子,编号为\(1\)到\(n\)。从一个珠子开始,每次都会用如下的方式来添加一个新的珠子: \(append(w,v):\)一个新的珠子\(w\)和一个已经添加的珠子用红线连接起来。 \(insert(w,u,v):\)一个新的珠子\(w\)插入到已经用红线连起来的两个珠子\(u,v\)之

2019牛客暑期多校训练营(第二场)H Second Large Rectangle

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

UOJ #131 BZOJ 4199 luogu P2178【NOI2015】品酒大会 (后缀自动机、树形DP)

水是水,但是写出了不少问题,因此写一发博客。 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

bzoj1912 树形dp求直径(新写法),求直径的两端点

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