自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 383C - Propagating tree 线段树加时间戳

首先每次处理以一个点为根的所有子树点 就要用时间戳加线段树区间更新 因为每次add一个点,那么加减是交替的,所以线段树存储深度为奇数的点的add值 最后查询如果是偶数 ans = -ans;#include<cstdio> #include<algorithm> #include<iostream> #define maxn 200005 #define LL long long #define

2016-09-08 17:33:00 475

原创 codeforces 711E 勒让德定理 逆元

要先化简再取模 公式很好推主要是化简 用到两条性质 1. gcd(2^n - k, 2^n) = gcd(k, 2 ^ n) 因为当k为奇数 2^n - k 为奇数 那等式两边都为1 当k为偶数时 2^n - k 为偶数 k = b * 2^k1 b为奇数 2^n - k = 2^k1*(2^(n-k1)-b) 2^(n-k1)-b 是奇数,所以gcd(2^n - k, 2^n) = gc

2016-09-06 22:37:45 621

原创 codeforces 711D Directed Roads dfs

首先给的每个点只有一个出度既不可能有大于一个出度 每条边可以改变方向 所以每个点最多只能在一个环上,且所有有向环的信息已经给出因为每个点只有一个出度 dfs把每个环都求出来 ans *( 2^n(环的边数) - 2) 最后ans * 2^m(链的边数)#include<cstdio> #include<algorithm> #include<iostream> #include<map> #

2016-09-06 12:46:58 339

原创 codeforces Recover the String

题目很好推 00的个数推0的个数 11的个数推1的个数 如果存在那么就判断四个数的合是否为 C(0和1的总个数,2)如果存在有解贪心一下就行即根据第二个数值和1的位置固定然后叉进0最后使其成立 有个超级坑的就是00或11的个数 是0时那0或1的个数是0 或者是1要特殊判断!!!!#include<cstdio> #include<cstring> #include<algorithm> #incl

2016-09-05 22:41:43 460

原创 湖南省赛 有向无环图 水dp

如果两个点之间有多条边,那就相当于一个点连多个相同的点然后dfs跑一下累加和就行了记得记忆化搜索剪枝#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define mod 1000000007ll #define maxn 100005 #define LL long long using names

2016-09-05 19:33:24 480

原创 hihocoder #1228 : Mission Impossible 6 模拟

总结 :1 .题意理解 2. 插入要从后往前枚举更新, 删除要从前往后枚举更新数据结构没学好。。。。#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define maxn 100005 using namespace std; int flagOve; int po, co

2016-09-05 12:27:07 374

原创 hihocoder Boxes 状压八进制bfs 加预处理

每三位代表第i个格子的目前位置 这三位为0代表没这个数 然后最多7个数 也就是 8^7 约等于 400000 所有从终点到起点反向预处理 学到的技巧 数据量不大要先想到搜索 如果感觉这时搜索会超时可以考虑预处理什么的#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<queue>

2016-09-04 15:45:49 327

原创 poj 3345 Bribing FIPA 树形dp

dp[i][j] 代表第i个点获取j个体积所需最小价值, 每个物品的体积就是它所支配的子节点的数量,价值就是它的点值了#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<map> #include<vector> #define maxn 205 us

2016-09-04 11:06:22 388

原创 poj 2486 树形dp

dp[i][j][0] 代表走到第i个点 还能走j步 最后返回i的最大价值 dp[i][j][1] 代表走到第i个点 还能走j步 最后不返回i的最大价值 一般目标来回往返并每步都有消耗的题都是这种记录往返标识的dp#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define maxn 204 u

2016-09-03 20:52:46 431

原创 poj 1947 Rebuilding Roads 树形dp背包

dp[i][j] 代表以i为根 大小为j需要拆的最小边数 然后dp 注意边界处理对于每个子节点x不连的话dp[i][j] + 1连得话就是 dp[i][j - k] + dp[x][k]; 然后除了根节点最后计算结果都要加1因为还要把跟父节点相关的边拆掉 #include<cstdio> #include<cstring> #include<algorithm> #include<iostrea

2016-09-03 15:14:16 376

原创 poj 1155 TELE 树形背包dp

dp[i][we] 代表节点为i 给k个消费者提供信号的所赚钱术 这时we就是背包容量,每个子节点的每个dp[son][j] 0 <=j<= num[j]; 就是各个物品了#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #define mini -100000000 #define maxn 3005

2016-09-02 21:09:44 474

原创 codeforces 218D Choosing Capital for Treeland 树形DP

给一个有向树每条边可以改变方向求改变的最小边数使其最后连通 先dfs一下求出以1为根的每个点与儿子联通的最小改变数 然后再dfs合并它与父亲的联通信息#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cstdlib> #define maxn 200005 using namesp

2016-09-02 16:53:13 532

原创 hdoj 2196 Computer 树形dp经典题

首先简单的树形dp求祖宗到儿子的最长距离并记录最短距离是哪个儿子 此时对于每个点只维护了儿子到它的最短距离 还要记录祖宗到它的最短距离这时需要再跑一遍dfs把每个点与祖宗相关的到它的最长边搞出来 经典模型必须熟悉啊!!!!!!#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<ve

2016-09-02 13:01:50 398

原创 hdoj 5787 K-wolf Number 数位dp xjb搞水过

二维记录前五个数的转态和先后顺序 数组53MB水过。。。。#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #define LL long long using namespace std; LL dp[18][100001][4]; LL l, x[20]; bool judge(LL n, LL k

2016-09-01 22:55:51 505

原创 hdu 4352 XHXJ's LIS 状压数位dp

求a - b 的按每位值来最长lis长度为k的个数 当求lis时 每加入一个数看此时的lis中有没有数大于等于它且前一个数小于它,有的话将这个位置替换成这个数,没有的话把它填入到末尾 lis+1 所以dp[i][sym][len] 代表 推到第i位,此时组成状态为sym, 最后lis长度为len的方案数 注意处理前导0#include<cstdio> #include<algorithm> #

2016-09-01 20:49:35 346

原创 hdu 4507 吉哥系列故事――恨7不成妻 数位dp

dp[i][mod1][mod2][0] 为 第i位后 数位和%7为mod1 数值%7为mod2 的满足条件的累加值的和 dp[i][mod1][mod2][1] 为 第i位后 数位和%7为mod1 数值%7为mod2 的满足条件的累加平方值的和 dp[i][mod1][mod2][2] 为 第i位后 数位和%7为mod1 数值%7为mod2 的满足条件的数量和 然后累加值 和 数量都是最普通

2016-09-01 15:58:20 342

原创 spoj BLANNUM 数位状压dp

这题刚开始想的关系不对是因为没有考虑这个奇偶是相对于出现的数字来说的 所以dp[1024][1024][21][2] 一维代表出现的数字的状压形记录,二维表示出现数字奇偶的记录,三维代表推到第几位,四维代表是否有前导非零数 然后数位dp就行了#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #inc

2016-09-01 10:50:15 361

空空如也

空空如也

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

TA关注的人

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