Posted on 四月 22nd, 2008.
庆祝一下,这道题AC之后得到了宝贵的0.4分,于是以4.4分的成绩拿到了1000名…整1000名啊…一个不差…截图就不发了…
这道题是一道挺弱智的DP,和冰峰文有些类似,比那个还要简单.dset[l, r]表示从l到r这一段是不是一个set,而dlist[l, r]表示l到r是不是list.然后转移的时候考虑全就可以.其中判断是set,除了特殊情况以外,只要判断l+1到r-1是不是list就行.但注意如果a[l],a[r]不是’{’和’}’,一定不是set.判断是list的复杂些,除了特殊情况(就是atom的情况),还需要判断这一段是不是set(set也是一个list).然后枚举中间的每一位,如果某一位是’,’,那么看它两侧的串是不是两个list,是的话就说明l到r也是list.
实现不难,不过写错了一点,把l+1打成了l+r.winsty说的没错,一定要小心啊…刷1Y率是关键…
{ SPOJ 384; Any fool can do it; FOOL - sqybi’s code - DP}program fool_sqybi; const nn = 200;
var a: string; times, cases, n: longint; dset, dlist: array[1..nn, 1..nn]of longint;
procedure flist(l, r: longint); forward;
procedure fset(l, r: longint); begin if l = r then begin dset[l, r] := […]
Read Full Post |
Make a Comment ( 2 so far )
Posted on 四月 21st, 2008.
求最大值最小,快排+二分答案.水题,不写题解.
1Y了,比较兴奋.
此题正好练习二分答案.发现在SPOJ上看别人AC哪道就做哪道也不是难事…不过这道题才0.1分…
{ SPOJ 297; Aggressive Cows; AGGRCOW - sqybi’s code - 快排+二分答案}//for my winstyprogram aggrcow_sqybi; const nn = 100000;
var cases, times, n, m, max, l, r, mid, ans, i: longint; a: array[1..nn]of longint;
procedure qsort(l, r: longint); var i, j, d, t: longint; begin i := l; j := r; d := a[(l+r) […]
Read Full Post |
Make a Comment ( None so far )
Posted on 四月 21st, 2008.
挺水的题目,不过文字游戏有些多.题解没什么可写的.给几组数据,自己拍去吧.
刚开始WA了N多次,结果把seekEoF改成EoF就AC了.
数据:
输入n_e_e_r_cJAVAjAVAn__e_r_cbad_StyleBad_stylejava__anotherlong_and_mnemonic_identifieranotherExamplec_identifiern_e_e_r_cn__e_r_cnEER_ci_iIi
输出nEERCError!j_a_v_aError!Error!Error!Error!Error!longAndMnemonicIdentifieranother_examplecIdentifiernEERCError!Error!Error!
附代码.
{SPOJ 1163; Java vs C++; JAVAC- sqybi’s code}//for my winstyprogram javac_sqybi; var s, ss: string; ch: char; upper: array[’a’..’z’]of char; lower: array[’A’..’Z’]of char; f1, f2: boolean; i, n: longint;
begin for ch:=’a’ to ‘z’ do begin upper[ch] := upcase(ch); lower[upcase(ch)] := ch; end;
while not EoF do begin readln(s); n := length(s); if […]
Read Full Post |
Make a Comment ( None so far )
Posted on 四月 21st, 2008.
同NOI06最大获利,多组数据.
程序略.
阅读(143 次)
Read Full Post |
Make a Comment ( None so far )
Posted on 四月 21st, 2008.
这道题的解法的确很强大啊,大概意思就是把每个数分为二进制位,然后每一位的xor都不互相影响而且每一位只有0和1两种状态.然后可以求最小割来解题.具体解法见Amber在2007年的论文,请点开页面下载.这道题在论文的第13页,这里不再赘述.
做题时不知怎么心血来潮把31写成30,于是WA了几次(开始还因为数组开小TLE了几次,怎么SPOJ不报RE…).还有就是给出的点的权值有可能是0,所以不能通过判断v1数组来判断某个点是不是给出的(这也是我的flag数组的作用).这道题排在Pascal第11.
SPOJ已经2.8分了,1295名…
{SPOJ 839; Optimal Marks; OPTM- sqybi’s code- 按照二进制位建图,最小切割最大流- Dinic}program optm_sqybi; const nn = 500; mm = 3000; tt = nn + mm * 2;
type TGraph = object edgeNum, s, t: longint; adj, next, capa, flow: array[-tt..tt]of longint; visit: array[0..nn+1]of boolean; head, place, dist: array[0..nn+1]of longint; q: array[1..nn+2]of longint; procedure addEdge(x, y, z: longint); […]
Read Full Post |
Make a Comment ( None so far )
« Previous Entries Next Entries »