自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 codeforces 55D Beautiful numbers 数位dp

dp[i][lcm][mod] i 推到第几位 lcm 为 比i高的位的值的最小公倍数, mod为此时的数值 %(lcm(1, 2, 3, 4, 5, 6, 7, 8, 9) = 2520)的价值 dp[i][lcm][mod] 的值为这个状态时 0 - (i -1)位选择的方案数使其最后数值%所有位的lcm为0 因为2520能够整除任意由1 - 9 形成的最小公倍数所以%2520 最后判

2016-08-31 19:29:50 285

原创 hdu 3709 Balanced Number 数位dp

瞎猜的规律:除0以外 每个数只有一个中心或者没有,中心是本题定义的中心 dp[i][mid][sum] 代表给第i位填数, 中心点定义为mid, 比i高的位与中心的距离为sum 距离定义左正右负 坑点数组要开大和0要特殊考虑#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define LL

2016-08-31 15:44:31 321

原创 hdu 5072 Coprime 容斥 同色三角形

n个点之间都有边相连颜色为红或黑, 那对于每个点能形成异色三角形的方案为blackEdge[i] * redEdge[i] ,这n个点能形成异色三角形的方案数为 sum (blackEdge[i] * redEdge[i]) /2 (1<=i<=n) 如果两个数互质就是红边不互质就是黑边,抽象出这个基本模型就行了这个是难点。。。 判断 每个点有几个点与其互质分解质因子用容斥原理也是最基本的方法#

2016-08-30 22:16:40 451

原创 spoj LCM Sum

一个数论定理 对于n >= 2 小于它与它互质的数的和 为 n*phi*(n)/2 然后lcm(a,b) = a * b / gcd(a, b) 时间太紧 所以打表预处理枚举每个数然后找到每个能整除它的数加上一部分欧拉函数的和#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<ios

2016-08-30 18:04:08 329

原创 hdu 4390 容斥组合数学

先抽象出 n个相同物品放在m个不同抽屉里的模型 结果为C(n, n+m-1) 然后本题要求抽屉里必须放物品 所以要反向思维容斥求出有抽屉不放物品的方案数 为大于等于一个为空的方案减大于等于两个为空的方案加大于等于三个为空的方案。。。。#include<cstdio>#include<cstring>#include<vector>#define LL long longusing nam

2016-08-30 15:04:43 285

原创 hdu 2204 Eddy's爱好 容斥

根据指数的质数分解进行容斥 比如 k = a^3 且 k = b ^ 5,那么 k = c ^ 15 所以 a 的可选个数 加 b的可选个数减去c的可减个数就是总的个数了因为 a^3和b^5有重复的#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<c

2016-08-29 13:01:00 478

原创 Hdu 4335 What is N? 欧拉函数降幂公式 + 循环节

a^n mod c= a^(n mod phi(c) + phi(c)) mod c (n >= phi(c) ) n! mod phi(c) = 0 n!的因子只需包含 phi(c) 因为 这题phi(mod) 不会太大 然后所有的n! mod phi(c) 都等于0 最后问题转化成有多少个nmod p = b; (a + b)^n = (a mod p + b mod p) ^ n (m

2016-08-28 16:16:52 1083

原创 poj 2480 Longge's problem 关于欧拉函数和积形函数推导

已知欧拉函数是积性函数 当 n = m1 * m2 m和m2互质 已知∑gcd(i, N) 1<=i <=N. 的值等于 ∑phi(n/i) * i 1 <= i <= n && n/i ==0 因为两个数a, b要使他们的公约数为i 那么必须有a%i=0且b%i=0 且a/i和b/i互质 所以求 n/i 的欧拉函数即为剩下的乘数可选个数因为欧拉函数是积性函数, 积性函数的和还是积性函数

2016-08-28 12:17:05 541

原创 hdu 5071 模拟

不跟没说过话的打开窗口说bye wa太多因为搞大新闻哈希,暴力来什么事也没有 大模拟总结 1:写的时候要小心谨慎 2:题目要仔细读不放过任何小点 3:注意long long 数组什么的 4:分析复杂度感觉能过就不用想着优化#include<cstdio>#include<al

2016-08-27 18:51:36 598

原创 hdu 3501 筛素数 + 容斥模板

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#define mod 1000000007ll#define LL long longusing namespace std;// 筛素数bool flag[50000];int cnt = 0,prime[

2016-08-27 18:48:01 444

原创 Codeforces Round #367 (Div. 2) 十字链表

建立一个单向的十字链表 每个元素有两个指针 一个指向右元素一个指向下元素 然后两个矩形互变时 把对应四个边的右指向和下指向互换就实现了两个方块的位置互变了复杂度由o(n^2)优化到O(n) 最后通过指针指向一个个输出各个位置的值By blacktea123, contest: Codeforces Round #367 (Div. 2), problem: (E) Working routine

2016-08-25 22:13:56 363

原创 Codeforces Round #368 (Div. 2) E. Garlands 二维树状数组

枚举每条链 把每条链上的点的价值都加到树状数组去,然后枚举询问把每个包括这条链的一部分的询问的答案添加这部分答案,用树状数组查询。。。。 时间复杂度 q*k*log(n)*log(m) 可怕明显超时啊cf机子跑得太快了居然都过了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<vec

2016-08-25 20:18:13 341

原创 codeforces Educational Codeforces Round 16 D. Two Arithmetic Progressions 扩展欧几里得

先用exgcd等式求k的通解 然后根绝函数的单调性确定可选整数的区间注意点很多有点恶心 然后求个数就行了 坑点是整数运算两个数相除 a/b 的结果为正返回小于等于结果的第一个数,结果为负返回大于等于结果的第一个数 //1 9 3 11 49 109#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>

2016-08-25 15:06:52 406

原创 poj 2887 Big String 块状链表

操作太少 所以分块然后直接线段树寻找块插入后面就行了//块状链表#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define lson i<<1#define rson (i<<1) + 1#define maxn 1055using namespace std;struct BK{

2016-08-23 09:38:55 415

原创 poj 3225 线段树1,0互变 全变0全变1模板

区间更新 当这区间值相同时翻转记录清0因为此时值固定翻转无效了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<queue>#define lson i<<1#define rson (i<<1)+1#define maxn 70000*2us

2016-08-23 09:36:40 484

原创 hdoj 5724 Chess 博弈初学

组合博弈 就是转化成取石子模型,然后把se函数通过mex运算求出来,几个独立的游戏的se[i]值抑或起来是0后手赢,非零前手赢#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;int sg[2200000];int ve[1000],l;void g

2016-08-20 20:32:19 372 1

原创 hdoj 1588 矩阵快速幂 二分等比数列求和模板

等比数列求和可以二分#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define LL long longusing namespace std;LL mod,n,k,b;//快速幂struct ma{ LL m[4][4],row,col; ma() {

2016-08-18 23:04:26 355

原创 poj 1903 Jurassic Remains 中途相遇法

中途相遇法就是 2^n种状态 不全部枚举 先枚举2^*(n/2)个状态 再枚举后 n/2个 2^(n/2)种转态 再与前面 2^(n/2)个相匹配这样复杂度会降很多,二分的思想#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<map>using namespace std;map<

2016-08-18 23:00:09 571

原创 poj 1635 Subway tree systems 判断树的同构 树的最大最小表示法模板

想象成括号匹配,dfs把同优先级的括号由小到大按字典序排个序就是树的最小表示法了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>using namespace std;string a,b;string treeMinPress(

2016-08-18 22:56:29 677

原创 hdoj 5834 Magic boy Bi Luo with his excited tree 树形dp

假设 1 为 根节点 dp[i][0] 代表从自己出发选择到儿子节点最后必须返回自己的最大价值 dp[i][1] 代表从自己出发选择到儿子节点最后可选择不回来的最大价值 并记录最后选择的离开节点 id[i] 树形dp先跑一遍出来再第二遍 dfs 因为每个节点也可以流向父节点所以要合并 玛德太弱了超级复杂啊!!!!!!!!!!!!!! 分两种情况 一种是这个点正好是父节点的id,也就是父

2016-08-17 23:15:23 328

原创 hdoj 5839 Special Tetrahedron 叉积点积判断四点共面模板

枚举对角线求出所有等腰三角形 然后继续枚举 实际可有去除很多情况 然后去重就行了#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define maxn 500#define LL long longusing namespace std;struct point{ LL x,y,z;

2016-08-16 22:26:46 506

原创 Codeforces Round #367 (Div. 2) Vasiliy's Multiset xor trie

又学到了一个处理xor的特殊技巧。。。 发个牢骚每次打codeforces感觉要涨很多分就会挂题干!!!!!!!!!! 没激情了。。。。#include<cstdio>#include<algorithm>#include<iostream>#define maxn 8000000using namespace std;struct node{ int son[2],am[2];

2016-08-12 05:21:40 290

原创 poj 3185 高斯消元 枚举变元

变元不确定要枚举否则不保证解最优#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int a[25][25],va[25],ans[25] = {0},cnt;void dfs(int pre){ if(pre==20) {

2016-08-12 00:17:08 415

原创 hdoj 2285 Switches 高斯消元。。。

#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;int init[205][205],a[205][205];int n,m;char s[200],s1[205];void debug(){ for(int i=0;i<n;i++)

2016-08-12 00:08:42 419

原创 poj 1830 开关问题 1830 高斯消元

第一题。。。用到了线代的知识抑或情况变成上阶梯矩阵然后求解#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>using namespace std;int a[35][35];int s[35];int gaoS(int n){ int i=0,j;

2016-08-10 23:00:56 629

原创 lightOj 1248 Dice (III) 概率公式

详见河北唐山一中 鬲融大神的论文~~~ http://wenku.baidu.com/link?url=fZauRfkVE5NzpJi3a9HAZOe2k3x63U5XIgALMMrwhgRpYLOKuwG_f_BmusI5CGEjFHJXScws1lJupHkcOAFRPlBXQVnCnyEt47RLa8GQY-K#include<cstdio>#include<cstring>#inclu

2016-08-10 22:51:29 833

原创 lightoj 1265 Island of Survival 概率

题目打了个马虎眼仔细分析鹿并无卵用。 实际上是求老虎互相残杀都死最后只剩下人的概率 那有奇数个老虎必然最后剩下一只以上来吃人 偶数个时求最后老虎互相残杀全死的概率 (a+1)a/(a(a-1))#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int n

2016-08-10 22:48:12 267

原创 lightoj 1027 期望公式

假设期望为E 如果走死路门就相当于徒劳走回来又是一个循环 所以E = (a1+a2+a3+….am+mE)/n+(b1+b2+b3+b4)/n (n-m)E = sum(all value); ai为死路门的时间 bj为每个出口出去的时间#include<cstdio>#include<cstring>#include<algorithm>#include<cstring>#inclu

2016-08-09 23:08:18 439

原创 hdoj 5556 Land of Farms 二分图匹配

合肥赛区的第二简单题 枚举原始农场的重建情况将剩下的点进行最大匹配求得独立集 注意不能连原始农场一起进行匹配,因为会形成有环图不是个二分图#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;int flag[105],lin

2016-08-09 22:58:21 323

原创 hdoj 5807 Keep In Touch

树形dp会超时 n^6 抽象出三个人是分步到达一点而不是一起到达 dp[i][j][k][0] 代表这个时间段人分别在i,j,k dp[i][j][k][1] 代表现在这个时间只有k先到达,i,j还在上个时间段的位置 dp[i][j][k][2] 代表现在这个时间只有j,k到达,i还在上一位置 所以就形成了当第一个人到达i,第二个人到达j,第三个人到达k时,是k先到达,j后到达,最后i到达

2016-08-08 23:12:44 296

原创 hdoj 5727 Necklace 二分图 全排列

因为是个串,先全排列n个阴珠子的顺序 (n-1)!种因为编号1可以固定在头部因为是个串 然后每种排列后记录n个阳珠子是否能插进n个间隙的信息 也就是每个珠子是否能和哪个间隙匹配,然后求最大匹配,囧~~~~`#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;in

2016-08-08 23:06:12 262

原创 HDU 3488 KM算法求最优匹配模板

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;//模板copy的一位外校美女学姐的。。love数组代表两个集合互相的权值 N代表点数 下标从0开始%%%%const int MAXN = 305;const int INF = 0x3f3f3f3f;in

2016-08-08 21:00:30 541

原创 hdu 5113 Black And White dfs剪枝

这个。。。减枝方案看了题解才发现是自己思维太僵。。。 如果剩下的某种颜色大于剩下的格子数量的1/2那必有两个格子颜色相同然后return 鸽巢原理#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int am[50],n,m,k,ans[10][10],f

2016-08-07 22:41:14 441 8

原创 hdu 5115

太弱了打了一年这种题还做不出来。。。 dp[i][j] = min(dp[i][j],dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1]) k:i->j; dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1] 的理解是先把k左边的区间消掉再把k右边的点消掉,最后消灭k,当消灭k时因为两边都没了所以受i-1和j+1两个点影响所以加 b[i

2016-08-07 22:37:25 555 5

原创 HDU 5120 Intersection 求两圆相交面积模板

这题容斥原理求覆盖面积就行#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#include<cmath>#define maxn 2200005#define LL long long#define lson i<<1#define rson (i<<1)+

2016-08-07 22:32:14 426 6

原创 Codeforces Round #365 (Div. 2) Mishka and Interesting sum 树状数组

树状数组把区间按右边界排序,然后扫一遍区间处理一下把每个区间的各个出现的值只加一次更新一下树状数组因为要让奇变偶偶变奇#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<string>#include<map>#include<set>#include<queue>#includ

2016-08-06 22:50:42 328

原创 spoj 694 Distinct Substrings 后缀数组

根据height数组的性质,按height数组连续相邻的两个后缀之间是有重叠部分的, 所以扫一遍height数组,总子串的数量把重叠的部分减掉就行#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cstring>#define maxn 1005using namespace s

2016-08-06 22:33:55 332

原创 poj 2289 多匹配问题

就是记录每个被匹配点此时的匹配数量和匹配到的这几个点的信息#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<iostream>#include<vector>#define maxn 1005using namespace std;int n,m,used[maxn],flag[m

2016-08-06 22:25:53 474

原创 HDU 3829 Cat VS Dog

建图过程 1:首先不能按直接的猫和狗建图 因为按题意来说这个既不是单匹配又不是多匹配 2:把喜欢猫不喜欢狗的和喜欢狗的不喜欢猫的分到两个集合,如果两个人其中一人喜欢的恰恰是另一个人不喜欢的,连一条边证明两人的喜好是矛盾的 3:然后就是最大独立集的问题了 套用公式最大独立集的点数 = n-最大匹配数#include<cstdio>#include<cstring>#inc

2016-08-06 22:23:25 344

原创 hdoj 2389 二分图 Hopcroft-Carp 模板

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<queue>#define lson i<<1#define rson (i<<1)+1#define maxn 3005#define maxi 23333

2016-08-05 22:25:34 326

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除