摘要:
首先想到如果拿出来的是1,肯定不会改变value 然后如果两次拿出的都是4,得到的结果是一样的,只能算一种 想统计除了1以外的数的个数(去重后的) 89tps~ 然后看了一下数据范围,a是可以等于0的 0的情况下,拿走非零的数肯定没改变 拿走0不一定: 如果只有一个0,拿走了0,答案是1 如果有两个 阅读全文
摘要:
三行代码系列: # 获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出。 b = input.split("-") print("{}+{}".format(b[0],b[-1])) # 打印输出如下信息: 阅读全文
摘要:
有点疑惑为什么会出现在数据结构的题单里 明明是STL君啦! #include<bits/stdc++.h> using namespace std; const int maxn=3*int(1e5)+7; vector<int>s[maxn]; int n,m,col[maxn]; int mai 阅读全文
摘要:
询问区间内有多少数大于等于x,并且支持区间修改 发现线段树做不了 树状数组也不行 原来是分块! 分块是一种优雅的暴力,把长度为n的区间分成sqrt(n)块,每块长度为sqrt(n) 如果不是整的多出几个也没关系 原则是完整的块数直接求,零散的再暴力 比如要查询 1 2 3 4 5 6 7 8 9 1 阅读全文
摘要:
前置知识:最大流 大意是一个人喜欢一些菜,还喜欢一些房间,但房间和菜只能对应一个人,求最大的匹配数 菜和房间都是围绕人开始的,所以建图时把人放中间 room-->people-->veg or veg-->people-->room 为什么不能是people-->room-->veg? 你会发现这样 阅读全文
摘要:
在做这道题之前,可以先去看一下: P1453 城市环路: https://www.cnblogs.com/liyishui2003/p/16150985.html 如果说城市环路是没有上司的舞会的基环树版本 那P2607就是城市环路的基环树森林版本 刚开始开开心心把城市环路的代码改了改输出输入就交了 阅读全文
摘要:
这道题的解题关键在于:n个点,n条边 说起n个点,n-1条边,联通,必然是树形结构 那再多一条边呢? 这种图有自己的名字:基环树,也就是只有一个环的树 比如: 在做这题前可以先去看看:洛谷P1352没有上司的舞会 要求一条边的两个端点不能同时取,处理方法是设dp[i][0/1]表示这点取或者不取 转 阅读全文
摘要:
和这题类似的:easy版本数据是<=2000 打了一发01背包的变式n平方碾过去了 hard的数据能支持nlogn,平方肯定过不去了 一般dp和贪心喜欢在一起 考虑贪心 对于当前的x,先尝试吃下去,同时丢到小根堆里,记住吃了多少,ans累加,cnt累加 然后发现目前的ans小于0时,反悔,把吃下去的 阅读全文
摘要:
给定一个 nn 长度的数组 aa ,可以进行操作: 将数组相邻的两个元素删除,并在原来的位置插入这两个元素的异或和。 求在最多删除 n-2n−2 个元素(即至少剩余 22 个元素)的情况下能否使数组所有元素相等。 solution: 前置知识: 异或具有结合性,a xor b xor c xor d 阅读全文
摘要:
首先如果不为3的倍数肯定无解 如果为3的倍数 dfs查找每个点作为根的子树和 遇到一个满足和为sum/3的就删去 正确性: 可能会有很多个这样的点,他们之间的切割方式可以排列组合,要不要记录谁先割啥的,dp? 不,因为每个点其实都是一样的,对于两个合法的点之间..它们和为0,这段就没贡献,不影响。 阅读全文