- 博客(47)
- 收藏
- 关注
原创 CodeForces 575D Tablecity 奇偶分析
首先这个题目的要求是:找到一种监测方法,使得所有小偷移动序列中 一定会有至少 一个时间点 在 一个地点 与之重合。这个题可不能从左往右扫一遍,因为即使只这样,小偷也会报过去。/*我们先试着确定小偷的范围,将其渐渐逼死,结果很没有头绪,因为这样的小偷是"万能",即出生位置可以不断调整来始终破坏这个策略。但这样分析是不对的,因为小偷只可能有一个出生位置。*/
2016-04-26 22:05:53 467
原创 wustoj 1590: As Many Princesses as Possible 树形dp 好题 ★
#includeusing namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)#define for1(a, n) for (int (a) = 1; (a) <= (n); (a)++)typedef long long ll
2016-04-26 21:51:51 878
原创 USACO The Castle 种子染色法
Translate:USACO/castleTranslate:USACOThe Castle城堡IOI'94 - Day 1目录 [隐藏] 1 描述2 格式3 SAMPLE INPUT4 SAMPLE OUTPUT[编辑]描述我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的
2016-04-24 23:28:07 516
原创 ZOJ 3946 Highway Project 单源最短路
Highway ProjectTime Limit: 2 Seconds Memory Limit: 65536 KB Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can reach other cities from
2016-04-23 23:00:30 741
原创 USACO 1.3 Ski Course Design 转化
常见的做法是选择区间,将所有山的高度都移动到这个区间里。我感觉这个解法有点略微转化问题,将问题转化为所有山的高度差不超过17,进而可以枚举区间,使得所有山的高度都能到这个区间内。Ski Course DesignFarmer John has N hills on his farm (1 Unfortunately, FJ has just found out
2016-04-21 16:22:04 363
原创 USACO 1.3 Wormholes 爆搜+模拟
WormholesFarmer John's hobby of conducting high-energy physics experiments on weekends has backfired, causing N wormholes (2 <= N <= 12, N even) to materialize on his farm, each located at a dis
2016-04-21 16:16:29 595
原创 USACO 1.1 Broken Necklace
这个题就是告诉我们倍长字符串是处理回文的一种常见方式/*ID: 17702791PROG: beadsLANG: C++*/#includeusing namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)#de
2016-04-21 16:14:46 401
原创 CodeForces 632C The Smallest String Concatenation 排序
解法很简单,排序+输出。bool cmp(string c,string d){ x=c+d; y=d+c; return x<y;}排序方法:#includeusing namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n) for (int (
2016-04-20 23:20:19 482
原创 UVA 1619 Feel Good 感觉不错 迭代法 (2005 NE)
题不难,迭代法。#includeusing namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)#define for1(a, n) for (int (a) = 1; (a) <= (n); (a)++)typede
2016-04-17 21:58:29 602
原创 UVA 1614 Hell on the Markets 结论+贪心 (2008 NE)
题意:给出一个序列,1结论:对于1证明:设对k成立, 则 前k个数可以凑成[1,sum[k]] 要证明 k+1可凑成sum[k]+x (1 只需证明 sum[k]+x-a[k+1]可由k凑成 因为 0sum[k]+x-a[k+1] 由于k可凑成[1,sum[k]],且sum[k]+x-a
2016-04-17 20:30:15 600 2
原创 错误总结
今天比赛时用double ans=....;int ANS=ans;printf("%d\n",ANS);进行四舍五入现在想想也是傻,当时因为知道ans是个整数,就直接用int存。发生了灾难性的错误,由于ANS为整数,但是double是不精确的,我们机器上跑出20,结果判题机上偏偏是19。下次:printf("%.0f\n",ans);
2016-04-17 17:46:28 395
原创 UVA 11925 Generating Permutations 逆向思维
#include#include#include#include#include#include#includeusing namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)#define for1(a, n) for
2016-04-16 21:52:40 473
原创 wustoj 1583: Sharing! 思维
题意:一个数列,找出两个数a[i], a[j],使得s = max(|j - i| * min(a[i], a[j]))最大,求最大值。要求:n解法:f(le,ri): 对于一个区间[le,ri],先用le和ri更新答案 维护两个指针一个指向le,一个指向ri,现在将指向小元素的指针向另一边移动, 中间遇见元素a[p],
2016-04-16 21:43:37 696
原创 UVA 1153 Keep the Customer Satisfied 顾客是上帝 经典贪心 (SWE 2005)
经典模型:n项工作,每个工作有一个工作时间和截止日期,要求完成时不超过截止日期算完成。 现在给出n个工作,问单线程作业最多能完成多少项工作?解法: 根据工作截止日期dead从小到大将工作排序, 从左向右扫描工作,同时维护一个优先队列(大顶堆,根据工作时长)。 如果该工作可以
2016-04-15 22:47:58 387
原创 UVA 1611 Crane 起重机 操作题 (2013 CE )
题意:给出一个1~n的排列, 给出一种操作:选定一个包含偶数个元素的区间[le,ri],交换前后两半的位置。 要求用不超过9^6次操作,将数列变为升序。 输出所用步数,和各步操作。解法: 先让1归位,再让2归位,再让3归位...最后让n归位。 对于让x归位的一个阶段,至多两步即可让它归位。
2016-04-15 22:37:19 772
原创 UVA 1615 Highway 区间选点 经典贪心 (SEERC 2005)
一定要根据右端点从小到大排序,因为为了保证一次扫过满足每个区间,那么被包含区间应该排在包含它的区间前面。#include#include#include#include#include#include#includeusing namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n)
2016-04-15 00:25:49 436
原创 uva 11491 Erasing and Winning 奖品的价值 (单调队列)
解题关键在于,首先要发现性质,题目要求在n个有序数字中,选取n-d个数字,使得剩下组成的数最大。先考虑选取第一位:越大越好,越靠左越好。解法:维护一个单调递减的队列。#include#include#include#include#include#include#includeusing namespace std;#define all(x) (x)
2016-04-13 08:28:17 397
原创 uva 12545 Bits Equalizer (SWERC 2012) 贪心 分析
我对这种问题最恐惧,感觉自己对纯脑洞的题目最不顺手,有时侯一些题别人半天看不出来,自己能很快秒杀,有些题别人都A了,自己死也想不出来,然后比赛碰见了还会非常紧张。1)首先,分析3中操作方式,可以得出,1的数量只会增加,不会减少。所以如果A串中的1如果已经比B串中的多了,那么一定输出-1。2)然后围绕数量问题做文章,我们先处理'?',因为'?'处或早或晚都要处理。首先
2016-04-12 22:30:40 421
原创 UVA 1149 Bin Packing 装箱 经典贪心 (SWERC 2005)
贪心解法我认为这是正解,就是先将物品排序,因为每个物品都要选,不妨每次考虑选择那个最重的物品,之后考虑将最轻的物品也放进去,若放不进去,那么这次就装1个最重的物品,否则,装这两个。原理:因为最重的物品总要放进去,如果最轻的物品还不能与之搭配,那么他永远只能一个人。#include#include#include#include#include#include
2016-04-12 18:42:45 1040
原创 NKOJ 2151【单调队列】烽火传递 单调队列优化DP
dp[x]=min{dp[y]}+a[x] ( x-m利用单调队列去优化dp【单调队列】烽火传递Time Limit:10000MS Memory Limit:65536KTotal Submit:91 Accepted:36 Case Time Limit:1000MS Description烽火台又称烽燧,是重要的防御设施,一般建在险要处或交
2016-04-12 12:10:52 603
原创 NKOJ 2150 【单调队列】广告印刷
输出用cout,不然用lld和I64d都会wa。对于每一个建筑物,要知道往左到哪一个建筑第一个高度比它低,知道往右走哪一个建筑物第一个高度比它低。可以用dp,也可以用单调队列。首先从左往右,构造单增队列,这样始终有一个最小值,每加入一个高度h,先把队尾处大于等于它的高度全部删掉。因为后面的高度,如果高度比h大,那么找到h就停止了,如果高度如果队列空了,证明h是从1开始到ind[
2016-04-12 11:28:12 1345
原创 WF 1995 Stamps and Envelope Size (uvaLive 5181 )
一个背包问题,并不难,难道是WF的签到?输出说明:注意用%3d,最大连续邮资取最大的,若相等,取邮票种类最少的,若相等,取最大面值最小的。#include#include#include#include#include#include#includeusing namespace std;#define all(x) (x).begin(), (x).en
2016-04-11 23:31:15 433
原创 FZU - 1894 志愿者选拔 单调队列
单调队列的几个性质:如果我要知道区间最大值,需要维护单调递减的队列,那么队头元素就对应最大值。如果我要知道区间最小值,需要维护单调递增的队列,那么队头元素就对应最小值。队列里存放的可以是元素下标,也可以是元素值。如果维护单增队列(就是要知道区间最小值),如果当前入队元素比队尾小,那么去掉队尾,直至比队尾元素大,因为可以保证查询区间的最小值一定是队头元素。
2016-04-11 15:00:51 300
原创 多说都是泪 GDUT 广东工业大学2016校赛决赛-网络赛 1170 Problem B Sward Art Online
题目:点我http://gdutcode.sinaapp.com/problem.php?cid=1031&pid=1今天打网络个人赛,一开始就不太顺利,到了这个题,刚看到的时候,认为是手到擒拿,结果到最后也没AC。wa啊T的,最后想尽各种办法优化,结果解法越来越复杂,也离答案越来越远,最后题目认识得都是错的。有时人喝水也会塞牙缝,到最后一分钟,有人告诉我m最大只有500(
2016-04-10 23:38:31 786
原创 2006 Asia - Kaohsiung Perfect Service 树形DP (uvaLive3685) ★
还有点意思装有服务器的结点没有什么要求但是对于没有装服务其的结点,要求仅与一个结点相连。对于一个结点,如果装有服务器,那么子结点装或者不装,如果不装服务器 ,1)如果父节点也不装,那么子结点中有且仅有一个装。 2)如果父节点装了,那么子结点都不能装。#includeusing namespace std;
2016-04-09 23:10:56 531
原创 UVA - 12186 Another Crisis 水树形dp
此题属于树形dp中最简单的一类题目,dp思想所用甚少。#includeusing namespace std;#define all(x) (x).begin(), (x).end()#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)#define for1(a, n) for (int (a) = 1; (a) <=
2016-04-09 19:24:04 211
原创 poj 2152 Fire 树形dp
看题解,归纳一下做法吧:best[x]:表示以x为根的子树结点全部符合要求(在规定距离内有消防站)的最小花费。dp[x][y]:表示x以y作为自己的消防站,且x的子树结点全部符合要求的最小花费。那么处理每一个结点x时,先枚举和x距离不超过D[x]的点i,然后这些点可以作为x的消防站,之后枚举x的子结点y,dp[x][i]=W[i]+sum( dp[y][i]-W[i],b
2016-04-08 19:56:01 320
原创 2013 Asia - Dhaka GCD XOR 数学,gcd ,异或 (uvaLive 6657 - GCD XOR)
想不出来真失败,总结一下这个题目主要是在这几点上:1.很容易想到枚举a,b,然后判断__gcd(a,b)是否等于a^b。也很容易发现这样做是完全不行的。(1/1)2.分析出gcd和xor其实并没有太大关系(1/1)3.然后分析出gcd和xor并没有关系,而且时间不够,那么就要充分利用xor或者gcd的性质。(2/2)4.鉴于1和3,那么我们可以换个枚举的方式,枚举a和a的因子,
2016-04-08 14:56:43 373
原创 UVA - 10791 Minimum Sum LCM 数学题 ,质因数分解
if(x==1) then ans=2;else if(x has only one prime factor) then ans=1+x;else{x=prime[1]^e[1]*prime[2]^e[2]*...*prime[k]^e[k]。So ans equals prime[1]^e[1]+prime[2]^e[2]+...+prime[k]^e[k]。
2016-04-07 00:37:38 266
原创 CF 620 C. Pearls in a Row 贪心
为何不贪心呢?从左往右扫描,只要满足形成一段的条件,立马形成一段,注意最后一段结尾必须是n。C. Pearls in a Rowtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputs
2016-04-06 23:44:06 569
原创 CF 622 C. Not Equal on a Segment 水吧
C. Not Equal on a Segmenttime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given array a with n integ
2016-04-06 23:34:21 431
原创 CF 612 C. Replace To Make Regular Bracket Sequence 经典括号匹配+问题分解
先判断左型和右型是否匹配,如果成功,每一对括号对应的括号位置已定,然后对每一对括号分别考虑。C. Replace To Make Regular Bracket Sequencetime limit per test1 secondmemory limit per test256 megabytesinputstand
2016-04-06 23:28:27 497
原创 Codeforces Round #336 (Div. 1) A. Chain Reaction DP+(可选二分)
如果以位置为阶段,那么不用加二分。如果以beacons为阶段,那么必须加二分优化。如果beacons放置的区域范围过大,那么必然只能用dp+二分。A. Chain Reactiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard
2016-04-06 12:38:59 491
原创 CF 629 D. Babaei and Birthday Cake 线段树+DP
虽然没有开dp数组,但满满的dp思想。D. Babaei and Birthday Caketime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAs
2016-04-05 19:57:28 521
原创 CF 553A. Kyoya and Colored Balls 组合数学 和dp有点关系
其实和dp一点关系都没有,如果说有关系,那么就是阶段的选取。如果以dp的思维考虑问题,首先要确定阶段,这个题肯定不能以正在考虑第几个球为阶段,因为状态存不下去,而且就算这存下去了,也不好算。正确的阶段是颜色,以颜色从小到大的顺序解题。A. Kyoya and Colored Ballstime limit per test2 second
2016-04-05 16:45:14 679
原创 CERC 2009 Cav 扫描法 (uvaLive 4621 - Cav)
/*问题等价于对每一格(横坐标跨度为1)求出可行的最大水位,然后累加每一位置。*/#include#define all(x) (x).begin(), (x).end()#define rep(i,n) for(int i=0 ;i<(n) ;i++)using namespace std;typedef long long ll;const int INF =0x3f3f3
2016-04-03 22:20:27 701
原创 NWERC 2012 Foul Play 构造 (uvaLive 6271 )
书上的解法:每一轮分四个阶段:第一阶段:对队1不能消灭的队伍,尽量用队1能消灭的队伍去消灭。第二阶段:队1任选一个能战胜的队伍 消灭。第三阶段: 队1不能消灭的队伍自相残杀。第四阶段:所有未比赛的队伍任意杀。这样每一轮结束之后都能保证队1至少能战胜一半的队伍。代码写的烂,只能给自己以后看看。#include#define a
2016-04-03 17:02:24 549
原创 CF 615B. Longtail Hedgehog 图 dp
水题一个B. Longtail Hedgehogtime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThis Christmas Santa gave Ma
2016-04-02 23:55:37 447
原创 hdu 2476 String painter 区间dp 难
一种比较笨的方法,人家都开的是二维数组,我却开了三维。String painterTime Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2862 Accepted Submission(s): 1307P
2016-04-02 19:07:42 448
原创 sdut 1309 不老的传说问题 区间dp 难
详见注释不老的传说问题Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^题目描述一位先知告诉dynamic,在遥远的地方,有一处不老的泉水,在那里,他可以找到他人生的意义。按照先知的指引,dynamic出发了。翻越雪山,穿过丛林,渡过汪洋,终于来到了沙漠的最深处。按照先知的说法,泉水就在这个地方。然而除
2016-04-02 15:46:28 585
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人