07 2016 档案

摘要:题目大概说有两家通讯公司,它们分别有几个投标,投标各有价值且各个投标都包含几个频道,相同公司的各个投标包含频道都是互不相同的,而频道不能被同时选用。问怎么选择采取哪家公司哪些投标使得价值最大。 如此建立容量网络: 把投标看成点,新建源点和汇点。 源点向A公司各个投标连容量为该投标价值的边。 B公司各 阅读全文
posted @ 2016-07-30 22:37 WABoss 阅读(219) 评论(0) 推荐(0) 编辑
摘要:题目。。说了很多东西 官方题解是这么说的: 首先将点分为3类 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分) 第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费) 第三类:对于10种字符拆出10个点, 阅读全文
posted @ 2016-07-29 23:25 WABoss 阅读(196) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个字符串问有几个不同且包含给定某个字符子串。 如果不考虑子串一定要包含给定的字符,那样容易想到用后缀数组解决(好像写过这种题。。)。。因为每个子串都是某个后缀的前缀。 求出的后缀有序排列后,考虑各个后缀能贡献几个前缀,这个就是各个后缀有几个前缀满足不和前面统计过的后缀的前缀相同,其实这 阅读全文
posted @ 2016-07-29 20:08 WABoss 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题目大概说一个n个点m条带权有向边的图,要给边染色,染色的边形成若干个回路且每个点都恰好属于其中k个回路。问最少要染多少边权和的路。 一个回路里面各个点的入度=出度=1,那么可以猜想知道各个点如果都恰好属于k个回路那么各个点的入度=出度=k。 这样就考虑用最小费用最大流了: 所有点u拆成两点u和u' 阅读全文
posted @ 2016-07-27 15:44 WABoss 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个n*m的棋盘,棋子一开始在(1,1),两人交替移动棋子,移动的时候只能向右下方向走,走到(n,m)者赢,如果不能移动那就平局。问当棋子是king、rook、knight和queen时先手是必胜还是败,或者平局。 阅读全文
posted @ 2016-07-26 22:23 WABoss 阅读(312) 评论(0) 推荐(0) 编辑
摘要:转载请注明出处:http://www.cnblogs.com/WABoss/p/DP.html 动态规划(Dynamic Programming, DP)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法…… (先忘了这个吧)允许我从另一个角度去理解并解释动态规划 阅读全文
posted @ 2016-07-26 20:20 WABoss 阅读(4900) 评论(12) 推荐(10) 编辑
摘要:题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统。和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米。但其真正高科技之处在于,它能够回答形如“给定区域内有多少名用户?”的问题。 在定位系统中,世界被认为是一个W×W的正方形区域, 阅读全文
posted @ 2016-07-25 21:55 WABoss 阅读(617) 评论(0) 推荐(0) 编辑
摘要:题目这么说的: 进行如下3种类型操作:1)D L R(1 <= L <= R <= 1000000000) 增加一条线段[L,R]2)C i (1-base) 删除第i条增加的线段,保证每条插入线段最多插入一次,且这次删除操作一定合法3) Q L R(1 <= L <= R <= 100000000 阅读全文
posted @ 2016-07-24 22:39 WABoss 阅读(237) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个n*m个格子,格子'.'表示可以放东西,多次询问矩形区域(x1,y1)-(x2,y2)有几种放一张1*2的骨牌的方案数。 分别考虑横着竖着放,预处理出二维的前缀和,即sum[x][y]表示(1,1)-(x,y)的横着或者竖着放的方案数,然后对于每一个询问就拆成几个前缀和容斥一下。。 阅读全文
posted @ 2016-07-24 10:00 WABoss 阅读(576) 评论(0) 推荐(0) 编辑
摘要:题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5739 Description Professor Zhang has an undirected graph G with n vertices and m edges. Each verte 阅读全文
posted @ 2016-07-22 19:58 WABoss 阅读(1534) 评论(4) 推荐(1) 编辑
摘要:题目大概说要让n个骑士坐成一圈,这一圈的人数要是奇数且大于2,此外有些骑士之间有仇恨不能坐在一起,问有多少个骑士不能入座。 双连通图上任意两点间都有两条不重复点的路径,即一个环。那么,把骑士看做点,相互不仇恨的骑士间连边,能坐在一圈骑士的肯定在同一个点双连通分量上。 不过还有个条件是人数要大于2: 阅读全文
posted @ 2016-07-22 10:59 WABoss 阅读(173) 评论(0) 推荐(0) 编辑
摘要:题目大概说有n个yang珠子n个yin珠子,要交替串成一个环形项链,有些yang珠子和某个yin珠子相邻这个yang珠子会不高兴,问最少有几个yang珠子不高兴。 自然会想到直接用状压DP去解,转移很烦,也没写出来。标程是搜索不明觉厉。。听闻了可以枚举一边的顺序,8!,然后用最大匹配解决。 然后想到 阅读全文
posted @ 2016-07-20 17:11 WABoss 阅读(343) 评论(2) 推荐(0) 编辑
摘要:题目大概说有一棵树要给结点染色0或1,要求所有度为1的结点一半是0一半是1,然后问怎么染色,使两端点颜色不一样的边最少。 dp[0/1][u][x]表示以u结点为根的子树中u结点是0/1色 且其子树有x个结点染成1色 的最少边数 转移就是树上背包了。有点就是各个子树必须选,这种形式的树上背包之前做过 阅读全文
posted @ 2016-07-20 11:07 WABoss 阅读(240) 评论(0) 推荐(0) 编辑
摘要:题目大概说有n行,每行20格子,都有一些棋子,两个人轮流进行这个操作:选择某一行一个棋子移动到该行右边第一个空的格子。不能进行的人输。问先手是否能赢。 阅读全文
posted @ 2016-07-20 09:25 WABoss 阅读(1108) 评论(0) 推荐(1) 编辑
摘要:题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5726 Description Give you a sequence of N(N≤100,000) integers : a1,...,an(0<ai≤1000,000,000). Ther 阅读全文
posted @ 2016-07-20 08:52 WABoss 阅读(2104) 评论(0) 推荐(4) 编辑
摘要:题目大概说给一个长m的括号序列s,要在其前面和后面添加括号使其变为合法的长度n的括号序列,p+s+q,问有几种方式。(合法的括号序列当且仅当左括号总数等于右括号总数且任何一个前缀左括号数大于等于右括号数) 我这么想的:n-m<=2000,因而可以dp计算p和q的方案数,同时在各个地方加入s进行转移。 阅读全文
posted @ 2016-07-18 17:37 WABoss 阅读(262) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一棵树,进行以下3个操作:把某结点为根的子树中各个结点值设为1、把某结点以及其各个祖先值设为0、询问某结点的值。 对于第一个操作就是经典的DFS序+线段树了。而对于第二个操作,考虑再维护一个域表示各个结点为根的子树是否有进行第二个操作,如果有那么该结点应该就要是0;而在进行第一个操作前, 阅读全文
posted @ 2016-07-18 15:13 WABoss 阅读(260) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个序列,多次询问区间异或和为k的连续子序列有多少个。 莫队算法,利用异或的性质,通过前缀和求区间和,先处理出序列各个前缀和,然后每次区间转移时维护i以及i-1前缀和为某数的个数并增加或减少对答案的贡献。 阅读全文
posted @ 2016-07-17 16:04 WABoss 阅读(254) 评论(0) 推荐(0) 编辑
摘要:题目大概说给两个串,问最少要用多少个第一个串的子串(可以翻转)拼成第二个串。 UVa1401,一个道理。。dp[i]表示前缀i拼接成功所需最少的子串,利用第一个串所有子串建立的Trie树往前枚举转移。 阅读全文
posted @ 2016-07-17 09:24 WABoss 阅读(347) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个数字组成的字符串问有几个子串其代表的数字(可以有前导0)能被4整除。 dp[i][m]表示字符串0...i中mod 4为m的后缀的个数 通过在i-1添加str[i]字符转移,或者以str[i]为新后缀的开头转移 阅读全文
posted @ 2016-07-16 21:36 WABoss 阅读(260) 评论(0) 推荐(0) 编辑
摘要:题目大概说,有n个颜色的宝石,可以消除是回文串的连续颜色序列,问最少要几下才能全部消除。 自然想到dp[i][j]表示序列i...j全部消除的最少操作数 有几种消除的方式都能通过枚举k(i<=k<j)从min(dp[i][k],dp[k+1][j])转移 还有一种先消除中间的,剩余两部分组成回文串再 阅读全文
posted @ 2016-07-16 19:25 WABoss 阅读(235) 评论(0) 推荐(1) 编辑
摘要:题目大概说给一个整数序列,问里面有几个包含三个数字的子序列ai,aj,ak,满足ai*k*k=aj*k=ak。 感觉很多种做法的样子,我想到这么一种: 枚举中间的aj,看它左边有多少个aj/k右边有多少个aj*k,两边个数的乘积就是答案的一部分贡献。 而左边各个数字的个数和右边各个数字可以用两个ma 阅读全文
posted @ 2016-07-16 09:26 WABoss 阅读(382) 评论(0) 推荐(1) 编辑
摘要:题目大概说手机有n张照片。通过左滑或者右滑循环切换照片,滑动需要花费a时间;看一张照片要1时间,而看过的可以马上跳过不用花时间,没看过的不能跳过;有些照片要横着看,要花b时间旋转方向。那么问T时间下最多可以看多少张相片。 先确定左滑最多能看到哪张,然后用另一个指针从第一张照片往右移动,这代表先右滑然 阅读全文
posted @ 2016-07-16 08:40 WABoss 阅读(326) 评论(0) 推荐(0) 编辑
摘要:题目大概说有101个质量w0、w1、w2、...、w100的砝码,和一个质量m的物品,问能否在天平两边放物品和砝码使其平衡。 哎,怎么没想到。。注意到w0、w1、w2、...、w100—— 把m转化成w进制数,枚举每一位: 如果第i位是0那OK; 如果是1那就要把砝码wi放在天平另一边抵消; 如果是 阅读全文
posted @ 2016-07-15 21:46 WABoss 阅读(373) 评论(0) 推荐(0) 编辑
摘要:题目大概说两个正整数a、b,已知s=a+b以及x=a xor b的值,问有几种a、b这样的数对。 我知道异或相当于无进位的加法,s-x就是其各个位置的进位,比如s-x=1010,那就表示a和b的第1位和第3位发生的进位。 这样,对于某些位其值就能确定,对于有些位其值不能确定(该位xor和为1且没有发 阅读全文
posted @ 2016-07-15 19:47 WABoss 阅读(520) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个加密的字符串,加密规则是把原文转化成小写字母,然后各个单词反转,最后去掉空格。现在给几个已知的单词,还原加密的字符串。 和UVa1401一个道理。。 用dp[i]表示加密字符前i个字符都被解密时,最后所用单词编号,为0表示不能被解密 然后转移一个样,从i出发往前在Trie树上跑,看看 阅读全文
posted @ 2016-07-15 16:38 WABoss 阅读(298) 评论(0) 推荐(0) 编辑
摘要:题目大概说有n(<=10W)个车站,每个车站i卖到车站i+1...a[i]的票,p[i][j]表示从车站i到车站j所需买的最少车票数,求所有的p[i][j](i<j)的和。 好难,不会写。。 dp[i]表示Σp[i][j](j>i) 转移是dp[i]=dp[k]+(n-i)-(a[i]-k),其中k 阅读全文
posted @ 2016-07-15 10:10 WABoss 阅读(201) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个森林求其最小点覆盖数,同时在最小点覆盖条件下输出最多有多少条边被覆盖两次。 dp[0/1][u]表示以u为根的子树内的边都被覆盖且u不属于/属于覆盖集所需的最少点数 另外,用cnt[0/1][u]表示满足dp[0/1][u]状态下子树内被覆盖两次最多的边数 对于dp[0][u]只能从 阅读全文
posted @ 2016-07-14 20:17 WABoss 阅读(158) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一张地图,地图每个格子都有0到9中的某一个数字。现在要在一个格子放炸弹,炸弹爆炸后水柱有两种扩展方式,一种是上、下、左、右,另一种是左上、右下、右上、左下,且四个方向的长度都一样。问放哪个格子怎么爆炸使得水柱覆盖的格子上的数字乘积最大,结果模1e9+7。 这题不会做。。 首先,各个格子的 阅读全文
posted @ 2016-07-14 10:34 WABoss 阅读(260) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个由01组成的序列,要求最多把k个0改成1使得连续的1的个数最多,输出一种方案。 和CF 676C相似。 阅读全文
posted @ 2016-07-13 22:35 WABoss 阅读(326) 评论(0) 推荐(0) 编辑
摘要:题目大概说一张无向图,各个结点初始有ai人,现在每个人可以选择停留在原地或者移动到相邻的结点,问能否使各个结点的人数变为bi人。 如此建容量网络: 图上各个结点拆成两点i、i' 源点向i点连容量ai的边 i'向汇点连容量bi的边 i向i'连容量INF的边 对于相邻的两点(u,v),u向v'连容量IN 阅读全文
posted @ 2016-07-13 21:58 WABoss 阅读(409) 评论(0) 推荐(0) 编辑
摘要:题目大概说要吃掉n个食物里m个,吃掉各个食物都会得到一定的满意度,有些食物如果在某些食物之后吃还会增加满意度,问怎么吃满意度最高。 dp[S][i]表示已经吃掉的食物集合是S且刚吃的是第i个食物的最大满意度 。。没什么好说的 阅读全文
posted @ 2016-07-13 20:30 WABoss 阅读(277) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一个由a和b组成的字符串,最多能改变其中的k个字符,问通过改变能得到的最长连续且相同的字符串是多长。 用尺取法,改变成a和改变成b分别做一次:双指针i和j,j不停++,然后如果遇到需要改变且改变次数用完就让i++更正改变次数,最后更新答案。时间复杂度O(n)。 另外,注意到k=0的情况。 阅读全文
posted @ 2016-07-13 15:05 WABoss 阅读(341) 评论(0) 推荐(0) 编辑
摘要:题目大概说给一棵树,树上结点都有颜色(1到60),进行下面两个操作:把某结点为根的子树染成某一颜色、询问某结点为根的子树有多少种颜色。 子树,显然DFS序,把子树结点映射到连续的区间。而注意到颜色60种,这样就可以用一个64位整型去表示颜色的集合,然后就是在这个连续区间中用线段树成段更新颜色集合和区 阅读全文
posted @ 2016-07-13 08:56 WABoss 阅读(522) 评论(0) 推荐(1) 编辑
摘要:题目大概说给一棵点有权、边也有权的树。一个结点v不高兴当且仅当存在一个其子树上的结点u,使得v到u路径上的边权和大于u的权值。现在要不断地删除叶子结点使得所有结点都高兴,问最少删几个叶子结点。 一开始题目看错了,以为说的是v到u路径上的边权和小于v的权值,然后想出了个解法:从根开始DFS,找高兴的结 阅读全文
posted @ 2016-07-12 11:17 WABoss 阅读(454) 评论(0) 推荐(0) 编辑
摘要:题目大概说给两个字符串s和t,然后要求一个包含k个字符串的序列,而这个序列是两个字符串的公共子序列,问这个序列包含的字符串的总长最多是多少。 如果用DP解,考虑到问题的规模,自然这么表示状态: dp[i][j][k]表示s[0...i]与t[0...j]包含k个字符串的公共子序列的最大总长 想怎么转 阅读全文
posted @ 2016-07-12 09:16 WABoss 阅读(178) 评论(0) 推荐(0) 编辑
摘要:题目大概说有一张n个点m条边的简单有向图,每条边只能允许一定总量的货物通过。要让x只熊从1点到n点运送货物,每只熊都要运送且运送的货物重量都一样,求该重量的最大值。 二分重量判断是否成立。 如果已知重量,那么每条边能通过多少只熊就知道了,就是边的容量除以重量。而判断x只熊能否走到1到n就是用最大流判 阅读全文
posted @ 2016-07-11 16:06 WABoss 阅读(238) 评论(0) 推荐(0) 编辑
摘要:题目大概说有一个n*m的格子地图,每个格子有铀或者镭矿。地图最北面的镭矿加工厂,最西面有铀矿加工厂,而要通过在格子里铺设由南向北(镭)或由东向西(铀)的轨道来送矿物到加工厂。一个格子只能铺设一种轨道,即要嘛运送铀要嘛运送镭,不同轨道也不能相交。现在知道地图上各个格子铀和镭的数量,问怎么铺设轨道使送到 阅读全文
posted @ 2016-07-11 10:08 WABoss 阅读(218) 评论(0) 推荐(0) 编辑
摘要:题目大概说一个平面有n个灰尘,可以用一把刷子直直刷过去清理直线上的所有灰尘,问最少要刷几下才能清理完所有灰尘。 首先怎么刷其实是可以确定的,或者说直线有哪些是可以确定的,而最多就有C(n,2)条不一样的直线,即16*15/2=120; 然后容易想到用状压DP求解,d[S]表示已经清理的灰尘的状态是S 阅读全文
posted @ 2016-07-10 15:23 WABoss 阅读(252) 评论(0) 推荐(0) 编辑
摘要:题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的硬币能组合出来的面值有哪些。 有点绕。。 dp[i][j][k]表示前i个硬币中 能否 组合成面值j且选出的硬币能组合成面值k 转移要考虑全面。。三个方向转移,第i个不选、第i个选但不参与选出硬币去组合成 阅读全文
posted @ 2016-07-10 10:17 WABoss 阅读(257) 评论(0) 推荐(0) 编辑
摘要:题目大概就是说给一张二分图以及它的一个完备匹配,现在问X部的各个点可以与Y部那些些点匹配,使得X部其余点都能找到完备匹配。 枚举然后匹配,当然不行,会超时。 这题的解法是,在二分图基础上建一个有向图:原二分图中边(x,y)连<x,y>的弧,对于那个已知的匹配中的所有边(x,y)连<y,x>的弧,然后 阅读全文
posted @ 2016-07-09 21:53 WABoss 阅读(381) 评论(0) 推荐(0) 编辑
摘要:题目大概说一个平面上分布n个灰尘,现在要用一个宽w的刷子清理灰尘:选择一个起点,往水平线上扫过去这个水平线上的灰尘就消失了。问最多进行k次这样的操作能清理最多多少灰尘。 没什么的DP。 先按垂直坐标给灰尘们排个序, 然后d[i][k]表示前i个灰尘中,进行到第k次清理操作时刷子底部在第i个灰尘的竖坐 阅读全文
posted @ 2016-07-09 16:35 WABoss 阅读(171) 评论(0) 推荐(0) 编辑