
数学
文章平均质量分 71
Neutralzz
这个作者很懒,什么都没留下…
展开
-
Light OJ 1246 Colorful Board (棋盘黑白染色+数学)
解析:将矩形黑白染色,则根据题意,黑格和白格不能有同色出现。所以K种颜色有了三种划分,一是染了某个黑格,二是染了某个白格,三是没有使用。如果有i种颜色染黑格,则方案数等价于 n个不同的物品放入m个不同的箱子,箱子非空的方案数(Strling(n,m)*m!)。[code]:#include#include#includeusing namespace std;typedef原创 2016-02-15 10:54:30 · 779 阅读 · 0 评论 -
Light OJ 1382 The Queue(树形DP+数学)
题意:n个人排队,每个人b除CEO外都有一个监督人a,b必须排在a的后面,问有多少排队方案。解析:显然是一个树形DP。设dp[i]为以i为根的子树中对应的方案数,num[i]是以i为根的子树的节点数。下面考虑将两个队伍v1,v2合并一个队伍。其对应的方案数为C(num[v1]+num[v2],num[v1])*dp[v1]*dp[v2]。依据这个进行dfs。[code]:#原创 2016-02-18 23:37:30 · 410 阅读 · 0 评论 -
Codeforces 625D Finals in arithmetic(构造)
解析:k位的数字n可能是有k位的a得来也可能由k-1位的a得来。先将n视为字符串s[1....k]以a是k位为例,设p为进位,l,r为左右端点起始l = 1,r = n,p = 0若p = 0,s[l..r] = a...b 那么a[r]+a[l] = b,再将a与b做差,差值只能为0和1,如果是其他值,则不能形成,如果是0,说明a[l+1]+a[r-1] 若p = 1,s[l原创 2016-05-31 16:41:55 · 528 阅读 · 0 评论 -
LightOJ 1352 Strange Summation(找规律or数位DP)
解析:将[l,r]的所有二进制数字左对齐后做不进位的加法运算后的值(注意是不进位!写一下找找规律就好。[code]:#include#includeusing namespace std;typedef unsigned long long LL;LL num[70];int top;void sol(LL n,int p){//printf("-> %llu原创 2016-04-24 23:20:13 · 615 阅读 · 0 评论 -
HDU 5288 OO’s Sequence (数论)
题意:定义一个函数f(l,r) = i的个数使得在区间[l,r]中不存在a[i]%a[j]=0。∑i=1..n∑j=i..n f(i,j) mod (10^9+7)。解析:通过枚举因子,从前到后再从后到前求出能包含i的区间的左右端点的边界,即可。[code]:#include#include#includeusing namespace std;typedef long l原创 2016-07-06 08:27:20 · 213 阅读 · 0 评论 -
HDU 5297 Y sequencew(容斥+收敛迭代)
题目:从1开始的无限长正整数序列(1,2,3,4,5,...),剖去所有可以写成a^b的数(2解析:首先对于每一个r处理出对应容斥的数字,用vector记录下来以降低复杂度。开始的时候同样像的是二分,超时……看了一篇题解后,考虑序列的性质,向前迭代时是不断收敛的。(具体看代码)[code]:#include#include#include#include#include#原创 2016-07-06 10:25:23 · 275 阅读 · 0 评论 -
HDU 5729 Rigid Frameworks (连通二分图计数DP)
参考1:http://blog.youkuaiyun.com/dpppbr/article/details/51972196参考2:https://www.johannesbader.ch/2013/09/project-euler-problem-434-rigid-graphs/[code]:#include#include#includeusing namespace std;ty转载 2016-07-28 10:39:34 · 519 阅读 · 0 评论 -
Codeforces 689E Mike and Geometry Problem(离散化+懒标记)
题意:给出n个线段[li,ri],求任意k个线段所共同覆盖的点的总和。解析:对于每一条线段,区间[li,ri]加一,如果一个位置的值为m,那么最后的结果ans += C(m,k);如果只是离散化端点的话,没法求得中间部分被覆盖的点,所以在离散化时保证相邻两点中间留出一个1,对于中间的点,求出当前的值*(相邻两点实际距离-1)即是结果。[code]:#include#inclu原创 2016-07-09 09:03:10 · 452 阅读 · 0 评论