题目大意:给你n个点,m条边,现在有q次操作,每次一个x,表示将与x所连的所有点归并到x团里面,问最后每个点属于哪个团。 输入 5 4 3 0 1 1 2 2 3 4 0 1 3 0 4 3 0 1 1 2 2 3 2 0 2 4 3 0 1 1 2 2 3 2 0 3 4 1 1 3 1 2 5 5 0 1 0 2 1 2 1 3 3 4 3 4 4 0 输出 0 0 0 0 2 2 2 2 0 0 3 3
牛客多校第三场 D- Points Construction Problem 链接: Points Construction Problem 题意: 在2D平面内,每个格点(整数点)有一个白点,可以将其中一些点涂黑。 问能否将n个白点涂黑,使得有m对相邻的白点和黑点(指哈夫曼距离为1) 解法: (1)若每个黑点都是不相邻的,则可以发现涂黑n个的黑白对
目录Contest InfoSolutionsA. Clam and FishB. Classical String ProblemC. Operation LoveD. Points Construction ProblemE. Two MatchingsF. Fraction Construction ProblemG. Operating on a GraphL. Problem L is the Only Lovely Problem Contest Info 传送门 Solved A
题目链接:Two Matchings 题意:给你一个序列a,你要找到两种完全不同的整个序列的两两匹配,使得所有两两匹配差的绝对值的和最小,输出这个和 思路:对序列a排序后,显然最小的匹配相邻两两匹配,即$(a_2-a_1)+(a_4-a_3)+\dots+(a_n - a_{n-1})$,关键在如何求第二小的匹配 对于第二小的匹配,我们可
A.Clam and Fish 思路:贪心,没啥好说 int n,m,k; string s; void solve(){ cin>>n; cin>>s; int f=0,c=0; for (int i=0;i<n;i++){ if (s[i]=='0'){ if (c)c--,f++; } else if (s[i]=='1')c+
T1签到题,三分钟写完 就是一个前缀和,因为a[i]是要大于等于0的,所以取的越多越好。直接循环找最大的就好了 T2花了1h左右想了一下正解,但是发现循环节可能会非常的长,直接枚举可能会bz,就写了一个O(qnma)的暴力 T3尝试着找规律,但是找不到,就写了个暴力。。。
\(CSP\)凉心模拟^_^ ——题源\(lqx、lhc\)等各位蒟蒻 题目名称 比赛 传递消息 开关灯 源文件名 \(competition.cpp\) \(message.cpp\) \(light.cpp\) 输入文件名 \(competition.in\) \(message.in\) \(light.in\) 输出文件名 \(competition.out\) \(message.out\) \(li
明若清溪天下绝歌 缱绻成说,不知该在哪处着墨;一生情深怎奈何世事 徒留斑驳,只一念痴恋成奢。 目录 Anton and Polyhedrons
B题:题意给你一个01串,让你求最大的均衡01子串和最大的均衡01子序列(均衡的意思是这个子串或子序列中0和1的数量相等) 01子序列的话很好求,显然是两倍min(0的数量,1的数量) 子串的话有个很明显的错误想法,就是二分,比如这个样例,11000011 这个里面8是显然成立,而6是不成立的,所以不能二
目录 题目链接 题意 思路 代码 题目链接 传送门 题意 初始时有\(n\)堆石子,每堆石子的石子个数为\(a_i\),然后进行游戏。 游戏规则为你可以选择任意两堆石子,然后从这两堆中移除一个石子,最后石子个数变为\(0\)则获胜否则失败。由于总石子个数可能为奇数,此时不可能获胜,因此加了
题目来源于牛客竞赛:https://ac.nowcoder.com/acm/contest/discuss 题目描述: 输入描述: 输出描述: 示例1: 题解: 代码: #include <bits/stdc++.h> using namespace std; int T,N,a[100010]; int v[100010][3]; bool f[100010][3][3]; int ans[100010]; typedef pair<int,in
先感慨一下,思维规律场也没打出自己的优势来,哎。。。有些题还是没敢想没敢写。还是不难解决的。 A Rational Sequence An infinite full binary tree labeled by positive rational numbers is defi ned by: • The label of the root is 1/1. • The left child of label p
题目链接:https://ac.nowcoder.com/acm/contest/883/J 题目大意:opt p v,p是块的名字,opt为0是插入块,如果是已存在的块,输出已存在的块的值,并将它放到最后面,否则直接插最后面,并保持只有m个数,如果太多了就删掉最开头的,opt为1是查询块,v是1的时候查后面那块,0就是查自己,-1查前面那块
题目链接:https://ac.nowcoder.com/acm/contest/883/A 题目大意: 给出一个无向图和m条边,处理Q个询问 对于1 x y,将边序号为x到y的边反转,如果存在这条边则删除,不存在则增加。 对于2 x y,回答与点x直接相连的点集是否与y直接相连的点集是否相同,是则输出1,不是输出0 解题报告:
题目:https://ac.nowcoder.com/acm/contest/883/F 题意:求一个矩阵最大面积,这个矩阵的要求是矩阵内最小值与最大值差值<=m 思路:首先我们仔细观察范围,我们就知道可以n^3,前面这题我(看付队博客)讲过求一个最大的什么矩阵就是分两种情况, 第一种:枚举上下边界,转化为一维,复杂度n^3 第二种:枚
牛客多校第三场 G Removing Stones(分治+线段树) 题意: 给你n个数,问你有多少个长度不小于2的连续子序列,使得其中最大元素不大于所有元素和的一半 题解: 分治+线段树 线段树维护最大值的位置,每次分治找就找这个最大值,然后看最大值在哪个序列是可行的 怎么看最大值所在的序列是否可行呢?
题目 A B C D E F G H I J K 第一场 \ 第二场 \ 第三场 \ 第四场 第五场 \ 第六场 \ 第七场 第八场 第九场
This way 题意: 给你一张图,每次有2种操作 1 l r 表示从第l条边到第r条边,如果有这条边就删掉,否则就加上 2 x y 表示问与点x直接相连的点集是否与y直接相连的点集相同 题解: 将输入的边编号然后分块,如果要反转的两个区间不在一个块内,那么暴力l块和暴力r块,块间使用flag标记是否翻
题意: 给一个长度为\(m\)的队列,现给定以下操作: \(opt=0\),插入一个串,如果不在队里直接插入栈尾,如果超出\(m\)删队首;在队里就拿出来重新放到队尾,返回\(v\)值。 \(opt=1\),问某串的前/中/后的串的\(v\)值是什么,不存在输出\(Invalid\)。 思路: 把串\(Hash\),然后用双向链表维护这个队列。标
题意:给你n堆石子 每堆有ai个 现在问你有多少个连续的区间保证最大值小于等于该区间和的两倍 思路:我们可以考虑每个区间的分割点 总是该区间的最大值 所以我们只要ST找到该区间的最大值 然后每次都枚举较小的半区间 二分找到刚号满足的区间 这样我们就可累加个数了 注意边
multiset 和 set 是基于红黑树实现的 官方的函数参考网址 基本用法 insert erase find for(auto temauto:ss){} multiset multiset<int,greater> 递减 multiset<int,less> 递增 // // main.cpp // multiset // // Created by 陈冉飞 on 2019/7/30. // Copyright © 201
题意 给定一个 $n$ 个整数的数列,从中至多选取 $k$ 个上升子序列(一个元素最多被选一次),使得选取的元素和最大。 分析 考虑这个问题和经典网络流问题“最长不下降子序列”相似,我们考虑对这个建图并用网络流解决。因为求得费用和,则使用费用流做法。 具体建图见代码,主要考虑拆点和建立超
这题是原来cf上的一道原题,不过对于有一些数据范围修改了,不过还是很好想的 题意:给定一个长度为N的数组,对于数组中的每个位置,满足当前和小于M所需要去掉的最小代价 分析:对于当前是否需要进行去掉一些值,可以采取贪心的方法,对每次加入进来的数进行排序,当前是否需要删除一些值取决于当前
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6603 题目大意:给出一个凸包,凸包内有若干个圆,要求画尽可能多的对角线使得两两不在凸包内相交且不与任意一个圆有公共点 题解:先预处理出所有点对间的连线是否会和圆有公共点,记为x[i][j],之后进行区间DP。设f[i][d]表示从第\(i\)个
起初看到这道题的时候,草草就放过去了,开了另一道题,结果开题不顺利,总是感觉差一点就可以做出来,以至于一直到最后都没能看这道题qaq 题意:类似于操作系统上讲的LRU算法,有两个操作,0操作代表访问其中的块,如果命中,将该块去除放到数组的末尾,未命中则在数组末尾加入当前块,1操作是询问数组中