杰拉斯的博客

归档:2012年4月月

[ACM_HDU_1421]搬寝室(动态规划经典问题)

杰拉斯 杰拉斯 | 时间:2012-04-06, Fri | 41,461 views
编程算法 

搬寝室

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7772 Accepted Submission(s): 2621

Description

搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2*k件过去就行了.但还是会很累,因为2*k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲劳度是和左右手的物品的重量差的平方成正比(这里补充一句,xhd每次搬两件东西,左手一件右手一件).例如xhd左手拿重量为3的物品,右手拿重量为6的物品,则他搬完这次的疲劳度为(6-3)^2 = 9.现在可怜的xhd希望知道搬完这2*k件物品后的最佳状态是怎样的(也就是最低的疲劳度),请告诉他吧.

Input

每组输入数据有两行,第一行有两个数n,k(2<=2*k<=n<2000).第二行有n个整数分别表示n件物品的重量(重量是一个小于2^15的正整数).

Output

对应每组输入数据,输出数据只有一个表示他的最少的疲劳度,每个一行.

(阅读全文…)

[大二课程设计开源]KTV管理系统(Swing界面,含源码)

杰拉斯 杰拉斯 | 时间:2012-04-05, Thu | 50,316 views
编程算法 

一些体会:

可能不少人对Java界面的印象就是两个字——难看,曾经我也不例外。刚开始接触Java开发的界面是高三头脑发热想用Flash做MMORPG网游时,因为自己美工不咋地,所以用了游戏资源提取器:

梦想世界提取器界面

当时就想,Java做的界面怎么那么难看,又因为听说C++效率比Java高,Java基本上不可能用来开发大型的3D网游,因此一直对Java兴趣缺缺,直到大一的时候看到了这篇文章:《Swing是一把刀》,才发现,Swing原来也可以这么华丽当时立马豪情万丈,废寝忘食地做出了人生中第一个Java作品畅之茗Java新浪微博客户端,不过因为代码在现在看来实在是幼稚的很,所以就不贴出来贻笑大方了。

好吧,回到正题,偷偷地引用一段话:“无论哪个UI技术,说到底都是在屏幕上画图,本质上都是画点、划线而已,只是有的用起来复杂,有的简单,有的功能强,有的功能弱。不过对于技艺高超者来说,给个邮票大的地方也能跳出激动人心的舞蹈,Flex不就是在Flash这块邮票上面不停的折腾么?这又和脚下的空间有多少关系呢?相比Flash/Flex这张小邮票,Swing则给了我们一个巨大的足球场。如果我们还是不能在这个舞台上吸引更多的观众,还是多反思一下自己的舞技吧,就算脚下的场地有点湿滑不平,我们也没必要喋喋不休。”

  • 如果用一个工具做不出好的作品,与其埋怨它差劲,不如反思一下为什么自己做不出好的作品。

大一的时候很喜欢用setLayout(null),然后用绝对定位来进行布局,因为觉得自带的布局管理器只能适应特定的几种模式,不能够随心所欲,可后来才意识到一个问题:绝对定位的布局在某些分辨率下正常,但换个屏幕分辨率可能就惨不忍睹了,后来才发现,其实布局管理器如果懂得怎么去用,怎么组合,也可以做出随心所欲的界面,更重要的一点是:自动适应不同分辨率。

  • 善用布局管理器。

虽说没有最好,只有更好,但我们就是需要一种吹毛求疵的态度去看待自己的作品,注重每一个细节,每一个用户体验,才能够做出超越自我的作品。

  • 追求完美。
虽然这体会一条比一条短,但其实最后一条才是我体会最深,让我自己都感到又爱又恨的特质,因为追求完美,才会有那些点点滴滴的提高,但也是因为追求完美,所以经常一个作品总是改了又改,还经常熬夜。。熬夜这习惯不好,一定要改掉!!(虽然已经说了很久了= =)

(阅读全文…)

[ACM_NYOJ_37]回文字符串

杰拉斯 杰拉斯 | 时间:2012-04-04, Wed | 18,102 views
编程算法 

回文字符串

时间限制:3000 ms | 内存限制:65535 KB
难度:4

描述

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。

输入

第一行给出整数N(0 接下来的N行,每行一个字符串,每个字符串长度不超过1000.

输出

每行输出所需添加的最少字符数

样例输入

1
Ab3bd

样例输出

2

(阅读全文…)

[ACM_ZOJ_1733]Longest Common Subsequence

杰拉斯 杰拉斯 | 时间:2012-04-04, Wed | 41,231 views
编程算法 

Common Subsequence
(最长公共子序列)

Time Limit: 2 Seconds Memory Limit: 65536 KB

Description

A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a subsequence of X if there exists a strictly increasing sequence of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = is a subsequence of X = with index sequence . Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.

The program input is from a text file. Each data set in the file contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct. For each set of data the program prints on the standard output the length of the maximum-length common subsequence from the beginning of a separate line.

(阅读全文…)