自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yuanxinyu402的博客

May we stick together forever.

  • 博客(88)
  • 收藏
  • 关注

原创 BZOJ 1095【ZJOI2007】Hide捉迷藏

题目描述分析:(1).一道动态树分治的裸题。 (2).神奇的线段树搞法Solution:(1).将树型结构转换成欧拉序列,成为线性结构。对于每个点u,拥有in[u]和out[u]的起始和终止位置,若将in[u]看作左括号”(“,out[u]看作右括号”)”,这个线性结构就可以看做一个括号序列,记为S。(2).对于两点(u,v)(假设S中u出现在v前面),他们的距离=S[ in[u] , out[v

2016-07-12 16:55:25 415

原创 CQOI2016 路由表Route - Trie

分析:正解是Trie吧。考完之后想想真的是这样,题目还明确说了不会添加目的地址和掩码长度都一样的项,那么对于每一个01串建立Trie树,在相应掩码结束的位置记录这个串位于添加表中的位置pos。每次询问的时候扫一遍Trie对应询问的串,对每一个扫过的位置上记录的pos排序(最多32个,不会超时)。按照题目的要求模拟一下,算出答案。#include<cstdio>#include<cstring>#

2016-04-11 15:26:15 862

原创 CQOI2016 Number - 数位dp

分析:dp[哪一位][前一个数的倒数第二位][前一个数的倒数最后一位][0/1表示是否满足了至少有三个相邻数字的要求][0/1/2 (0:没有8和4;1:有8;2:有4)][0/1表示最高位到当前位小于或者等于R] 具体转移都在代码里了。#include<cstdio>#include<cstring>#define MAXL 20typedef long long LL;int lmt[M

2016-04-10 19:36:31 400

原创 CQOI2016 总结

2016.4.9 day 1第一题:按照题目描述暴力,N^2枚举点对再跑网络流,最后50.据说正解是分治最小割,还是一道分治最小割的裸题,然而不知道 =_= 心塞第二题:看到题目就被吓到了,最笨的N^2*log(N)的暴力肯定过不了,但是看到k<=100的时候心情又好了,觉得肯定有什么奇特的东西可以乱搞搞。最后还是暴力的,不过优化了一些,得了50分。用双链表维护一个单调不递增的序列,注意还要回

2016-04-10 19:25:16 890 2

原创 UVA 1347 Tour - 简单dp

题目描述分析:从左边走到右边,再从右边走到左边,不重复经过点,求最短路。 <=>从左边有两个人一起向右边走,不重复经过点,求最短路。 dp[x][y] : 第一个人在x,第二个人在y点,[1,max(x,y)]的点一定已经走过的最短路。 由于dp[x][y]=d[y][x],规定x>=y dp[x][y]=min(dp[x][y],dp[x-1][y]+dist[x-1][x]) dp[x

2016-03-26 15:35:56 318

原创 UVA 437 The Tower of Babylon - 简单dp

题目描述](http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19214)分析:因为每种都有无穷多个,所以可以将每个立方体拆成三个正方形,且每种立方体只拆一次。 每个正方形向底面长宽严格小于它的正方形连有向边,有向边的权值为这个正方形属于的立方体除了这个正方形边长的另一边的长,求最长路。#include<cstdio>#inc

2016-03-26 15:23:51 355

原创 UVA 1025 A Spy in the Metro - 简单dp

题目描述分析:关键信息:车站,时刻 dp[j][i] :在j时刻,正处在i车站,需要等待的最短时间。 dp[j][i]=min{ (1). dp[j-1][i]+1 |等待1分钟 , (2). dp[j-cost(i+1,i)][i+1] |在j-cost(i+1,i)有i+1到i的车, (3).

2016-03-26 15:15:30 309

原创 UVA 10817 Headmaster's Headache - 状压dp

题目描述题目大意:某校有m个在职教师和n个求职者,需讲授s个课程 (1<=s<=8,1<=m<=20,1<=n<=100 )。 已知每人的工资c(10000<=c<=50000)和能教的课程集合,要求支付最少的工资使得每门课都至少有两名教师能教。在职教师不能辞退。#include<cstdio>#include<algorithm>#include<cstring>using name

2016-03-20 12:02:30 310

原创 UVA 1099 Sharing Chocolate - 状压dp

题目描述题目大意:给出一块长为x,宽为y的矩形巧克力,每次操作可以沿着一条直线把一块巧克力切割成两块长宽均为整数的巧克力,一次只能切一块巧克力。 问:是否可以经过若干次操作得到n块面积分别为a1, a2, …, an的巧克力。分析:容易想到dp[s][x][y]的转移,但是时间空间的hold不住。 用sum[s]表示状态s中面积和,一定有:x*y=sum[s], 优化状态表示:dp[s][r]

2016-03-20 11:54:03 361

原创 UVA 11825 Hackers' Crackdown - 状压dp

题目描述题目大意:N台计算机连成网络,每台计算机上都同时运行着N种服务。对于每台计算机,可以选择仅一项服务,终止这台计算机和所有与它相邻计算机的该项服务。 求:最多可以让多少种服务完全终止运行。分析:每台电脑能影响的范围都是一定的,跟它是什么服务没关系。 原问题<=> 将N台电脑分为一些组,满足每个组的电脑能影响的并集等于全集。求最大的组数。 dp[S]=max{dp[S],dp[s^s0]+

2016-03-20 11:44:32 281

原创 HDU 3681 Prison Break - 状压dp【TSP】

题目描述题目大意:一个机器人想越狱,监狱是一个N*M的网格。每走一格,耗费1个单位的电量。他只能带一定电量的电池, ‘F’表示起点, ‘S’表示道路可行, ‘D’表示不能经过的地点。 ‘G’表示充电器,只可充电一次,但是可以经过很多次。‘Y’表示要破坏的机关,也是只能破坏一次,但是可以经过无数次。 求机器人破坏掉所有机关,需要带的最小初始电量。 分析:破坏所有的机关Y,且G,Y,F的总和不超过15

2016-03-20 11:34:37 325

原创 HYSBZ 1151 动物园zoo - 状压dp

题目描述题目大意:N个动物围成一个环,有K个小朋友,每个小朋友可以看到五个连续的动物,每个小朋友都有自己喜欢或讨厌的动物,当有一个自己讨厌的动物被移走或能看到一个自己喜欢的动物时,这个小朋友就会高兴。求最优的移走动物的方案,使得最多的小朋友高兴。 分析:dp[i][S]:处理到第i个动物,i~i-3的动物移动与否的状态为S。 dp[i+1][S]=max{dp[i+1][newS],dp[i][S

2016-03-20 11:22:48 460

原创 ZOJ 1346 Comparing Your Heroes - 状压dp

题目描述题目大意:某人要对拳皇的人物做一个排序。输入一个N,接下来N行每行两个字符串A B,表示A比B厉害。要求一共有多少种不同的拓扑排序方法。若不能完成排序输出0。分析:dp[S] (S表示点是否被取出的状态):得到S状态的方案数 dp[S|(1<< k)]+=dp[S] => 在S状态下,入度为0的点记为k 初始状态:dp[0]=1 目标状态:dp[(1<< n)-1]#includ

2016-03-20 11:13:03 505

原创 POJ 2288 Islands and Bridges - 状压dp【TSP】

题目描述题目大意:给出一个带点权的无向图,在图上找哈密顿路,使其价值最大,并统计价值最大的哈密顿路的条数.同一条路正走和反走看作同一种方案.路径的价值分为三部分: (1).路径上所有点的点权和. (2).路径上所有边的价值和.对于路径C上相邻的两点Ci和Ci+1,它们之间的路径价值为v[Ci]*v[Ci+1]. (3)对于路径上的连续三点Ci-1,Ci,Ci+1,如果Ci-1与Ci+

2016-03-20 11:03:42 321

原创 POJ 3311 Hie with the Pie - 状压dp【TSP】

题目描述题目大意:一个人从固定出发点0,到一些城市(1~n)送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短。 注意:每一个城市可重复访问多次。两个城市间的直接可达路径不一定是最短路径。 求最短路径。分析:因为要遍历每个城市,再加上数据规模小,自然想到TSP经典状压dp问题。 但由于此题中每个城市可以访问多次,先Floyd预处理出每两个点之间的最短距离,就可以用TSP的

2016-03-20 10:49:44 287

原创 BZOJ(本校) 3046 简单数学问题 - 线段树

时限:1s 内存:64MB 题目描述 首先给你一个包含个整数的数列,你需要处理以下两种操作: 1.对区间内的每个数,乘上或者除以一个整数 2.输出区间内每个数的乘积对某个特定模数取模的值输入格式 输入文件的第一行有两个整数和 第二行包含个整数,表示起始的的值 第三行包含一个整数,表示操作的次数。接下来的行,每行表示一次操作。 对于操作”M L R x”,表示对于区间内的每个数,将它的

2016-03-07 22:12:30 470

原创 BZOJ(本校) 3044 旅行 - 树形dp&基环树

时限:1s 内存:64MB 题目描述 Bob发现字节大地上有个城市形成了一个树形结构。作为一个旅游爱好者,Bob想要在个城市之间穿梭。经过调查,Bob知道了每条路的花费。由于时间对他来说很宝贵,他希望字节大地的国王能够修建一条新路来节省时间。现在Bob有个旅行计划,每个旅行计划的起点和终点也都知道,Bob希望你能帮助他计算,通过新建一条道路,他能节省多少时间。Bob总是会选择最短路线进行旅行。如

2016-03-07 17:56:53 443

原创 BZOJ(本校) 3048 染色 - dp&递推找规律

【问题描述】 最近大大很happy,她制作了一些小旗,小旗都排成一列。现在她有四种颜色,分别为R,B,W,Y。突发奇想的大大决定出个问题考考你。她想知道,n面小旗染色有多少种不同的方案数。这样太简单了,答案不就是4^n么。于是她加了点限制,有5个限制条件,分别要求 1、相邻两面旗染色不相同 2、R,B两种颜色不能相邻 3、Y,W两种颜色不能相邻 4、

2016-03-07 17:43:40 527

原创 BZOJ(本校) 3049 第K大 - 二分&树形dp

【问题描述】 给出一棵N个节点的树,每个节点上有一个正整数权值。给定K。 每条路径都有某个确定的第K大的节点权值,如果路径上点数比K小则规定第K大权值为0。现在有一个问题是,在这棵树里总共O(N^2)条路径,他们所有的第K大节点权值中,最大的那个是多少? 然后还有一个问题。这个问题总共有Q个询问,每次询问格式如下:“假如我把原树中编号为pi的节点权值增加vi,那么最初那个问题的答案会是多少?”

2016-03-07 17:27:42 352

原创 BZOJ(本校) 2666 中继系统 - 思维&最小生成树

Time Limit: 2s Memory Limit: 256MB 【题目描述】 这是2112年,人类已经征服了太阳系。太空游侠队已经在任何大块岩石上建立了基地(即使不适宜居住)。你作为小行星通讯部门的一员,工作是确保所有太空游侠小行星基地都能尽可能廉价地与其他小行星基地交流。你可以建立从每个基地到另外所有基地的直接交流连接,但那可能过分昂贵。相反,你想要建立最少数量的连接从而每个人都可以发

2016-03-07 17:10:59 420

原创 BZOJ(本校) 2665 密码锁 - 思维&dp

Time Limit: 1s Memory Limit: 512MB 【题目描述】 从前有一把密码锁,由N个开关组成。一开始的时候,所有开关都是关上的。当且仅当开关x1,x2,x3,…xk为开,其他开关为关时,密码锁才会打开。 你可以进行M种的操作,每种操作有一个size[i],表示,假如你选择了第i种的操作的话,你可以任意选择连续的size[i]个格子,把它们全部取反。 你的任务很简单,

2016-03-07 16:53:01 1521

转载 专题——基础递推

汉诺塔问题Hanoi塔由n个大小不同的圆盘和三根木柱a,b,c组成。开始时,这n个圆盘由大到小依次套在a柱上,如图所示。 要求把a柱上n个圆盘按下述规则移到c柱上: (1)一次只能移一个圆盘; (2)圆盘只能在三个柱上存放; (3)在移动过程中,不允许大盘压小盘。 问将这n个盘子从a柱移动到c柱上,总计需要移动多少次盘子?直接想不好想。先假设移动直径为1~n-1的原盘到C,再移动直径为

2016-02-28 11:35:43 385

原创 Usaco 生气的奶牛 - (dp&滑窗)|(二分&贪心check)

生气的奶牛 题目描述 在数轴x上摆放有n(2<=n<=50000)捆干草堆,没有任何两堆在同样的位置,所有的位置均为整数。你可以用弹弓射击射击数轴上的任意地点。如果你用弹弓以R的力度射击x处,那么该处会发生爆炸,爆炸的范围是以R为半径的圆形区域,所以它会使得[x-R,x+R]的所有干草堆同时发生爆炸。这些干草堆的爆炸半径是R-1。它们又会触发连锁反应,第三轮的爆炸的半径为R-2,依次递减。请选择

2016-02-27 16:38:28 380

转载 BZOJ 3679 数字之积 - 数位dp

题目描述分析(From Claris):考虑计算[1;R)内满足条件的数的个数。 数字之积非常大,但是这些数字的质因子只可能是2、3、5、7。 所以设f(i;cnt2;cnt3;cnt5;cnt7;j)为从高到低填了前i 位,2、3、5、7的个数分别为cnt2、cnt3、cnt5、cnt7,是否小于R的状态为j 的数字个数,然后DP即可。#include<cstdio>#include<cst

2016-02-23 20:23:44 727

原创 BZOJ 4292 [PA2015] Równanie - 数位&思维

题目大意:对于一个正整数 n,定义 f(n) 为它十进制下每一位数字的平方的和。 现在给定三个正整数 k,a,b,请求出满足 a≤n≤b 且 k×f(n) = n 的 n 的个数。 1 ≤k,a,b≤ 101810^{18},a≤b。分析:这道题的数据规模看上去很吓人,注意到最多有18位数,且每一位上的数字最大是9,所以f(x)maxf(x)_{max}=18 * 9 *9=1458,所以直接枚

2016-02-20 09:11:07 362

转载 HDU 5372 Segment Game - 离散化&树状数组

题目描述表示看错题目的一小部分,wa了两个小时!!!题目大意:有 n 个操作,每次要么插入一条线段,要么删除一条已存在的线段,其中第 i 次插入的线段的长度为 i。 对于每次插入,输出当前插入的线段能完整覆盖多少条线 段。 1 ≤n≤ 700000。 Source:2015 Multi-University Training Contest 7分析(From Claris):其实就是询

2016-02-19 21:08:01 361

原创 HDU 5293 Tree chain problem - 树形dp&树状数组优化

题目描述题目大意:给定一棵有 n 个点的树,以及 m 条树链,其中第 i 条树链 的价值为 wi,请选择一些没有公共点的树链,使得价值和最大。 1 ≤n,m≤ 100000。 Source:2015 Multi-University Training Contest 1分析:设f[u]为u为根的子树上选择没有公共点的树链所得的最大价值和。 转移方程: 枚举链的两端点的lca为u的链,记w为

2016-02-18 21:24:02 569

原创 SPOJ 10606 Balanced Numbers - 数位dp

题目大意:一个数被称为是平衡的数当且仅当对于所有出现过的数位, 偶数出现奇数次,奇数出现偶数次。 给定 A,B,请统计出 [A,B] 内所有平衡的数的个数。 1 ≤A≤B≤ 101810^{18}。分析:是个数位dp。 1. 设p(n)为[1,n]中所有平衡的数的个数,则原问题<=>求p(B)-p(A-1)。 2. 注意到要填的数字只有0~9(注意不能有前导0,程序中要特判), 用0表示这

2016-02-17 22:52:09 321

原创 UESTC 1186 Gray code - 简单数位dp

题目描述题目大意:给定一个长度为 n 的仅包含’0’、’1’、’?’ 的字符串,你需要给所有的问号决定填 0 还是 1。 填完之后,将这个串看成二进制数,转化成格雷码。 如果格雷码中第 i 个字符是 1,那么你将获得 ai 点分数。求可以得到的 分数的最大值。 1 ≤n≤ 200000,1 ≤ai ≤ 1000。Source:2015 Multi-University Training C

2016-02-17 22:36:05 281

原创 BZOJ(本校) 3027 快速傅里叶变换 - 概率与期望&dp

题目描述 有n 颗珠子,珠子的编号依次为1 到n。第i 颗珠子的美 丽值为vi,这是一个在1 到m 之间的正整数。 查尔明将会从中等概率随机抽取1 到n 颗珠子,那么此时 他的高兴度为所有抽到的珠子的美丽值的最大公约数。查尔明想 知道,他的期望高兴度是多少,你能帮帮他吗?因为查尔明不喜 欢实数和大数,所以你只需要输出结果×(2^n − 1) 的值对 998244353 取模的结果即可。

2016-02-16 23:11:52 568

原创 HYSBZ/BZOJ 1013 [JSOI2008] 球形空间产生器sphere - 高斯约当消元

题目描述分析:根据题目给出的dist的定义,并设球心的坐标为(x1,x2,...xnx_1,x_2,...x_n),列出n+1个方程。 step 1. n+1个方程的两边同时平方。 step 2. n+1个方程拆括号,化简。 step 3. 前n个方程-第n+1个方程,得到新的n个方程(dist2也被减没了dist^2也被减没了) step 4. n个关于n个未知数的方程,解吧。#inclu

2016-02-06 17:28:57 344

原创 HYSBZ/BZOJ 1040 [ZJOI2008] 骑士 - 基环树&树形dp

题目描述分析:题目中的边是无向边,因为两个人在一起总有一个会不开心。因为关系不确定,所以这是个森林。因为边数=点数,所以每个连通块可能是树,也可能是只有一个环的基环树(基环树就是一棵树但又有且只有一个环),所以考虑找到环上的亮点,断开这条边,分别限制两个点不能取,以点为根做树形dp,ans加上这样搞出来的最大值(因为两个点不能同时取)。树形dp:dp[u][0/1] (0:不取u;1:要取u

2016-02-05 21:54:03 937

原创 HYSBZ/BZOJ 1038 [ZJOI2008] 瞭望塔 - 计算几何

题目描述分析:题目中说的“可以看见”means 在折线所在直线朝INF的方向的左边一片区域(想一想,是不是这样?) 所以我们要求的就是此题折线所在直线相交构成的一个底朝下的凸壳(类似二次函数a>0的样子),网上都说这个是求半平面交,这里就不那么高大上了,直接求吧。Solution :先对Lines按照斜率大小排序,用一个栈来维护形成凸壳的直线。 如果当前直线与stack [top-2] (栈

2016-02-05 18:20:38 503

原创 HYSBZ/BZOJ 1037 [ZJOI2008] 生日聚会Party - dp

题目描述分析:dp[i][j][p][q]表示前i个boy,j个girl,男孩数量-女孩数量的最大值为p,女孩数量-男孩数量的最大值为q。因为可能没有女孩或者男孩,p,q可能为负数,就用0表示(p,q是最大值,p,q为负的情况只有没有女孩或者没有男孩这种情况)dp[i][j][p][q]=dp[i-1][j][p-1][q+1] + dp[i][j-1][p+1][q-1] 没办法填表,用刷表法:

2016-02-05 14:53:41 247

原创 HDU 3415 Max Sum of Max-K-sub-sequence - dp&单调队列优化

题目描述分析:环形要double转换为链状,再跑dp 记dp[i]表示以 i 为结尾的长度不超过k的最大连续子段和 dp[i]=max{sum[i]−sum[j]},i−k<=j<i dp[i] = max \{ { sum[i] - sum[j] \}} , i-k<=j<i 即: dp[i]=sum[i]−min{sum[j]},i−k<=j<i dp[i] = sum[i] - mi

2016-02-04 19:17:31 290

原创 HYSBZ/BZOJ 1034 [ZJOI2008] 泡泡堂BNB - 贪心

题目描述分析:经典贪心题,跟田忌赛马没什么区别。 1. 以最小的代价尽量多的赢 2. 尽量多的平局 3. 剩下的注定要输了。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define MAXN 100000int n,a[MAXN+10],b[MAXN+10],c[MAXN+10],

2016-02-04 17:07:22 327

原创 HYSBZ/BZOJ 1036 [ZJOI2008] 树的统计Count - 动态树LCT

题目描述看着就是个LCT的模板题,可惜忘记在change的时候Update了,最终爆零!悲惨经历,教训啊。题目有坑: 1. 有负数,要么最开始全部赋值为-INF,否则要判断儿子是否为0 2. Link之后要Update,Change之后要Update,Rotate之后要Update,Splay之后要Update,Access要Update. 3. Access之后不要忘了Splay(u),

2016-02-04 15:03:07 384

原创 FZU 1894 志愿者选拔 - 单调队列

题目描述分析:暴力肯定过不了。维护一个从大到小的单调队列。 想清楚这些事: 1. 如果前面有人的val比当前加入队伍的人的val小,那么前面那个人的val永远对答案没有贡献,可以删去。 2. 再有就是要删除出队的人,但由于是按照先入队先出队的顺序来删,可以先把这些人的val保留在单调队列里面,下一次找最大RP_val的时候把这些不合法的删掉即可。 注意:当当前实际队伍里面没有人的时候输出

2016-02-04 14:09:53 270

原创 POJ 3250 Bad Hair Day - 单调队列

题目描述分析:题目大意是求出每只cow能看到的cow的总数的和 转换为: 每只cow能被看到的次数总和 这样就可以用单调队列求解了。 对于每只cow,删掉队列中height小于它的值,ans加上此时队列的长度(就是这只cow会被看到的次数)。再插入这只cow的height。如此求解。 注意:ans要用long long (毕竟80000*80000 > INT_MAX)#include<c

2016-02-04 13:42:11 232

原创 POJ 2823 Sliding Window - dp&单调队列优化

题目描述想清楚两件事: 1.当前区间前面的元素没用 2.当前区间有了较小的元素,则以前较大的元素没用,因为当前用不到,以后更用不到。#include<cstdio>#define MAXN 1000000struct node{ int val,pos;}que[MAXN+10];int n,k,a[MAXN+10],mn[MAXN+10],mx[MAXN+10];void read

2016-02-03 22:02:36 292

空空如也

空空如也

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

TA关注的人

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