自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JIBANCANYANG

并非所有流浪者都迷失了自我。

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

原创 soj 3139 Sliding Window(单调队列)

@(K ACMer) 题意 维护固定长度子区间的最大最小值. 分析 最经典的单调队列的应用,其实究其根本是用了记忆化和剪枝的思想,使整个效率很高.剪枝的思想,就是对于下标小于当前数,且值大于当前数的数,永远没有用(维护最小值的时候).code#include <iostream>#include <cstdio>#include <cstring>#include <set>#inc

2015-10-29 10:13:48 257

原创 soj 3172 Fisherman (01背包的装满)

题意: 给你n个数,求可以用这些数组合出来的数的种数?(组合方式是加法). 分析: 对于恰好装满的01背包,最后的dp数组中元素只要不为INF,都可以被组合出来.统计不为INF的数的个数就可以了.#include <cstdio>#include <cstring>const int maxn = (1e6 + 9) * 2, INF = 0x3fffffff, mod = 1e6;typ

2015-10-28 17:17:10 390

原创 soj 2930 积木城堡(恰好装满的01背包 + 枚举)

@(K ACMer)题意: 有n个城堡,每个城堡都由一系列长度不同的积木组成,现在你可以从任意城堡中抽去任意数量的积木,让所有城堡高度相同,这个高度的最大值是多少? 分析: 显然这个最大高度,小于等于所有城堡中最矮的城堡的高度minhminh,那我们就来枚举最终城堡的高度h从minhminh到0,然后对每个城堡做容量为h的恰好装满的01背包,如果所有城堡都可以恰好完全装满,那么答案就是h.#i

2015-10-28 17:15:55 382

原创 soj 3360 Buying hay (完全背包)

题意: 有n个物品,每个物品都是无限制多个.具有价值和花费.你需要购买总价值至少为t的物品,而且它们的花费最小. 分析: 裸的恰好装满的完全背包之上多了,必须要大于等于最大容量,只需对转移方程式稍加变形即可.#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace

2015-10-28 17:15:24 399

原创 soj 3300 Stockholm Coins(完全背包的更新次数)

题意: 有n种硬币,给你每种硬币的面额,你需要求出一个最小的x值,使得要得到这个x必须选取n种硬币中的每一种.这显然是一个经典问题 分析: 如果其中出现两个相同的面值的硬币,必然是不能都选的. 这里显然如果这个数,存在,那么一定是所有数的和sumsum,因为你压根没有必要比它大了,要每种都选一个,也不可能比它小. 然后问题就变成了:选择总价值为sum的物品,是不是一定要每一种都选了. 因

2015-10-28 17:14:49 704

原创 soj 3531 Number Pyramids(观察组合数 + 每种物品至少选一个的完全背包)

题意 给你一个类似杨辉三角的堆积法,问在给定顶端的数和,底部长度的情况下,一共有多少种堆积方式? 分析 这个拿到找了半天分解子问题,记忆化搜索都没有办法…最后才发现了最底部的数,会被扩大,然后传递到顶部去,然后观察这个扩大倍数或发现恰恰是组合数! 假设最底部的数是:a[1],a[2],....a[n]a[1], a[2],....a[n]那么最上面的数就是C0n−1a[1]+C1n−1a[2

2015-10-28 17:13:49 451

原创 soj 2749 The Fewest Coins(多重背包 + 完全背包)

题意: 你要买一个价值为t的东西.现在有n种货币,你有每种货币CiC_i张,而商店有每种物品无数张(豪….).,你支付过多的话,商店就会找你钱.问你在整个交易过程中,你能使用的货币数量最少为多少? 分析: 首先,我们需要观察到一个性质:最多只需要支付t+120t+120的钱,也就是最多多支付一张钱.因为如果你再多支付第二张,到时候商店再给你找回来,压根没用. 然而就用多重背包,定义dp[i]

2015-10-28 16:23:31 451

原创 soj 2800 三角形(DP)

题意 给你一个大三角形,黑色的是被减去的,白色的是剩下的,问剩下的白色区域中,最大的倒三角形是?分析: 看到这个题,首先想一下暴力,恩..可以搞,稳定超时. 然后我们需要去找如何DP了么… 那么是不是可以用直观的记忆化搜索呢?….想了一下,好像并不是很直观… 只有强行dp了么,找一找把当前的问题,分解为前面一个阶段的多个状态的子问题决定的. 那么我们定义以点(i,j)(i, j)为顶点的

2015-10-28 16:22:43 428

原创 Codeforces Round #327 (Div. 2)

@(K ACMer)A Wizards DuelB RebrandingD Chip n Dale Rescue Rangers二分 物理E Three StatesA. Wizards’ Duel题意说了一大堆…就是一个简单地运算. B. Rebranding题意 给你一个字符串,然后有m个操作,形如:a  ba\ \ b这样的二元组,就是把字符串中为a的换为b,为b的换为a.

2015-10-28 15:53:27 406

原创 SOJ 2818 QQ音速 (DP)

@(K ACMer)题意: 给你一个数n,求它的二进制表达有多少种? (注意两个二进制表达的元素是相同的,则认为他们是相同的,与顺序无关)我们假设n等于5,来观察一下暴力的解法. 首先5个1肯定是最简单地表达方式:1+1+1+1+11 + 1+1 + 1+ 1它的种数显然为1. 然后最右边的两个1可以合并为2,即:1+1+1+21 + 1 + 1 + 2 然后:1+2+21 + 2 + 2

2015-10-23 07:51:28 644

原创 soj 2785 Binary Partitions (构造类似完全背包)

@(K ACMer)题意: 给你一个数n,求它的二进制表达有多少种? (注意两个二进制表达的元素是相同的,则认为他们是相同的,与顺序无关)我们假设n等于5,来观察一下暴力的解法. 首先5个1肯定是最简单地表达方式:1+1+1+1+11 + 1+1 + 1+ 1它的种数显然为1. 然后最右边的两个1可以合并为2,即:1+1+1+21 + 1 + 1 + 2 然后:1+2+21 + 2 + 2

2015-10-23 07:50:41 455

原创 #BestCoder Round #59 (div.2)

@(K ACMer)A. SDOI此题不说,结构体排序.B. Reorder the Books题意: 给你一排包含1到n的n(n<=19)(n <= 19)个数字,每次只能把序列中的任意一个数字抽出来放到序列的左边,问要把这个序列变换到递增序列需要对最少步数是多少? 分析 - 首先看到n的数据范围竟然才19,想到的就是可能会用到状态压缩DP.然后来观察具有哪些性质: 1.对于每个数做

2015-10-12 22:43:28 492

原创 poj1200 Crazy Search

@(K ACMer)题意:给你一个字符串,其中由nc个不同的字符组成.问你它的长度为n的不同的子序列有多少个?分析:咋一看最直接的想法就是每一个子串都加入set中,然后最后看set中有多少个字符串就可以了.复杂度是O(n∗strlen∗logn)O(n*strlen*log^n)显然超时.那么有什么优化呢?我们可以看出每次往set中添一个字符串,这个字符串会和已经有的字符串比较是否相等,比较的

2015-10-11 17:38:45 475

原创 Codeforces #Round 321 Div2

@(K ACMer) A. Kefa and First Steps题意: 求连续最长非递减子序列的长度. 分析: 从左到右扫描即可.这里差点理解成经典DP题LIS. 这里复习一下LIS: LIS有两种方法,一种是比较直观地O(n2)O(n^2)的方法. 定义:dp[i]为以i结尾的LIS的长度,有状态转移方程: dp[i] = max(dp[j]+1 | a[j]<a[i],j

2015-10-11 00:56:58 395

原创 poj 3468 A Simple Problem with Integers (线段树区间更新 + 树状数组区间更新)

@[K ACMer]题意:支持两个操作: - 求任意任意区间元素的和 - 对任意区间更新元素的值分析:就是对线段树进行区间更新的操作,用一个lazy数组来延迟下推,只有当查到这里的时候才计算.这样让区间更新的复杂度变为了log(n)log(n) 其实只是对区间完全包含的情况就把区间暂存在这里不蔓延到儿子,查寻的时候来查即可. 也可以用经典的树状数组来做: __树状数组除了最显然的是维护区间

2015-10-06 11:25:39 417

空空如也

空空如也

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

TA关注的人

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