随笔分类 -  题解

摘要:此题数据范围小,O(n^3)暴力可做。 O(1)做法灵感来自于“某爱好赌博的数学家发现两骰子点数之和为7的概率最大”的典故。 学习了此题的最高赞题解,进而得出本文解法。 首先考虑两个骰子的情况: (下图引用自此题的最高赞题解,我自己懒得画了qwq) 观察可得: ①点数之和共s1+s2-1种情况,分别 阅读全文
posted @ 2024-05-21 16:45 Running-Coder 阅读(105) 评论(0) 推荐(0)
摘要:大模拟、数学题、阅读题(虽然我题意没看懂然后苟了题解QwQ) 1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 5 #define ri register int 6 #define inf 2147483647 7 8 using 阅读全文
posted @ 2020-01-14 15:58 Running-Coder 阅读(207) 评论(0) 推荐(0)
摘要:1 #include<cstdio> 2 #include<cstring> 3 4 using namespace std; 5 6 inline int max(int x,int y){ 7 if(x>y)return x;else return y; 8 } 9 10 struct bignum{ 11 int c[10],l; 12 13 void clear(){ 14 memset( 阅读全文
posted @ 2019-08-11 21:08 Running-Coder 阅读(177) 评论(0) 推荐(0)
摘要:1 #include<cstdio> 2 #include<cstring> 3 4 using namespace std; 5 6 int find(int); 7 int abs(int); 8 void setup(); 9 10 int fa[30005]; 11 int size[30005]; 12 int d[30005]; 13 int T,x,y,fx,fy; 14 char 阅读全文
posted @ 2019-08-11 21:02 Running-Coder 阅读(178) 评论(0) 推荐(0)
摘要:本题思路非常明确:在所有能插入加号的位置枚举加号是否存在,对于每一种情况,若求得和为n则更新答案。 但是看看数据规模。。。长度<=40,也就是说枚举的时间最多可达2^39,显然会T,所以需要剪枝。 剪枝1:若整串拆分为单个数字后求和,所得结果>n,则一定无解。 原因:显然在一次拆分后,新生成的数字的 阅读全文
posted @ 2019-07-10 14:04 Running-Coder 阅读(364) 评论(0) 推荐(0)
摘要:这道题好干燥啊。。。折腾了半个月。。。感谢bogo大佬对我的指导。。。题目要求支持的操作:1.查询某段路径的所有子路径的xor值之和;2.修改某条边的权值。重点是操作1。刚开始,我看到了操作1之后就不自觉的想到了非~常暴力的东西。。。还好大佬及时把我引上正途:分治! 大家知道,最大子段和有个分治算法 阅读全文
posted @ 2018-01-08 12:32 Running-Coder 阅读(384) 评论(0) 推荐(0)
摘要:这题的题意是:对于每组x、y,求x到y路径上最小边权的最大值。 于是可以使用最大生成树,因为最大生成树满足性质:生成树中最小边权最大,且任意两点间路径上最小边权最大。 有了树之后,要求路径,那就要考虑LCA。 首先,这题可以树剖,但是我太懒了,于是写了倍增233 具体搞法: Kruskal跑出最大生 阅读全文
posted @ 2017-11-01 11:36 Running-Coder 阅读(580) 评论(0) 推荐(0)
摘要:圆润的多边形: 我们可将所求图形划分如下: 绿色部分是一凸多边形,红色部分为若干个长方形,蓝色部分为若干个扇形。 易证:1.蓝色部分的总和是一个半径为r的整圆;2.红色部分的总和=凸多边形周长*r。 那么现在就只剩下如何计算的问题。 1.对于前12.5%数据,r=0且点坐标成顺时针排列,那么直接作为 阅读全文
posted @ 2017-09-18 20:41 Running-Coder 阅读(172) 评论(0) 推荐(0)