摘要: bool cmp(string& a,string& b) { // 如果a+b<b+a 则把a排在b前面 return a+b<b+a; } 如果a+b<b+a 则把a排在b前面 这个题有一个数据点是全0,好几个数都是0,所以去掉前导0之后会没有输出,要特判。 附: 升序排序 bool cmp(i 阅读全文
posted @ 2020-05-31 22:05 xyee 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 这题的话,首先要知道什么是满二叉树,满二叉树就是和完全二叉树的点一一对应,但是最下面一层可以不放满,但是左边的叉不能为空,必须从左到右排列的一种树。 这题借鉴了别人的思路: 为了让左边放满,我们中序遍历构建一颗二叉树,这样就保证左边的点可以放满了,同时和完全二叉树点的编号一一对应,这个思路真的挺不错 阅读全文
posted @ 2020-05-31 21:58 xyee 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 这题看清楚题的话,题目说两个人关系的质量取决于两个人所有通话时间的总和。 对于黑帮老大,就是和其他人关系质量最大的那个人。 然后读懂题之后就可以把关系定义成边,人定义成点,关系质量就是边权。 问题就转化成,求一个图上有几个连通块,每个连通块中,所具有边权最大的点是哪个。 #include <bits 阅读全文
posted @ 2020-05-31 21:53 xyee 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 这个题很明显是道DP题,因为这题看着很明显是动态的。 看下数据范围,喜欢的颜色是200,条带长度是10000,那么就是2e6,空间就确定了,状态方程就很容易确定。 定义dp[i][j]为当下标为i时,挑选的上一个喜欢的颜色为j时的最大长度。 那么dp方程就很好确定了。 如果下标为i的颜色时喜欢的颜色 阅读全文
posted @ 2020-05-31 21:44 xyee 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 这题就是一道数位dp的一道题,直接用数学做就行了,分别统计个位、十位、百位上1的个数。 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAXN=1e6+10; int main() { #i 阅读全文
posted @ 2020-05-31 18:21 xyee 阅读(132) 评论(0) 推荐(0) 编辑