自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MisDeer's blog

您们怎么都这么强啊……

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

原创 [HDU 3861] The King's Problem (最小路径覆盖)

HDU - 3861 将图分成若干块,满足 1. 相互联通的两个点必须在同一块 2. 同一块中的任意两点,必须能单向可达首先先用Tarjan缩点, 然后同一块的实际上必须在一条单向的路径上 然后问题就转化为了dag上不相交的最小路径覆盖这个问题可以转化为二分图匹配解决 建立一个二分图,原图中任意一个点 u 在二分图中都拆成两个点,X部的u点和 Y部的 u’点 原图中的任意

2016-05-31 19:34:38 242

原创 [PKU 2229] Sumsets (计数DP+构造)

PKU - 2229 将一个数分为若干个 2的次幂之和,问有几种方案dp[i][0]dp[i][0] 表示组成 i的没有 1的方案数 dp[i][1]dp[i][1] 表示组成 i的有一个 1的方案数 dp[i][2]dp[i][2] 表示组成 i的有 1的方案数当 i为奇数时: dp[i][0]=0dp[i][0]=0,因为至少需要 1个 1才能组成奇数 dp[i][1]=dp[i−

2016-05-31 17:19:36 236

原创 [HDU 4336] Card Collector (期望DP)

HDU - 4336 有 N张卡片,有 pip_i的概率抽到第 i张 求集齐所有卡片的期望步数注意 Σpi≠1\Sigma{p_i} \neq 1 所以有可能一次什么也抽不到,设 m′m'是 mm的子集,列出公式 expt[m]=(1−Σpi)expt[m]+Σpiexpt[m′]+1expt[m] = (1- \Sigma{p_i})expt[m] + \Sigma{ p_i ex

2016-05-27 13:08:43 231

原创 [POJ 1862] Stripies (贪心)

POJ - 1862 有若干个生物,有自己的质量,两个生物碰撞后, 生成一个新的生物质量为 2*sqrt(m_1*m_2)贪心策略是尽可能地让大的生物先碰撞 这样较大的数可以被多次开方 由于 N比较小,生成的新生物冒泡排序一下就好了#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#incl

2016-05-26 19:09:09 411

原创 [POJ 3040] Allowance (贪心)

POJ - 3040 FJ手中有若干面值的货币,小面值的货币能被大面值的整除 每周他要给奶牛发不少于 C的工资,问最多能发几周首先大于 C的面值都先发掉 然后优先发剩下的大面额的货币,当超过时 将最后一个大面额的用尽可能小的货币代替#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#incl

2016-05-26 19:05:35 287

原创 [CQU 21466] zzblack与斐波那契数列 (矩阵快速幂)

CQU - 21466 求 f(⌈(5√+12)2m⌉)f( \lceil {(\frac {\sqrt{5}+1} {2})}^{2m} \rceil )%2238065148 其中 f(n)f(n)是 FibonacciFibonacci数列的第 n项首先要求项数,一看 m很大,肯定是快速幂但是底数是个浮点数,肯定不能直接快速幂 所以要给底数加一个 (5√−12)2m{(\frac

2016-05-26 19:01:20 302

原创 [POJ 3190] Stall Reservations (区间贪心)

POJ - 3190 给定若干个区间,问至少要分成几组 使得同组的区间互不重叠典型的区间贪心问题 贪心的策略就是对左端点排序,然后依次选择安排 记录一下每个隔间最右端点的位置,然后用最小堆维护一下 当前区间尽可能地放到最右点最小的组里 如果这组依旧放不进去,就没有隔间能放得进去了 所以就要为其申请一个新的隔间 否则就把它安排到这个隔间里,并且更新此隔间最右端点#pragma

2016-05-26 18:37:37 253

原创 [POJ 1328] Radar Installation (区间贪心)

POJ - 1328 给定若干个 x轴上方的点,要求最少的圆,使得每个点都被圆覆盖 其中圆心在 x轴上,半径为 D有一个很直接的贪心思路,就是先考虑最左边未覆盖的点 在覆盖它的情况下,尽量把圆向左移。 这个做法是错误的,因为圆并不是矩形,例如以下数据 Input: 2 3 0 0 1 3 Output: 1正确的做法是预处理出覆盖每个点的圆心的范围

2016-05-26 18:28:53 218

原创 [POJ 2376] Cleaning Shifts (区间贪心)

POJ - 2376 给定一个区间,要求用最少的区间将其覆盖典型的区间贪心问题 首先将区间按左端点排序,然后考虑覆盖区间最左未覆盖位置 选择能覆盖此点,且右端点最靠右的区间覆盖它 要注意特判是否有合法解,如果途中无法覆盖某点, 或者所有区间都用完了也不能覆盖完即无解#pragma comment(linker, "/STACK:102400000,102400000")#includ

2016-05-26 18:26:29 220

原创 [Uva 11990] "Dynamic" Inversion (CDQ分治入门)

Uva - 11990 动态逆序对,求删除一个点之前序列中逆序对的个数首先倒过来看这个问题,把点先全部删掉 然后从最后一个点开始倒着往数列中加点 求加完这个点逆序对的变化CDQ分治做法把删除时间看作 t,下标看作 x,值看作 y 然后对 x排序,对 t偏序,用树状数组维护 y 具体来说就是对于每个点 (t0,x0,y0)(t_0, x_0, y_0) 先统计 t<t0,x<x0,y>

2016-05-24 17:44:06 664

原创 [Uva 11990] "Dynamic" Inversion (二维分块)

Uva - 11990 动态逆序对,求删除一个点之前序列中逆序对的个数首先倒过来看这个问题,把点先全部删掉 然后从最后一个点开始倒着往数列中加点 求加完这个点逆序对的变化分块做法,把下标看成 x,值看成 y 这样就变成了平面上的点, 将平面分成 bsiz∗bsizbsiz*bsiz,bsiz=N‾‾√bsiz=\sqrt{N} 加入一个点的时候,在它左上方区域的和右下方区域中的点的数

2016-05-24 16:02:43 830 1

原创 [SCU 4519] 来签个到吧 (GCD + 期望)

SCU - 4519 盒子里有若干个球,每个球上面都有一个数字,数字各不相同 每次从中选两个数字 x,y,设 z=|x−y|| x - y | 若 z不在盒子中,则加入这个数 反复执行操作,直到无法再向盒子里加数 随机从盒子中摸出一个球,反复执行这个操作直到所有球都被摸出来过 问最后的期望步数第一部分的构造: 设所有数的最大公因数是D 则所有数可以表示为 x=

2016-05-23 13:46:43 313

原创 [SCU 4516] Mingo's Game (斜率DP)

SCU - 4516 有 N个关卡,可以分为 K块,每个关卡都有个权值 tit_i 每次选择最早没有通关的关卡块,设这个关卡包含了[i,j][i,j]的游戏 选到最早没有通关的关卡是k, 选到 k的概率是 P=tk∑jx=ixP =\frac {t_k} {\sum_{x=i}^j x} 选到一个关卡一定能通关,花费一小时 求合理分块的情况下,通关所有关卡块的期望时间最

2016-05-23 13:41:35 255

原创 [SCU 4515] 又见背包 (可行性背包DP)

SCU - 4515 有 N个大小不同的数字,第 i种数字为 a_i,每种有 m_i个 求问能否从中选出若干个数字,使他们的和为 K背包九讲 2.0的例题,用多重背包的二进制能过 根据 lyb dalao所述 因为 K<1e5K<1e5,所以其实最后用到的物品数量不会超过 1e5 所以 mi=min(mi,K/ai)m_i = min(m_i, K/a_i),所以用二进制优化能过背

2016-05-23 13:33:47 386

原创 [SCU 4514] Simple dp (XJBLG法)

SCU - 4514 给定 N个点,每个点的权值表示以此点为根的子树中节点的个数 每个非叶子节点至少有两个儿子,问给定的 N个点能否组成满足条件的树这题我是贪心构造,虽然正确性无法保证 但由于N比较小,最多24,所以难以构造数据把我卡掉直观感觉权值大的点在树上的位置尽量靠上 先将点从小到大排序,然后从大到小选择根 然后在小于它的为标记的点中选择它的儿子, 保证儿子的权值尽可能大,

2016-05-23 13:29:21 555

原创 [SCU 4513] 先锋看烟花 (数据结构优化DP)

SCU - 4513 一条路上有 N个房子,一共有 M个烟花 在 tit_i时刻,第 aia_i个房子会放一个价值为 bib_i的烟花 对在 cur位置的先锋会产生 bi−abs(ai−cur)b_i-abs(a_i-cur)的幸福度 其中幸福度可以为负数 先锋每个单位时间最多可以移动 D的距离 问所有烟花放完之后,先锋的幸福度最大为多少首先朴素的想法是暴力模拟这

2016-05-23 13:25:17 748

原创 [SCU 4512] Goozy的积木 (状态优化DP)

SCU - 4512 有若干个积木,你可以选择将他放在 A塔,放在 B塔,或者不放 求在两塔高度相等的情况下,所能达到的最大高度朴素的想法是 dp[i][H1][H2]表示使用前 i个积木 A塔高度为 H1,B塔高度为 H2,dp存的是能否到达这个状态的一个 bool值 首先这样状态爆炸,所以依旧要合理调整状态位置 我们可以把最高塔的高度移到 dp存的最优值里, 然后状态里表示一

2016-05-23 13:20:26 513

原创 [SCU 4511] 任务 (状态优化DP)

SCU - 4511 给两个机器安排 N个任务,要求满足 1. 任务必须全部被安排到任一机器上 2. 同一时间一台机器只能运行一个任务 3. 任务 j(j<i)j (j < i) 必须在任务 i之前被安排 4. 在一台机器上运行的任务不能被打断 第 i个任务在两台机器上的用时分别为 ai,bia_i,b_i 要求所有任务的总用时最小这题我想了三天三夜,还是没

2016-05-23 13:18:29 389

原创 [SCU 4510] TaoSama与煎饼 (序列DP+状态优化)

SCU - 4510 一条长度为 N的道路,其中每个点有个权值 有 M个道具,能使煎饼向前跳跃1、2、3或4步 保证所有道具使用完时,煎饼落在 N位置 求到 N位置的一条路径,使得煎饼沿路获得的权值和最大首先朴素的想法是用 dp[i][m1][m2][m3][m4] 表示煎饼在 i位置,使用 +1、+2、+3、+4的道具数目 分别为 m1、m2、m3、m4所获得的最大权值

2016-05-23 13:06:53 300

原创 [SCU 4509] Snowdrop修长廊 (斜率DP)

SCU - 4509 使用若干条线段,覆盖坐标轴上的 N个点 覆盖 [i,j][i, j]的代价为cost(i,j)=W+(xi−xj)2cost(i,j) = W + (x_i-x_j)^2 求覆盖所有点的最小代价斜率优化入门题,与 HDU - Print Article一致 对坐标排序后,设dp[i]表示已经覆盖前 i个点的最小代价 容易得出DP方程为 dp[i]=min

2016-05-23 13:03:06 364

原创 [SCU 4508] 雷神之路 (多矩阵快速幂)

SCU - 4508 一条长度 N(N<1e18)的路,一次可以向前走一步、两步或者三步。 有些地方有地雷不能走,问走到终点的方案数是多少。这题 N高达 1e18,反而直接提示了做法。这题非矩阵快速幂不可。 构造两个矩阵,norm表示下一格没有雷,向前递推一步 而 zero表示下一格有雷,向前递推一步 然后对地雷的位置排序,第 i个地雷据上一个地雷的距离为 s 则对答案向量左乘

2016-05-23 12:41:08 346

原创 [POJ 1201] Intervals (区间贪心选点)

POJ - 1201 有数轴上的若干个区间,要求从数轴上选最少的点, 使得第 i个区间内至少有 c_i个点对区间右端点排序,可以发现尽量选右边的点比较优 然后用树状数组维护一下区间内点的数量, 如果未达到要求,则从右端点开始向左选择未选择的数 由于选的数必然是连续的,所以可以记录一下某个选区的左端点位置 当碰到上一个选区的右端点时,直接跳过时间复杂度 O(N*log(N))#pr

2016-05-21 21:37:03 422

原创 [SCU 4504] 奶牛合影 (最小表示法)

SCU - 4504 给定一个循环串,问从哪个位置剖分能使得字典序最小最小表示法裸题,后缀数组裸题 然而后缀数组我还不太会构造 所以转而学习了一下最小表示法朴素算法: 将原数组复制一遍 枚举两个串的开头p1p_1, p2p_2,依次比较两个串的每一位 每当 S[p1+k]≠S[p2+k]S[p_1+k] \ne S[p_2+k] 时,字典序较大的头指针向后移一位 时间复杂度 O(N

2016-05-11 12:54:33 405

原创 [SCU 4497] GooZy的游戏时间 (基于搜索时间的剪枝)

SCU - 4497 给定一个 N*N的拼图,要求重新排列 使得一个方块上下左右相邻的方块连接处数字相等这题写起来比较恶心 我刚开始通过把每一行可行状态存下来,丢到 set里转移,结果MLE了后来换了种想法,蛇形地去找可连接的方块 然后尝试了若干剪枝,效果都不理想自己生成了几组随机数据 发现当数字均为 0~3,比较集中时,跑得巨慢 本来 0~3这种可重复的概率比较大 相应地能搜

2016-05-10 23:43:50 1030

原创 [SCU 4507] 奶牛情书 (AC自动机)

SCU - 4507求给定长度的文本串,使得每个模式串至少出现过一次 求这样的模式串的个数AC自动机禁止模式串的裸题 这题求的是一个串至少出现过一次 只要求一次都没出现过的方案总数 再拿所有方案总数相减即可得到答案然后就拿所有模式串构造 Trie树,然后在上面跑 AC自动机 跑到单词结尾的时候不转移,这样就能求出答案#pragma comment(linker, "/STACK:10240

2016-05-10 23:30:36 607

原创 [SCU 4503] TooEasy Or TooDifficult (Manacher+xor-Trie)

SCU - 4503板子题,依题意描述分为三个步骤 1. 求每个位置为中心的回文串,以及最大回文串 2. 求每个回文串的长度的异或前缀和 3. 求两个异或前缀和异或的最大值 (xor-Trie) 然后用快速幂算出 JD,再和 FJD比大小即可注意一下 Trie上要先插入一个 0#pragma comment(linker, "/STACK:102400000,102400000")#i

2016-05-10 23:16:49 872

原创 [SCU 4501] DNA序列 (状压DP)

SCU - 4501 给定若干个DNA序列,求最短包含所有序列的长度 包含不一定是连续包含,可以不是子串状压DP 依次构造每一位 把每个字符串走到的位置标记一下,压成6进制数 然后每个状态拓展一个字符串 然后同时拓展其他所有下一位与其相同的串 然后把状态丢到队列里转移,当每个串都走到结尾时输出答案 可以保证答案最多不超过40 时间复杂度 O(ans∗lenN)O(ans*l

2016-05-10 22:55:09 772

原创 [SCU 4500] 神舟的宝藏 (数位DP)

SCU - 4500 求一个最小的 C进制数,使得他满足 由给定的 M的数组成,最大长度不超过500,并且能被 N整除依旧是数位DP裸题 从高到低,从小到大枚举每一位 枚举到底的时候判断余数是否为 0比较麻烦的是判断前导 0: 由于前导 0不算在给定的数字内 所以先单独计算一次此位为前导 0的,然后再进行枚举 最后要记忆化一下,如果当前 i位,余数为 rem搜不到解 就标记一

2016-05-10 22:31:43 961

原创 [SCU 4498] RunningPhoton's Nightmare (BFS预处理+SPFA)

SCU - 4498 给定一张网格图,其中有一些不可到达点和一些时间重置装置 RunningPhoton从起点出发,身上有一个定时炸弹,当时间置0时他就会死 但是在置0前碰到时间重置装置又能重置时间 问 RunningPhoton是否能到达终点 若能,则输出最短时间,若不能,则输出 “Poor RunningPhoton”这题虽然地图是有 600*600,但是有不超过

2016-05-10 22:18:41 842

原创 [SCU 4496] 01的时间 (数位DP)

SCU - 4496 给定一个数,求最小的仅由0和1构成的能被给定数整除的数暴力 dfs,从高到低,从小到大枚举当前位,然后一直搜到底 最后判断一下余数是否等于 0,如果为 0,则返回 要注意前导 0的情况,即排除全为 0的解#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <i

2016-05-10 21:56:35 413

原创 [SCU 4495] 单词替换 (KMP)

SCU - 4495 给定一个字符串,把其中出现的 A串替换为 B串KMP入门题,对原串匹配A串,跑一遍KMP 然后匹配到终点的时候替换就好了 最后再输出替换的结果 时间复杂度 O(N)#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <iostream>#include <

2016-05-10 21:33:45 747

原创 [SCU 4499] 表达式 (IDA*)

SCU - 4499 已有 x,求利用除法和乘法算出 x^n的最小步数IDA* 迭代加深地去搜 如果能在step步得出解,那么大于这个步数的也一定有解 所以从小到大枚举步数,然后暴力去搜 由于限定步数,就可以加一个 A*的估价剪枝 当前最值反复平方也不能在限定步数得出解的时候,则不往下搜 由于N只有1000,而 2^10 > 1000,所以最终步数其实不会很大#pragma comm

2016-05-10 21:26:47 720

原创 [SCU 4494] 双剑合并 (xor字典树)

SCU - 4494 给定两个序列,问从两个序列中各取一个值的异或和最大为多少把 A序列中的数字看成一个二进制的 01串,然后存到 Trie树里 然后将 B序列的数字同样看成一个 01串,然后在 Trie树上从高位到低位贪心地查找 如果B序列中查找的 01串当前位为 0,则找 Trie树上为 1的子儿子 否则就只能走为 0的右儿子,反之亦然,然后往下走 时间复杂度 O(N)#inclu

2016-05-10 21:21:16 761

原创 Ubuntu常用命令

Ubuntu常用命令#进入目录cd#删除文件rm#循环删除文件(用于删除非空目录)rm -r#拷贝和移动文件cpmv#输出文件到屏幕cat#比较文件不同diff#指定安装路径./configure --prefix=#编译文件make#安装文件make install#apt-getapt-get updateapt-get install#查看网络信息ifconfi

2016-05-09 22:06:11 310

原创 Gedit相关配置

Gedit配置首先可以使用Gedit官方插件sudo apt-get updatesudo apt-get install gedit-plugins其次可以自己加入外部插件,但首先要使用官方的 External Tools插件编译C++#!/bin/shfilename=$GEDIT_CURRENT_DOCUMENT_NAMEname=`echo $filename | cut -d.

2016-05-09 20:03:35 458

原创 [HDU 1914] The Stable Marriage Problem (稳定婚姻问题)

HDU - 1914 稳定婚姻问题 每个男士对所有女士有个喜欢程度,每个女士对所有男士也有个喜欢程度 使男女两两配对,使得找不到一对男女,满足 他们不相匹配,且他们喜欢对方都超过喜欢自己现有的另一半稳定婚姻问题的求解思路,分三个步骤 每个尚未配对的男士寻找当前他最喜欢的女士 1. 若当前女士未配对,则配对 2. 若当前女士已配对,且她更喜欢后来的男士,则她抛弃未婚夫

2016-05-05 15:33:11 390

原创 [HDU 5017] Ellipsoid (模拟退火)

HDU - 5017 给定一个椭圆面方程,求面上距离原点最近的距离这份代码是模拟退火的做法 模拟退火总的来说就是一个限定时间的暴力搜索 但是随着时间的增加,其向前的步伐会越来越小 设定一个温度 temp以及一个衰减速率 rate来模拟以这题为例,假设 (0,0,f(0,0))(0,0,f(0,0))处的解最优 首先原点一定是在椭圆面内部的,将原点代入方程即可得到 向八个方

2016-05-01 18:04:13 295

空空如也

空空如也

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

TA关注的人

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