自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ramay7

https://ramay7.github.io/

  • 博客(73)
  • 资源 (2)
  • 收藏
  • 关注

原创 SPOJ PT07X Vertex Cover(树形dp)

题目链接: SPOJ PT07X Vertex Cover 题意: 一个无向无环图,给nn个节点和n−1n-1条边,求选择最小的顶点数量使得每条边至少有一个顶点被选中,输出顶点数量。 数据范围:n≤105n\leq 10^{5} 分析: 对于节点ii,定义dp[i][0]dp[i][0]为ii没被选中时将ii子树的所有边都覆盖时的最少点数,定义dp[i][1]dp[i][1]为ii被选中

2016-07-30 18:32:25 637

原创 POJ 2342 Anniversary party(树形dp)

题目链接: POJ 2342 Anniversary party 题意: 有nn个人要去参加聚会,每个人都不想和他的直接上属出现,给出每个人的从属关系,每个人会有convivialityconviviality,求聚会的人的convivialityconviviality和最大是多大? 数据范围:n≤6000n\leq 6000 分析: 其实每个人就两种状态dp[i][0]dp[i][

2016-07-30 17:45:42 475

原创 POJ 1985 Cow Marathon & HDU 2196 Computer(树的直径)

题目链接; POJ 1985 Cow Marathon HDU 2196 Computer 题意: 两道题其实都是求树的直径。 分析: 树的直径:树中所有最短路径的最大值。 定理:在一个连通的无项无环图中,以任意结点出发所能到达的最远结点,一定是该图直径的端点之一。证明:假设直径是δ(s,e)\delta (s,e),任意结点为xx,其最远能到达的结点为yy。分两种情况: ①如果

2016-07-30 17:35:38 769

原创 HDU 3530 Subsequence(区间最值差>=m且<=k的最大长度、双单调队列)

题目链接: HDU 3530 Subsequence 题意: 给一个长度为nn的数组,求最大的区间长度,并且这个区间满足最大值与最小值之差diff∈[m,k]diff\in[m,k],即大于等于mm,小于等于kk. 数据范围:n≤105,m,k∈[0,106]n\leq 10^5,m,k\in [0,10^6] 分析: 因为是在做单调队列的题,所以往单调队列上想可能容易点。 首先我们考

2016-07-29 18:49:40 828

原创 FZU 2163 多米诺骨牌(线段树)

题目链接: FZU 2163 多米诺骨牌 题意: 一条水平线上竖直放置nn个多米诺骨牌,给出每个骨牌的坐标x[i]x[i]和高度y[i]y[i]。每个骨牌向右倒会砸到某些多米诺骨牌,如果多米诺骨牌(初始坐标x[i]x[i]和高度y[i]y[i])倒下,会导致所有在[x[i]+1,x[i]+y[i]−1][ x[i] + 1,x[i] + y[i] - 1]范围内的多米诺骨牌倒下。求每个骨牌最

2016-07-29 12:55:35 1497

原创 POJ 2796 Feel Good(单调栈)

题目链接: POJ 2796 Feel Good 题意: 一个区间的权值是区间元素之和乘以区间最小的元素值。给一个长度为nn的数组,求最大子区间权值。 数据范围:n≤106,data[i]∈[0,106]n\leq 10^6,data[i]\in [0,10^6] 分析: 考虑到每个数非负,只需要利用单调栈处理出每个数向左向右是最小值的最大区间就好了。#include <stdio.h>

2016-07-29 12:20:42 408

原创 HDU 4193 Non-negative Partial Sums(前缀和非负点个数,单调队列)

题目链接: HDU 4193 Non-negative Partial Sums 题意: 给一个nn个数的数环,求任意前缀和非负的点个数? 数据范围:n≤106n\leq 10^6 分析: 其实这道题和UVALive 6087 Fuel Stops是一样的。之前的做法也能做。 如果用单调队列做的话,需要转化成前缀和问题。对于位置ii的数,如果以它为结尾最长长度为nn的前缀和均非负,其实

2016-07-28 00:44:04 738

原创 HDU 3415 Max Sum of Max-K-sub-sequence(长度不超过k的最大连续子序列和,单调队列)

题目链接: HDU 3415 Max Sum of Max-K-sub-sequence 题意: 给nn个数,首尾相连,求长度不超过kk的最大连续子序列和。 数据范围:1≤n≤100000,1≤k≤n1\leq n\leq100000 , 1\leq k\leq n 分析: 因为考虑首尾相连,所以我们把nn个数看成2∗n2*n个数,其中data[n+]=data[i]data[n+]=

2016-07-28 00:33:06 2357

原创 POJ 2823 Sliding Windows(单调队列)

题目链接: [POJ 2823 Sliding Windows](http://poj.org/problem?id=2823 题意: 有nn个数,可以用一个长度为kk的矩形框住连续的kk个数,要求依次输出矩形在这n−k+1n-k+1个位置的每个区间的最大值和最小值。 数据范围:n≤106n\leq 10^6 单调队列: 单调栈主要用于解决元素对所影响的区间长度,而单调队列主要用于解决给

2016-07-28 00:23:00 417

原创 Codeforces 149 D Coloring Brackets(区间dp,标记状态,dfs)

题目链接: Codeforces 149 D Coloring Brackets 题意: 给一个正确匹配的圆括号字符串,比如:(),(()),(()())(), (()),(()()),要对括号进行染色:对每个括号可以选择不染色,染红色,或者染蓝色每对匹配的括号必须有且仅有一个染色相邻染色的括号的颜色不能一样求最终的所有染色方案数?结果对1e9+71e9+7取模。 数据范围:字符串长

2016-07-27 00:09:54 464

原创 HDU 5749 Colmerauer(单调栈、思维、组合)

题目链接: HDU 5749 Colmerauer 题意: 给一个n∗mn*m的矩阵,定义长为aa宽为bb的矩阵的函数S(a,b)S(a,b)是矩阵中所有鞍点的权值和。一个矩阵的鞍点是所有满足在同一行中唯一最小,同一列中唯一最大的点。求: ∑i=1i=n∑j=1j=mi∗j∗S(i,j)(mod 232)\sum_{i=1}^{i=n}\sum_{j=1}^{j=m}i*j*S(i,j)\q

2016-07-26 21:17:46 544

原创 POJ 3494 Largest Submatrix of All 1's(最大全1子矩阵面积、单调栈)

题目链接: POJ 3494 Largest Submatrix of All 1’s 题意: 给出一个n∗mn*m的01矩阵,求出最大全1子矩阵面积。 数据范围:n,m≤2000n,m\leq 2000 分析: 我们把每一行单独处理,把从这行向上连续延伸全为1的最大长度看成是矩形的高,那么每行其实就是求个最大矩形面积。 height[i][j]:第i行第j列元素往上最长的连续1长度h

2016-07-25 23:53:31 1694 4

原创 POJ 2082 Terrible Sets(单调栈)

题目链接: POJ 2082 Terrible Sets 题意: 【题目描述成这样也是醉了。。。】 实际上就是给出nn个并排矩形的底和高,求能划分的最大矩形面积。 数据范围:n≤5∗104n\leq 5*10^4 分析; 和前面那道题其实一样的,只要用一个sum[]sum[]数组记录下底的和就好了。#include <stdio.h>#include <string.h>#incl

2016-07-25 23:46:20 375

原创 HDU 1506 Largest Rectangle in a Histogram(最大矩形面积、单调栈)

题目链接: HDU 1506 Largest Rectangle in a Histogram 题意: 给出一排紧密并列的矩形的高,宽均为1,求从中可以划分出的最大的矩形面积? 数据范围:n≤105,hi≤109n\leq 10^5,h_i\leq 10^{9} 分析: 单调栈求出每个矩形可以向左向右延伸的最大长度。 单调栈、单调队列学习博客 时间复杂度:O(n)O(n)#inclu

2016-07-25 23:41:44 1331

原创 Codeforces 629 D Finals in arithmetic(最大上升子序列和,O(nlogn)、线段树/树状数组)

题目链接: Codeforces 629 D Finals in arithmetic 题意: 已知nn块圆柱形蛋糕的底面圆半径和高,需要利用这些蛋糕尽可能堆成一个体积最大的蛋糕,但是需要满足:编号大的蛋糕只能放在编号比它小的蛋糕上面或者桌子上上面蛋糕的体积必须严格大于下面蛋糕的体积求最终堆成的蛋糕的最大体积? 数据范围:1 ≤ n ≤ 100 000,ri≤104,hi≤1041 \

2016-07-25 10:52:21 620

原创 Codeforces 629 C Famil Door and Brackets(dp)

题目链接; Codeforces 629 C Famil Door and Brackets 题意: 给一个长度为mm的且只含"(",")""(",")"的字符串,可以在这个字符串左右添加长度分别为p,qp,q的只含"(",")""(",")"的字符串使得总长度为nn,但是要满足:在这任意nn个位置中都要满足前缀串的左括号数量大于等于右括号数量所有的左括号数量应和右括号数量相等求总的构造

2016-07-25 10:30:43 661

原创 HDU 4283 You Are the One(区间dp、状态转移)

题目链接; HDU 4283 You Are the One 题意: 【非诚勿扰?】 有nn个人需要上台,每个人的初始diaosi值(题目就这么说的)是data[i]data[i],如果ii是第kk个上场的话就会产生(k−1)∗data[i](k-1)*data[i]的愤怒值,但是允许先将某些人带进小黑屋中,后进后出原则,求所有人都上场的最小愤怒值之和? 数据范围:n≤100,data[i

2016-07-24 23:30:59 529

原创 POJ 1651 Multiplication Puzzle(区间dp)

题目链接: POJ 1651 Multiplication Puzzle 题意: 给出nn个数,每次可以选择从中取走一个数,取走的代价是它左右以及自身三个数的乘积,不允许取走首末两个数字,求将中间n−2n-2个数字都取走的最小代价和? 数据范围:n≤100,每个数字∈[1,100]n\leq 100,每个数字\in [1,100] 分析; 比较简单的区间dp. 用dp[i][j]dp[

2016-07-24 23:12:02 341

原创 POJ 1142 Brackets Sequence(区间dp,记录路径,还原括号匹配)

题目链接; POJ 1142 Brackets Sequence 题意: 给一个只含"(",")","[","]""(",")","[","]"四种括号的字符串,这个串可能不是恰好匹配的,输出最短的完美匹配串,多解输出任意解。 数据范围:长度≤100长度\leq 100 例如:对于([(]([(]应输出()[()]()[()] 分析: 坑爹啊,输入会有空行,然后需要输出空行,所以不能

2016-07-24 23:03:33 510

原创 LightOJ 1422 Halloween Costumes(区间dp)

题目链接: LightOJ 1422 Halloween Costumes 题意: 需要去参加nn个聚会,每个聚会可能需要穿不同的衣服,用数字编号表示(1−1001-100)。如果连续的聚会需要穿的衣服一样,那就不用换衣服,也可以选择在身上的衣服外面再套上新的衣服,但是脱下的衣服不能在用于剩下的聚会的了,问最少需要准备多少件衣服? 数据范围:n≤100n\leq 100 分析: 先解释下

2016-07-24 11:32:41 397

原创 POJ 2955 Brackets(区间dp)

题目链接: POJ 2955 Brackets 题意: 给出一个长度不超过100的只含"(",")","[","]""(",")","[","]"的字符串,求字符串中最大的匹配括号数。 (),[],(()),()[],()[()](), [], (()), ()[], ()[()]都可以认为是匹配的。 样例: ((())) ()()() ([]]) )[)( ([][][)6

2016-07-24 08:34:27 411

原创 POJ 1080 Human Gene Functions(字符串匹配得分,dp)

题目链接; POJ 1080 Human Gene Functions 题意: 给出两个长度不超过100100,且只含字母A,G,C,TA,G,C,T的字符串,需要将两个字符串匹配得分,每个字母可以和空格对应,得分规则如下: 求最大得分。 分析: 这道题和之前做过的UVAL ive 6697 Homework Evaluation很类(yi)似(yang)。 dp[i][j][0

2016-07-23 16:42:15 495

原创 UVA 111 History Grading(题意杀,最长公共子序列)

题目链接: UVA 111 History Grading 题意: 【题意杀!】 先给出nn个事件的正确发生时间顺序,在给出一些学生排出来的时间发生时间顺序,有两种得分方式; 在相应的时间点发生事件相同则得1分 可以得到的分数等于发生事件的相对时间顺序正确的最长长度求按照第二种方式可以获得的得分? nn范围:2≤n≤202\leq n \leq 20denotes the rank

2016-07-23 15:59:02 529

原创 HDU 1503 Advanced Fruits(还原最长公共子序列、记录路径)

题目链接: HDU 1503 Advanced Fruits 题意: 给出两个水果的名称字符串,字符个数不超过100100,要求输出一个合并的名称,两个水果的名字都是合并的名称的子序列,输出合并后的名称,多解时输出任意解。 分析: 主要是找出最长公共子序列所选的字母在第一个串中或第二个串中的位置。而且这些字母都是相同的,根据dp[]dp[]状态转移方程: s1[i]=s2[j]时:dp[

2016-07-23 11:41:30 825

原创 POJ 3301 Texas Trip(最小正方形覆盖、点坐标旋转)

题目链接: POJ 3301 Texas Trip 题意: 平面给nn个整数点,求覆盖这nn个整数点的最小正方形面积? 数据范围:n≤30,每个点距离原点的距离不超过500n\leq 30,每个点距离原点的距离不超过500 分析: 先考虑如果水平竖直地放置正方形(边和坐标轴平行)圈住所有点的最小正方形的边长是: L=max(xmax−xmin,ymax−ymin)L=max(x_{m

2016-07-22 11:57:48 1477

原创 UVALive 4986 Dome of Circus(三分、凸包、凸性函数)

题目链接; UVALive 4986 Dome of Circus 题意: 在空间中给nn个点的坐标,并且每个点都是在zz轴的正半平面内,以原点(0,0,0)(0,0,0)为底面圆圆心,画一个圆锥,要求圆锥要包含所有的点,点可以在圆锥面上,求最小的圆锥体积的底面圆半径和高。 数据范围:1≤n≤10000,并且所有点的坐标的绝对值都不超过100001 ≤ n ≤ 10000,并且所有点的坐

2016-07-22 00:11:53 2059

原创 POJ 1067 取石子游戏(威佐夫博弈)

题目链接: POJ 1067 取石子游戏 题意: 有两堆石子各有a,ba,b个,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。判断先手是胜者还是负者。 数据范围;a,b≤109a,b\leq 10^9 分析; 威佐夫博弈(Wythoff Game)。 我们用 (ak,bk),ak≤bk,k=0,1,2,…,n(a_k,b_k),a_k\l

2016-07-21 23:08:52 618

原创 HDU 1087 Super Jumping! Jumping! Jumping!(求最大上升子序列和)

题目链接; HDU 1087 Super Jumping! Jumping! Jumping! 题意: 求最大上升子序列和。 数据范围:n≤1000n\leq 1000 分析: 用dp[i]dp[i]表示以ii为结尾的最大上升子序列和。那么 dp[i]=max(dp[i],dp[j]+data[i])(j<i且data[j]<data[i]dp[i]=max(dp[i],dp[j]+d

2016-07-21 10:22:10 410

原创 HDU 1003 Max Sum(最长连续子序列和)

题目链接; HDU 1003 Max Sum 题意: 求最长连续子序列和,并输出子序列的起始和终止位置。 数据范围:n≤105,−1000≤每个数≤103n\leq 10^5,-1000\leq 每个数\leq 10^3。 多解时,输出第一个序列的起始和终止位置。 分析: 直接看代码吧。 用sumsum记录当前连续子序列的和,当sum<0sum<0和sum>anssum>ans时需要

2016-07-21 00:42:28 585

原创 UVA 10635 Prince and Princess(最长公共子序列转为最长上升子序列)

题目链接: UVA 10635 Prince and Princess 题意: 给n,p,qn,p,q表示接下来两行会给p+1p+1和q+1q+1个数。每个数都不超过n∗nn*n,且每行的数字各不相同,所以p和qp和q也满足:1≤p,q<n1\leq p,q < n。求两个序列最长的上升的数字相同的公共子序列的长度。 数据范围:2≤n≤2502\leq n \leq 250 分析: 最长

2016-07-21 00:27:35 513

原创 POJ 2533 Longest Ordered Subsequence(最长上升子序列长度、O(nlogn))

题目链接: POJ 2533 Longest Ordered Subsequence 题意; 求最长上升子序列长度。 数据范围:n≤1000n\leq 1000 分析: 直接用O(nlog(n))O(nlog(n))的方法,在数组中二分查找并替换,使得最长上升子序列的“潜力”更大。#include <iostream>#include <cstdio>#include <cstrin

2016-07-20 23:30:14 465

原创 HDU 1811 Rank of Tetris(并查集+拓扑排序)

题目链接; HDU 1811 Rank of Tetris 题意: nn个人,编号0−n−10-n-1。mm组关系可以是:A>B,A=B,A<BA>B,A=B,A<B。 问最终的关系是否确定或者出现冲突? 数据范围:0≤N≤10000,0≤M≤200000\leq N\leq 10000,0\leq M\leq 20000 分析: 能想到并查集把A=BA=B的情况合并就好做了。#inc

2016-07-18 22:35:01 491

原创 POJ 1094 Sorting It All Out(拓扑排序)

题目链接; POJ 1094 Sorting It All Out 题意: 给出nn,代表nn个元素,和mm条关系,问在哪条关系时可以确定顺序或者出现冲突或者不能确定顺序。 数据范围:2≤n≤26 2 \leq n \leq 26 分析; 主要是不能确定顺序的判断。 当队列中多余一个元素时是不能确定顺序的,但是这时有可能是冲突的。所以要还要判断是否冲突。 对于每条新加关系,进行一遍

2016-07-18 22:25:18 381

原创 HDU 2647 Reward(拓扑排序)

题目链接: HDU 2647 Reward 题意: 有nn个人和mm条关系,表示A[i]A[i]的奖金必须比B[i]B[i]多,求总奖金和最小值。 数据范围:n≤10000,m≤20000n\leq 10000,m\leq 20000 分析; 把队列中的每个元素设有两个属性(pairpair):编号和奖金就好了。除了第一次0度的元素进队列,其余每次进队列奖金值+1就好了。#include

2016-07-18 22:16:37 303

原创 HDU 5695 Gym Class(拓扑排序、优先队列)

题目链接; HDU 5695 Gym Class 题意: 定义序列每个元素的权值是在他之前包括自己的最小数。求序列权值和最大的拓扑排序。 数据范围:n≤105,m≤105n\leq 10^5,m\leq 10^5。 分析; 也就是每次从度为00的点中我们尽可能要得到编号大的点。优先队列搞下就好了。#include <iostream>#include <cstdio>#include

2016-07-18 22:06:47 437

原创 POJ 2585 Window Pains(建立优先关系、拓扑排序)

题目链接; POJ 2585 Window Pains 题意: 给一个4∗44*4的方格表示屏幕,1−−91--9每个数字可以用2∗22*2的方格出现在屏幕上的特定位置,让你判断这个屏幕是否合法。 分析: 这题难点在于建立相对顺序。 首先我们可以把每个位置可以出现的数字预处理出来。 然后判断每个位置出现的数字,比如说在(2,2)(2,2)位置可以出现:1,2,4,51,2,4,5。如果

2016-07-18 21:43:43 684

原创 POJ 1270 Following Orders(dfs/next_permutation())

题目链接; POJ 1270 Following Orders 题意: 给出nn个不同的小写字母和若干约数关系,表示某些字母不能排在某些字母前面。按字典序输出所有可能的排列。 数据范围:2≤n≤202\leq n \leq 20,必定存在可能的排列,并且排列个数≤300\leq 300。 分析: 有两种思路。 用link[i][j]link[i][j]表示编号为ii的字母不能排在编号为

2016-07-18 21:29:32 471

原创 HDU 1285 确定比赛名次(字典序最小的拓扑排序)

题目链接: HDU 1285 确定比赛名次 题意: 输出拓扑排序字典序最小的方案。 分析: 这道题和UESTC 1150 排名表区别还是(比较)明显的。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <climits>#incl

2016-07-17 18:29:18 1017

原创 UESTC 1150 排名表(拓扑排序、很容易错)

题目链接: UESTC 1150 排名表 题意: 给出一个nn个人的已知的mm个排名顺序:a[i]a[i]在b[i]b[i]之前。输出这nn个人的排名顺序的名次,如果有多解让编号为1的人的名次尽量小,然后让编号为2的人的名次尽量小,然后让编号为3的人的名次尽量小……。如果无解输出−1-1。 数据范围:0≤n≤200,0≤m≤400000 \leq n \leq 200,0\leq m \le

2016-07-17 15:37:08 828

原创 HDU 3221 Brute-force Algorithm(指数降幂公式)

题目链接; HDU 3221 Brute-force Algorithm 题意: 根据递归可以得到f[1]=a,f[2]=b,f[n]=f[n−1]∗f[n−2](n≥3)f[1]=a, f[2]=b,f[n]=f[n-1]*f[n-2](n\geq 3),给出a,b,p,na,b,p,n求f[n]%p的值。f[n]\% p的值。 数据范围:1≤n≤1000000000,1≤P≤100000

2016-07-17 12:16:57 1398

ACM--状态压缩

ACM--状态压缩(天津大学·周伟)

2016-09-15

状态压缩by天津大学·周伟

2016-09-13

空空如也

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

TA关注的人

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