自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Poj 2976 Dropping tests(二分)

题目地址:http://poj.org/problem?id=2976 思路:max{sigma(a[i])/sigma(b[i])}。设r=sigma(a[i]*x[i])/sigma(b[i]*x[i])(x[i]=0,1)。则sigma(a[i]*x[i])-r*sigma(b[i]*x[i])=0,而sigma(a[i]*x[i])-max(r)*(sigma(b[i]*x[i]))0,

2017-03-17 17:36:32 339

原创 Poj 2559 Largest Rectangle in a Histogram(单调栈)

题目地址:http://poj.org/problem?id=2559 思路: 方法一:设置一单调栈,栈中元素按高度依次递增。则对于新加入的元素,若当前高度大于栈顶元素高度,则直接入栈;否则,不断退栈直到栈顶元素高度小于当前元素高度(因前一高度已不能继续延续到当前高度)并将更新当前元素宽度,入栈。退栈过程中不断更新最大值:栈中元素(2,1),当前元素(1,1)此时退栈并且将退栈元素宽度累加作为

2017-03-17 16:44:10 500

转载 最长上升子序列nlogn算法

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。 刚才用O(n^2)的DP算法做了最长上升子序列,具体见POJ2533解题报告。后来在网上看到说LIS问题有O(nlogn)的算法,于是拿来小研究了一下。 这个算法其实已经不是DP了,有点像贪心。至于复杂度降低其实是因为这个算法里面用到了二分搜索。本来有N个数要处理是O(

2017-03-15 21:30:45 626 1

原创 Poj 3273 Monthly Expense(二分)

题目地址:http://poj.org/problem?id=3273 思路:二分最小值(1--sum{a[i]})。从小到大依次相加,判断  #include #include #include #include using namespace std; const int maxn=1e5+50; int n,m; int a[maxn]; int check(int x) { i

2017-03-14 22:10:50 298

原创 Poj 3180 The Cow Prom(强连通分量)

题目地址:http://poj.org/problem?id=3180 思路:强连通分量裸题,求点数大于1的强连通分量个数。 #include #include #include #include #include using namespace std; const int maxn=1e4+50; int n,m,all,top,ans; vector g[maxn]; int S[max

2017-03-14 21:31:32 618

原创 Poj 2823 Sliding Window(单调队列)

题目地址:http://poj.org/problem?id=2823 思路:设置两单调队列:q(存储从小到大的值的下标)、Q(存储从大到小的值的下标)(初始时,两队列仅一元素1)。从1--->n依次扫描数组中元素:对于q,若当前值大于或等于队尾元素则将其下标i入队。否则,不断弹出队尾元素直到当前值不小于队尾元素x对应的a[x],若当前窗口元素个数大于k(i-队头元素>=k),则不断出队,直到i

2017-03-14 17:22:28 349

原创 Poj 2566 Bound Found(尺取法)

题目地址:http://poj.org/problem?id=2566 思路:选择一区间使得其和的绝对值最接近t。 (1)当序列a[1...n]元素单调时,设置两指针:l、r。设当前数的和为sum,当sum大于t时,sum-=a[l];当sum小于t时,sum+=a[r]。则依次遍历可求出最接近t的值。 (2)由于该序列中元素可正可负,不可直接使用尺取法,需将其做适当转化:设sum[i]为该

2017-03-07 18:45:41 542

原创 Poj 3411 Paid Roads(最短路)

题目地址:http://poj.org/problem?id=3411 思路:记录状态,松弛操作时判断即可。 #include #include #include #include #include #define debug using namespace std; const int maxn=15; const int INF=0x3f3f3f3f; struct Edge {

2017-03-07 16:08:43 460

原创 CodeForces - 748F Santa Clauses and a Soccer Championship(思路)

题目地址:http://codeforces.com/problemset/problem/748/F 思路:由于整个结构为树,则每个点之间的最短路径唯一,则可以发现住宿处个数存在且最小为1。则住宿处为某一点将所有team分成两部分且在所有配对的team的最短路上,则住宿处的位置为某子树中包含家乡的点的个数不小于k的最小子树的根节点。则分队可以将该子树的两部分直接分配:dfs过程中将家乡加入左边

2017-03-04 22:16:21 732

原创 CodeForces - 748E Santa Claus and Tangerines(枚举)

题目地址:http://codeforces.com/problemset/problem/748/E 思路:求使得分得的最小值最大。由于最大值为1e7,所以可以直接从大到小枚举最小个数i。当分得的个数总和大于人数时,代表此即为最小值(从大到小枚举,也即为最小值最大)。则a[i/2]=a[i/2]+a[i];a[(i+1)/2]=a[(i+1)/2]+a[i](a[i]代表可以由i分得的数的个数

2017-03-04 19:44:18 392

原创 Poj 3658 Artificial Lake(模拟)

题目地址:http://poj.org/problem?id=3658 思路:记录每一个平台未被淹没的前一个平台与后一个平台。每次选择一个高度最小的坑,填满。并更新其前后平台,即nt[pre[k]]=nt[k](该平台k被淹没后其前驱平台的后继即为该平台后继平台),pre[nt[k]]=pre[k](该平台被淹没后其后继平台的前驱即为该平台的前驱),ans[k]=当前水量+淹没该平台的宽度(w[

2017-03-03 21:46:13 844

原创 Poj 3662 Telephone Lines(最短路+二分)

题目地址:http://poj.org/problem?id=3662 思路:题目即为从连接1--n的边中找出一条最长的边,使得不多于k条边大于此边。则可以二分边长L(从0到边长最大值),求连接1--n的边中有多少条边的边长大于该边长:建立新图,将所有大于该边长的边权值设为1,其他边的权值为0,则求1->n的最短路即为连接1-->n的边中大于该边的边的个数,若其小于等于k则继续二分1---L-1

2017-03-03 19:34:07 598

原创 Poj 3657 Haybale Guessing(二分+并查集)

题目地址:http://poj.org/problem?id=3657 思路:由于每个位置的数唯一,对于两个区间[l,r]最小值为a、[L,R]最小值为A。若区间[l,r]被区间[L,R]完全包含且a<A,此时存在矛盾且为唯一的矛盾。则可以二分询问Q,判断1---tot内的询问是否合法。每次二分时,将1---tot之间的询问按照最小值从大到小排序(优先处理大数,以后判断时仅需判断小数所在的区间是

2017-03-03 16:57:01 889

空空如也

空空如也

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

TA关注的人

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