POJ1079

上题目- -

Ratio

**Time Limit:** 1000MS **Memory Limit:** 10000K
**Total Submissions:** 2968 **Accepted:** 1057

Description

If you ever see a televised report on stock market activity, you’ll hear the anchorperson say something like ``Gainers outnumbered losers 14 to 9,’’ which means that for every 14 stocks that increased in value that day, approximately 9 other stocks declined in value. Often, as you hear that, you’ll see on the screen something like this:

Gainers 1498

Losers   902

As a person with a head for numbers, you’ll notice that the anchorperson could have said Gainers outnumbered losers 5 to 3'', which is a more accurate approximation to what really happened.  After all, the exact ratio of winners to losers is (to the nearest millionth) 1.660754, and he reported a ratio of 14 to 9, which is 1.555555, for an error of 0.105199; he could have said5 to 3’’, and introduced an error of only 1.666667-1.660754=0.005913.  The estimate 5 to 3'' is not as accurate as1498 to 902’’ of course; evidently, another goal is to use small integers to express the ratio. So, why did the anchorperson say ``14 to 9?’‘  Because his algorithm is to lop off the last two digits of each number and use those as the approximate ratio.

What the anchorman needs is a list of rational approximations of increasing accuracy, so that he can pick one to read on the air. Specifically, he needs a sequence {a_1, a_2, …, a_n} where a_1 is a rational number with denominator 1 that most exactly matches the true ratio of winners to losers (rounding up in case of ties), a_{i+1} is the rational number with least denominator that provides a more accurate approximation than a_i, and a_n is the exact ratio, expressed with the least possible denominator.  Given this sequence, the anchorperson can decide which ratio gives the best tradeoff between accuracy and simplicity.

For example, if 5 stocks rose in price and 4 fell, the best approximation with denominator 1 is 1/1; that is, for every stock that fell, about one rose.  This answer differs from the exact answer by 0.25 (1.0 vs 1.25).  The best approximations with two in the denominator are 2/2 and 3/2, but neither is an improvement on the ratio 1/1, so neither would be considered.  The best approximation with three in the denominator 4/3, is more accurate than any seen so far, so it is one that should be reported.  Finally, of course, 5/4 is exactly the ratio, and so it is the last number reported in the sequence.

Can you automate this process and help the anchorpeople?

阅读全文

POJ1089

比较悲剧的一道题目……话说不悲剧的我都不写日志……

先上题目

Intervals

**Time Limit:** 1000MS **Memory Limit:** 10000K
**Total Submissions:** 5147 **Accepted:** 1999

Description

There is given the series of n closed intervals [ai; b i], where i=1,2,…,n. The sum of those intervals may berepresented as a sum of closed pairwise non−intersecting intervals. The task is to find such representation with the minimal number of intervals. The intervals of this representation should be written in the output file in acceding order. We say that the intervals [a; b] and [c; d] are in ascending order if, and only if a <= b < c <= d.

Task

Write a program which:

.reads from the std input the description of the series of intervals,

.computes pairwise non−intersecting intervals satisfying the conditions given above,

.writes the computed intervals in ascending order into std output

Input

阅读全文

赛后总结

这次总结的不是比赛,而是赛后的状态,简而言之就是颓……
算起来到现在已经2个礼拜了。数数两个礼拜干了些啥东西,学习的话大概把自控原理跟电机跟上了,传感器感觉像做梦一样,硬件啥的……压力不大。另外的东西的话……ACM福州网赛悲剧了,平时题目的话几乎没练,现在的状态去CD铁定悲剧,资源站装系统搞系统盘啥的都用了两三天,虎溪共享项目的话几乎没弄,只在暑假的基础上稍微改了一下,倒是不知道哪天无聊去玩三国杀搞得像之前说给自己预测的一样有上瘾迹象。另外字给彻底打击到了……每天感觉过得浑浑噩噩地,睡觉,完成任务地去上课,回来打开电脑就犯懒,要么玩游戏,要么找点什么东西乱搜索乱晃,时间莫名其妙地就没了,但是没有任何收获。
必须得调整了,即使是比赛回来累了两个多礼拜完全够休息了。作业尽量布置了就做完,ACM得速度抓起来了,这段时间再学几个新算法,重点是加强代码质量。项目的话当做ACM之余的休闲,先把现有的代码整个整理一下,整体框架好好YY一下。字得练起来,无论多少,每天都要花时间练字!游戏这种东西……不能再碰了!弄电脑累了就练字,看书去!!

阅读全文

哈尔滨之行总结

这次来哈尔滨一路上就不是很顺,或者说攒了一路的RP。

出发那天礼拜五,起了个大早赶早上的飞机,于是马上到门口了,WJW发现他忘记带身份证了,找了半天不在包里,于是就跑回去拿了。而CFY则默默地睡过头了- -最终我们终于按时赶到了机场,WJW最后在机场办了临时身份证明,在此赞一下二代身份证!

于是乎我们就到了……呃……是长春,不是哈尔滨……为了省钱我们飞机只到长春……在此强烈BS不给我们报销路费报名费的小气学院于是我们从机场打的到火车站,本来瞅准的3点半左右的火车票连站票都没了- -于是买了5点左右的另一辆火车,车子很争气地晚点了接近一个小时- -继续攒RP- -不过还好,虽然买的站票,但是却是有一大堆座位。

之后还算顺利,比赛方安排了人接站,然后到达之后搞起网络,大家玩了会电脑就洗洗睡了。

第二天早上报名,报名的时候由于我们没有来教练,无亲的克扣了教练的纪念品……话说我们报名费照给凭什么克扣啊过了会儿就是热身赛了,热身赛状态比较糟糕,由于有一道A+B,大家都疯狂的刷,然后有一道计算几何CFY写出来又有点问题,时间有断,导致很多预定需要测试的东西都没有测试,然后下午安排了去什么太阳岛旅游,为了调整状态我回到旅馆睡觉休息,晚上大家都早睡了准备比赛。

第三天正式比赛。那道题目,有一道十分水的题目……10个点的最短路……斯巴达了,CFY水过,不过悲情的是居然还是花了20分钟- -CFY赛后说这玩意儿10分钟足矣,然后接着是另外一道N多人AC的题目,我看了一下,有点像匹配,于是自信满满地抄了长长的KM,于是TLE了……这时候才发现1000个点,KM的话n^3就是10亿……不TLE才怪……这时候看看周围几乎都是至少两题的了,CFY和WJW在那边推移到积分的数学题,我做了一些无谓的优化……总共贡献了3个TLE……看着一个又一个AC……心都碎了……突然我灵光一闪,发现感觉这是一道贪心的水题……马上修改,提交,YES!终于两道题目了,然后看了一下排名,我们基本上排在2AC的最后……太多罚时了……

阅读全文

四场网赛总结

到今天为止四场网赛了,四场门票都拿到了,说起来都是有惊无险,哎……跟那种神学校比还是差太多了……我们都在为门票各种奋斗……他们就毫无压力的- -我的状态也是时好时差,说到底还是实力不行啊。

先说第一场哈尔滨,到现在还是记得哈尔滨的神服务器……各种无法访问,各种改题目,各种改数据。记得那天我就A了一道Java的高精度,然后就一直在死磕一道字符串的题目,事后证明字符串这道是AC人数最少的一道题目。在结束前半小时作突然发现有一道魔方很简单,马上搞起,搞到最后还是没有搞出来,这样子就差一道题目题目才能拿到门票了……记得当时都绝望了,在结束前几分钟莫小琪发过来一个代码,然后突然发现之前WA的代码在Rejudge之后是AC的,而给我们的是改过而且没有测试过的代码!正当我们各种绝望的事后,Rejudge结果出来了,AC了!莫小琪V5光环帮我们拿到了哈尔滨的门票,Orz,膜拜

第二场天津,HDU办的就好了很多,客观因素少了很多,话说这场比赛CFY继承了莫小琪的V5光环,我则继续悲剧- -1006是个超级大水题,我不知道脑子的那部分抽筋了想得莫名其妙的,还好CFY直接n^2直接过了~然后想把我的1006改进成1007,最后失败告终,然后发现最后一题最短路挺简单的,于是AC之~再之后发现一道概率的题目,我和CFY思考方向不太一样,我的是递推,而他的感觉像是在推公式,最后他A掉了,最后莫名其妙又A了一个……¥%#%¥@#%……%……*……%……¥#……最后门票到手

然后就是第三场,昨天的成都,成都的OJ感觉做得有点恶心。话说昨天状态其实也不太好,第一题BFS,花了很长时间才做出来,一开始代码敲好之后发现有很多低级错误,类似++j写成++i这种……不过还好都是本地调试出来的,最后AC之

接着就是一道举证优化的递推,脑子挺清晰的一下子就想到了正确的递推式,最开始一直是WA,改了半天,最后突然发现写二分快速幂的时候写错一个字母……&%)#%(@#(%@(&!@$)(&%!$……脑子继续抽筋……提交之后,发现RE了发现要堆栈溢出,于是乱七八糟改了一个内存泄漏的程序,进而就TLE……于是又改,把递归的二分快速幂改成递推,终于就AC了……不过程序其实是有内存泄露的……不过毕竟AC了还好。接下来就是打酱油阶段了……一直没出题,比赛结束前40分钟还一直是2道题目,以为又要悲剧了,这时候CFY奋斗了3个半小时的极度猥琐的的极度长的程序AC了!松下一口气~~成都门票到手

然后今天第四场。比赛一开始就感觉今天状态明显不行,感觉脑子很累,先看题目,最后一题比较简单,CFY说可以贪心,于是让他写,我题目看得差不多的时候CFY写得也差不多了,这时候发现第一题可以用二分的办法得到答案,于是CFY继续做,而我就做了一道DP的题目。CFY的二分写的挺顺利的,可惜对int64的使用不是很熟悉,在int64常量上面浪费了2个罚时,最后AC之,而我的DP则是各种WA啊WA,最后JJ还是谁的把这道题目做出来了,但是这时候我们总共有8个罚时,虽然当时排名比较前面,但是随着时间的推移,很多队只要做出了第三题就能把我们挤掉!必须再过一道,这时候我和CFY都放弃了题目看起来很长,实际上比较简单的1005而把目标瞄准了另外一道俄罗斯方块的题目,赛后数据1005有60多个AC而俄罗斯方块少很多。我一开始错误估计了俄罗斯方块的状态空间,当我把200多行的程序写出来之后突然发现我已开始估计错误的时候还剩下20多分钟,而排名已经跌倒了75了,这时候我醒悟过来当初应该选择1005,同时又后悔自己WA了这么多次,如果没那么多WA我们也是能够顺利晋级的,1005再去写完全已经来不及了,只能寄希望于王中王和CFY他们在写的题目能够AC一个了。当我已经接近放弃地躺在椅子上想一道算法味道很浓的题目期望脑子能够突然又抽筋把答案抽出来的时候CFY突然很镇静地说:“我觉得我们可以休息了。”太平静了,平静到我以为他是放弃了,但是我不敢说,我问:“他们那边AC了?还是你AC了?”他说:“我AC了。”当即我从椅子上跳起来了,顿时感觉脑子清醒了,终于又拿到一张门票~CFY威武Orz,膜拜~

之后我调试了一晚上我那道题目,发现我的想法是对的,但是在实现的时候犯了一个没有脑子的人都不会犯的错误……而且找了一晚上才找出来……哎……明显感觉还是实力不济!

下礼拜就要哈尔滨了,但愿哈尔滨能够有一个好的表现吧~~

阅读全文

POJ3648

http://acm.pku.edu.cn/JudgeOnline/problem?id=3648

2-SAT的另外一道题目

发现6道2-SAT里面除了做过的一道这是唯一的一道需要输出答案的了,作为练习当然就是挑这一道

这道题目的意思大概是有个婚礼,里面有新郎新娘以及另外N-1对夫妻参加婚礼,有一个很长的桌子,夫妻双方不能同时坐在新娘的对面。然后某些人之间有一些不正当的关系,原话就是 Additionally, there are several pairs of people conducting adulterous relationships (both different-sex and same-sex relationships are possible)……咳咳,各种奸情,基情和百合……然后这种有关系的两个人也不能同时坐在新娘的对面……

赤裸裸的2-SAT

题目做下来发现还是有一些小错误,比如有个地方2n写成了n,还有就是在ColorDFS的时候忘了加Color,还有就是输出答案的时候搞反了,状态还是不太好……不过改了这些之后还是WA……如果这就AC了也就不会有这篇日志了……

于是我看了一下Discuss,然后里面有人说……新郎新娘也会跟别人有奸情(基情、百合)……然后我没考虑到……靠……这题目太2了吧……加了一条从新娘到新浪的边,AC~2-SAT基本能写了~

阅读全文

POJ3683

http://acm.pku.edu.cn/JudgeOnline/problem?id=3683

2-SAT的题目,专门找的2-SAT来练的,早就想练一个需要输出结果的2-SAT了,一直没空,当时想的是干脆写好再睡觉……结果是我的午觉报废了……

题目其实不是很难的,赤裸裸的2-SAT,写好之后,提交,WA……

检查了一下程序,发现了一个错误,循环的初始错了,修改,还是WA

找了几个测试数据,全部是对的……

接下来又找到一个地方染色顺序搞错了,修改,还是WA

然后又发现2-SAT标程里面比我多了一个colordfs,加上去,继续WA……

后来发现我的判断时间相交的程序跟网上找的程序不太一样,干脆试了一下,居然就过了……

然后还原,发现及时没有colorDfs这个过程还是能够AC的,不过其他地方就是实实在在的错误了……

这个地方倒还好……

话说关于相交,当时为了保险起见特地写得比较长,显得不容易错……

int ret = false;
if(tt[i][0] > tt[j][0] && tt[i][0] < tt[j][1])
ret = true;
if(tt[i][1] > tt[j][0] && tt[i][1] < tt[j][1])
ret = true;
if(tt[j][0] > tt[i][0] && tt[j][0] < tt[i][1])
ret = true;
if(tt[j][1] > tt[i][0] && tt[j][1] < tt[i][1])
ret = true;

return ret

这是我的……

return (tt[i][0] < tt[j][1] && tt[j][0] < tt[i][1]);

下面的是找来的……

一直想不通为什么不对

写了个rand()的程序专门测试,也没发现错误(后来发现rand()的程序居然写错了……)

各种悲剧的……

最后发现当两段东西相等的时候我的程序要出错……

搞了1个多小时才发现这么个东西……

脑子果真犯2了……

悲情的……

没有午觉的关系吧……脑子抗议了XD

不过一直还是有疑惑ColorDfs到底要不要加上去嘞……

话说2-SAT的程序真是死长死长的……

阅读全文

hrbeu1220

http://acm.hrbeu.edu.cn/index.php?act=problem&id=1220

热身赛的一道题目

看了题目直觉告诉我是KM算法- -虽说我实际上没写过KM算法……类似匈牙利算法的那个啥吧- -

于是就现学现卖写了个KM算法,最终结果是TLE……

比赛结束了,没有放弃,继续做。先是想验证一下我的KM到底对不对,百度了一下,在POJ找到一个KM的题目,小改了一下,提交,AC(事后证明其实那个代码是有问题的……POJ的数据太弱了……)

于是百度了一下,发现这道题目居然是07年的一道老题目- -而且找到了一个可以AC的代码,看了一下那个代码,发现跟我的代码居然是出奇地相似……悲剧……

于是就开始了我的大家来找茬旅程……

找了2个小时的茬,改了N多地方,最后把变量名,函数名都跟着改了……还是不行……悲情的……

最后的最后发现有一个j打成了i……悲剧……按ZSM的话说……是该控制一下APM了……

改了之后终于AC了,于是往回退

找到之前提交的代码,改了一下,发现压根就没有这个错误,也就是说这个错误是找茬的时候弄进去的……大悲剧了……

于是找啊找,突然发现slack的的实现是不一样的!马上改掉,AC!

看来被百度百科里面的代码误导了……而且居然在POJ还能够AC……悲情

不过这么一晚上折腾下来对KM算法算是很熟悉了~感觉还是很值得~~

阅读全文

HDU2429

http://acm.hdu.edu.cn/showproblem.php?pid=2429

前年一场网络赛的题目- -

单单写出递推式其实挺简单的,不过N很大,显然不可能递推

不知道怎么的突然脑子灵机一动想到了用矩阵- -

把递推式用举证表示出来

然后利用二分加速幂……

具体做的时候脑子不够清晰,细节感觉把握不住,感觉答案在面前晃啊晃的就是抓不住,WA了11次……悲情的……不过总算是做出来了……

阅读全文

HDU3362

http://acm.hdu.edu.cn/showproblem.php?pid=3362

最近感觉很悲剧啊……话说这道题目其实也不难,就是一个状态压缩DP,阶段划分还是挺明显的,不过有一个特殊情况就是只有一个点的时候要注意

没有想到特殊情况还算情有可原吧,没想到用DP就是太悲剧了……马上就网赛了- -

大概说一下方法吧

18个点,总共就是2^18个状态,然后划分阶段就是以已经固定的点的个数划分,具体实现的时候可以用类BFS

阅读全文