- 博客(49)
- 收藏
- 关注
原创 UVA - 12169 Disgruntled Judge
先枚举a,根据x[1]和x[3]的值可以通过exgcd求出b,然后判断x[1]、a、b生成的数列是否和给出的吻合。#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int max
2016-03-31 09:35:26 257
原创 UVA - 1608 Non-boring sequences 分治"中途相遇"
没想到用map离散化比排序离散化来得快这么多,用排序的方法离散化会超时。对于一个序列,如果所有出现的值都是不止一个,那么boring,结束否则找到任意一个单独出现一次的值,以该位置左右两边为子区间进行分治/递归。#include#include#include#include#include#include#includeusing nam
2016-03-30 18:13:18 353
原创 UVA - 12174 Shuffle 滑动窗口的应用。
#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int maxn= 100000 ;int s,n;int num[maxn+5],a[maxn+5];bool ok[2*max
2016-03-29 17:59:17 366
原创 USACO 2005 Cleaning Shifts 带权区间调度、覆盖问题 单调栈优化dp
首先,根据区间右端点从小到大的顺序对区间排序,之后以区间为阶段进行线性动归。dp[x]的意义是第x个区间为最后一个区间,从开始时间到a[x].ri这段时间的最小花费。计算dp[x]的时候,是找一个前面存在的p,使得 a[x].le -1根据计算的顺序,维护一个只入队,不出队的单调递增队列,配合二分查找 即可快速完成 查找最优解的任务。时间复杂度O
2016-03-27 13:01:26 648
原创 uvaLive 3222 Joke with Turtles 带权区间调度、覆盖问题 等价转换+线性动归
带权的区间调度问题,贪心似乎不好解决,一般的方法是动态规划题目:点我细节分析: 对于一个乌龟说的话,前面有a个乌龟,后面有b个乌龟,意为 该乌龟可能是第[a+1,n-b]名。题目解法:一个区间表示了一个名次,区间的长度表示这个名次有多少人。给区间附上权值,如果有x个人的名次为区间[a,b],那么区间[a,b]的权值val为
2016-03-25 21:25:59 827
原创 NYOJ 题目12 喷水装置(二) 最小区间覆盖问题
先对喷水器进行筛选,把不合格的去掉,然后将喷水器覆盖问题转化为 最小区间覆盖问题,按照区间左端点从小到大排序,之后进行贪心。喷水装置(二)时间限制:3000 ms | 内存限制:65535 KB难度:4描述有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水
2016-03-25 17:23:39 628
原创 NYOJ 题目6 喷水装置(一) 水贪心
半径1或者以下的喷水装置毫无用处,因为题目是要求在一个矩形的两条长为20米的边的中位线上装喷水器,而且要求全部覆盖,且宽为2米。按半径大小从大到小排序,之后进行贪心。喷水装置(一)时间限制:3000 ms | 内存限制:65535 KB难度:3描述现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个
2016-03-25 16:55:08 474
原创 uvaLive 2387 - Gene Assembly 最大区间调度问题
题目:点我经典贪心模型,按照右端点从小到大排序。注意同一个位置只能放一个。#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int maxn= 1000 ;in
2016-03-24 22:33:40 523
原创 抄书问题2 (复制书稿) 单调性优化dp + 序列划分模型
3163 抄书问题 2 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond题解题目描述 Description现在要把M本有顺序的书分给K个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给
2016-03-24 18:02:34 1000
原创 poj 1717 Dominoes 背包
DominoesTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 6464 Accepted: 2131DescriptionA domino is a flat, thumbsized tile, the face of which is divide
2016-03-24 00:15:34 486
原创 ZOJ Problem Set - 2562 More Divisors 反素数
More DivisorsTime Limit: 2 Seconds Memory Limit: 65536 KBEverybody knows that we use decimal notation, i.e. the base of our notation is 10. Historians say that it is so because men have
2016-03-23 20:16:13 347
原创 UVA - 11582 Colossal Fibonacci Numbers! 巨大的斐波拉契数 鸽笼原理+模运算
输入unsigned long long 型 a,b 和 不超过1000 的正整数n ,输出 f(a^b)%n,f()代表斐波那契数。f(0)=0, f(1)=1 。解:因为f(i)=f(i-1)+f(i-2), 所以如果有 f(x-1)==f(i-1)&&f(x)==f(i) 且x!=i ,那么势必会出现循环。n很小,在[1,n^2+2
2016-03-23 12:48:53 524
原创 UVA - 11093 Just Finish it up 难道我这是神解?
这个题1A,我的解法和 紫书,也就是网上大部分的解答完全不同,突然发现自己这个做法很简洁。我的做法,构造一个函数,现在要在x=1,2,3,...,n这n个位置上画个点。现在这个函数过点(0,0)现在从1到n扫描n个加油站,每到一站y[i]=y[i-1]+p[i]-q[i]如果y[n]否则,现在只需要找到最低点的序号,如
2016-03-22 20:21:48 553
原创 CODEVS 3162 抄书问题 (复制书稿)
做这个题,犯了致命错误,wa了几发。首先要dp,然后必须贪心输出结果,我这个错误以前犯过一次。输出结果的时候局部最优不一定是全局最优,因为输出的顺序是倒着来的,而且题目要求是让连续区间中的最大值最小,所以先应该记录这个全局最优值,然后对于局部的路径输出,只需要满足这题目还会有K==0&&M==0的数据。
2016-03-22 18:00:40 901
原创 CF 598C Nearest vectors (精度)
在acm题中从来没用过long double,这题本来快做对了,可惜用的是double,精度被卡死。C. Nearest vectorstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutpu
2016-03-22 16:21:33 416
原创 CF 598 E. Chocolate Bar dp题的要害是什么呢?
E. Chocolate Bartime limit per test 2 secondsmemory limit per test 256 megabytesinput standard inputoutput standard outputYou have a rectangular chocolate bar c
2016-03-22 00:05:13 933
原创 uva 11520 - Fill the Square - D 填方块 贪心
贪心,从上到下,从左到右,能填A则填A,否则试B...#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int maxm=100000 ;int n,m;char s[max
2016-03-21 13:33:44 296
原创 CF 349 C. Dominoes 贪心吧
C. Dominoestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputDuring the break, we decided to relax and play
2016-03-21 13:29:38 319
原创 CF279C Ladder 简单DP
L[x]代表不递增序列,从x位置向左最远能延伸到的位置R[x]代表不递减序列,从x位置向右最远能延伸到的位置给出x,y只用判断R[x]是否>=L[y]即可。一看就感觉是水题。#include#include#include#include#include#includeusing namespace std;typedef long long
2016-03-21 13:06:46 971
原创 CF_1B_Spreadsheets 进制转换
B. Spreadsheetstime limit per test 10 secondsmemory limit per test 64 megabytesinput standard inputoutput standard outputIn the popular spreadsheets systems (fo
2016-03-21 12:45:05 380
原创 poj 2689 Prime Distance 筛法/二次筛法/区间素数
完全可以用二次筛法来做,虽然我只是一遍就筛出来,第一次,先找出[1,sqrt(INT_MAX+0.5)]间的素数。第二遍利用第一遍找出的素数找出[L,U]内的素数,映射到一个数组里面,。具体的处理方法有:开一个数组装下该区间内所有的素数,或者表示某个值是否为素数。#include#include#include#include#include#
2016-03-15 13:33:48 519
原创 CF 651A Joysticks 贪心/DP
给出DP解,因为每一分钟过完后,一个用电器的电量-2,一个用电器的电量+1,dp[x][y]=max(dp[x-2][y+1],dp[x+1][y-2]);所以不能直接用递推求解,用记忆化搜索是可以的。因为不存在环,也就是说总电量是在减小的。#include#include#include#include#include#includeusing nam
2016-03-15 10:09:14 548
原创 hdu 5001 Walk 概率DP
其实是很简单的概率DP,看样例的时候因为没读懂0.00000,根本就没有想。三维数组dp[i][step][x]代表:没有经过i点的概率,走了step步,现在在x点的概率。第一维可以省去。#include#include#include#include#include#include#includeusing namespace std;
2016-03-15 10:01:47 256
原创 zoj 2339 Hyperhuffman 赫夫曼编码
很典型的huffman编码,之前写的时候把树给构造出来了,可能会爆内存,注意一点,还是可以不爆。其实不用构造huffman树,给你n个元素,经过n-1次操作,会生成n-1个新元素。这样计算带权路径长度初始化ans=0;对于每一次新生成元素的权值,都加到ans里面即可,这样相当于 每个子结点都计算了它的高度(最顶层为第0层)次。
2016-03-14 15:23:58 366
原创 hdu 1950 Bridging signals 最长上升子序列
Bridging signalsTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1392 Accepted Submission(s): 908Problem Description'Oh no, th
2016-03-14 15:06:41 461
原创 zoj 3622 Magic Number
Magic NumberTime Limit: 2 Seconds Memory Limit: 32768 KBA positive number y is called magic number if for every positive integer x it satisfies that put y to the right of x, which will fo
2016-03-14 15:04:19 295
原创 poj 1061 青蛙的约会 拓展欧几里德 解二元一次不定方程
青蛙的约会Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 102372 Accepted: 19814Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直
2016-03-13 10:44:51 361
原创 POJ 3126 Prime Path 筛法+最短路
网上的题解都是用BFS求最短路的,我这里用了dijkstra,感觉功能太强了点。Prime PathTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 15553 Accepted: 8768DescriptionThe min
2016-03-12 18:40:48 264
原创 POJ 3518 Prime Gap 筛法+二分 水题一个
Prime GapTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 9622 Accepted: 5530DescriptionThe sequence of n − 1 consecutive composite numbers (positive i
2016-03-12 17:18:04 799
原创 poj 2739 Sum of Consecutive Prime Numbers 水题 筛法
Sum of Consecutive Prime NumbersTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 22181 Accepted: 12162DescriptionSome positive integers can be represen
2016-03-12 16:49:22 354
原创 poj 1365 Prime Land 唯一分解定理
这个题,一大堆英文烦死了,但是貌似原数必须用long long存,我wa了半天,之前一直以为原数的范围时[3,32767],结果发现这可能是底数的范围。Prime LandTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 3516 Accepted: 159
2016-03-12 12:31:47 738
原创 hdu 1074 Doing Homework 简单状压/集合DP
Doing HomeworkTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7121 Accepted Submission(s): 3141Problem DescriptionIgnatius ha
2016-03-11 20:34:54 365
原创 hdu 2571 命运 简单DP
详见注释,写了我犯的错误。命运Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14526 Accepted Submission(s): 5113Problem Description穿过幽
2016-03-11 19:24:17 272
原创 hdu 1505 City Game 简单DP 最大子矩阵 迭代法
hdu 1506 加强版 题解:点我只不过在1506的基础上套了一重循环。City GameTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6059 Accepted Submission(s):
2016-03-11 18:47:35 370
原创 hdu 1506 求最大子矩阵 简单DP 迭代法
L[i]表示区间[L[i],i ]内的x均有a[x]>=a[i],且L[i]取最小值。R[i]表示区间[i, R[i] ]内的x均有a[x]>=a[i],且R[i]取最大值。就是枚举高度最低的矩形,形成的矩形高度为 该矩形高度,之前预处理 找到最左边界,和右边界。#include#include#include#include#
2016-03-11 17:57:09 443
原创 hdu 4283 You Are the One 区间DP 也算得上是比较好的解法
dp[le][ri]代表区间[le,ri]的最优解,区间DP其实是利用有关分治思想的一种解题思路(注意:因为dp的意义,dp[le][ri]表示的是在le之前栈为空,在[le,ri]全部上台后,栈也为空。)那么如果子问题划分的好,势必会使解答大大简化。在[le,ri]内找一点k,使之划分为两个区间:[le,k-1],[k,ri],对于[le,k-1]
2016-03-10 22:52:35 450
原创 ZOJ - 3469 Food Delivery 区间DP
因为人的路线是来回走的,所以 当前已送的区间为[x,y],那么再送一次餐,已到区间为[x-1,y]或者为[x,y+1]。区间DP。dp[le][ri][k]表示当前已送完[le,ri]区间,如果k==0,那么人正在第le点,如果k==1,那么人正在第ri点上。坑点:1.速度为1/v,所以不用double表示2.数据范围并没有明确给出,用long long。
2016-03-09 21:08:05 433
原创 POJ 1651 Multiplication Puzzle 区间DP
dp[le][ri]代表区间[le,ri]的最小花费,对于区间[le,ri],这样求dp[le][ri]:枚举最后一次选取的位置kdp[le][ri]=min{a[le]*a[k]*a[ri]+dp[le][k]+dp[k][ri] };Multiplication PuzzleTime Limit: 1000MS Memory
2016-03-09 13:00:30 333
原创 uvaLive 4490 Help Bubu 帮助布布 等价转化+DP
等价转换:从有n本书的书堆里面抽取k本书,再插入书堆里面,计算书的杂乱度等价于向空的书架上按给出的顺序放上n本书,再从中抽取k本书,然后插入书堆里面,计算书的杂乱度等价于向空的书架上按给出的顺序放上n-k本书,然后再放上k本书,想放哪放哪,计算书的杂乱度。显然第一阶段放n-k本书,就是一个简单的背包+集合动态规划。对于每一本书,可以选也可以不选。
2016-03-09 11:06:19 680
原创 CF 149D Coloring Brackets 彩色括号 区间DP
一份比较简洁的解答详见注释#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int INF =0x3f3f3f3f;const int maxn=700 ;char s[maxn+5];//用于保存字符串
2016-03-08 23:00:36 758
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人