2014年1月13日
摘要: 做完Victoria的舞会3,挑了vijos里强连通分量里面难度值最低的题目,也就是这道。先把第一小问做了,纯Tarjan,只是我学的时候的标程是用邻接表的,这题数据小于是用了邻接矩阵,两者之间的切换花了点时间,我天真地以为i0 then begin if v[i]=false then begin tarjan(i); if low[i]j) then begin inc(r[j]); inc(c[i]); end; top:=0; for... 阅读全文
posted @ 2014-01-13 20:08 Sky-Grey 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 这…本来想学习一下Tarjan算法的,没想到码都码好了发现这题不是求强连通分量而是简单的连通分量…图论基础都还给老师了啊啊啊!最后深搜通通解决!v标记是否被访问过,scc标记每个的祖先(本来想写Tarjan的才弄出这么奇葩个数组名字),w用于最后的统计。program vijos_p1023;var map:array[0..210,0..210] of longint; v,w:array[0..210] of boolean; n,m,t,i,ans,top:longint; low,s,scc:array[0..210] of longint;procedure sea... 阅读全文
posted @ 2014-01-13 10:51 Sky-Grey 阅读(433) 评论(0) 推荐(0) 编辑
2014年1月12日
摘要: 第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫。看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢?hash也很久没写了,导致自己测试的时候有两个点没过是因为hash弄错了。我的程序里f[x]= same[x] (xmax)总算,最后还是通过了。又是一道想不到思路就写不出的题。据说这题和食物链很像,那么食物链就是我的下一个目标~总感觉并查集是有点抽象的,我还没想到它怎么和树形结构具体联系起来。BTW,vijos的数据挺弱的…program vijos_p1112;const BLOCK=4000 阅读全文
posted @ 2014-01-12 16:48 Sky-Grey 阅读(964) 评论(0) 推荐(0) 编辑
2014年1月10日
摘要: 好不容易坑来了传说中的USACO精选,近100题我要是能做完就哈哈哈哈了…继今天学并查集连番受挫之后,决定写一写基础题。#0 负二进制 2014-01-10其实是想到就会做,不想到就不会做的题,数学渣渣在此,赶紧承认自己看了解题0 0……其实我自己对于负数的mod不是很熟…如果考场上出这种东西自己开个exam.pas弄几个mod负数div负数不就摸索出来了么…(其实我最开始的想法是,按正数除,除出来一个2^(2k-1)的就当成(-2)^2k+(-2)^(2k-1))program tyvj_p1022;var a:array[1..10000] of integer; x,i,t:lon... 阅读全文
posted @ 2014-01-10 21:40 Sky-Grey 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 寒假给自己定的第一个目标就是把并查集,Tarjan之类搞会。翻了翻笔记,发现并查集是2012年的6月30日学的…早就忘光了…今天敲题目的时候也吃了不少的亏呢…家族这一题就是并查集的标准题,第一次提交失误了,我的union子过程莫名陷入了死循环,我的f数组存在死循环,最后发现是find函数有个bug…我又跑去参考NOCOW了,只是觉得一直参考标程不是太好,毕竟比赛的时候得独立debug是吧…核心代码就是union子过程和find函数了,其实也没什么技术含量,思路比较要紧。过会儿去研究下,这个算法貌似还有什么优化来着~program vijos_p1034;var f:array[1..5000] 阅读全文
posted @ 2014-01-10 16:05 Sky-Grey 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 寒假的第一天,终于有空再写题目了,专心备战了。本想拿usaco上的题目练手热身,结果被磕住了T T。其实这是一道穷举题,一开始我在穷举a,b,但是怎么优化就是过不了Test 8,后来参照NOCOW上的解题弄了se和list两个数组,也算是终于通过了,这时候已经是Submission #7了。(啊,有两次是因为没开文件,一次是因为没打‘NONE’)总之,祝寒假的OI学习顺利吧~All or Nothing, Now or Never!program ariprog2;var se:array[0..62600*2] of boolean; list:array[0..62600] of l... 阅读全文
posted @ 2014-01-10 11:01 Sky-Grey 阅读(155) 评论(0) 推荐(0) 编辑
2013年11月30日
摘要: 0 0 虽然不知不觉做到了Section 1.4了,但是都没有把做题的想法和代码发到这里… 本来今天想从Section 1.2补起来然后发现之前做的题都忘了…(Name That Number那道题是今年3月20日做的,记得才怪呢。)做Clocks这道题可谓一波三折。题目很好懂,我也很自然地想到了广搜的算法——第三点数据就超时!加了优化,第六点又超时。没辙了,参考网上题解:(1)转的先后没有关系;(2)转4次等于没转。于是只要穷举T T。唯一让人欣慰的就是确定穷举算法之后一下子就写对了,从头写到尾都没再修改。提交全对的时候已经是Submission #8了。tt数组是各种转法,t数组用于0、1 阅读全文
posted @ 2013-11-30 15:10 Sky-Grey 阅读(235) 评论(0) 推荐(0) 编辑
2013年3月30日
摘要: 这题这遍做之前的N久前在mrzx里做到过…注意:不能一开始就贪心地判断是不是输出6(即无任何变化),必须按照1-7的顺序来…挺坑爹的。check过程用于判断当前操作过后的a是否与b相同。horizontal过程水平翻转。rotate过程顺时针90°旋转。print过程用于输出&结尾。细节决定成败啊…Transformprogram transformations;var a,b,a0:array[1..10,1..10] of integer; n,i,j:integer; c:char;function check:boolean;var flag:boolean; i,j 阅读全文
posted @ 2013-03-30 22:21 Sky-Grey 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 【问题描述】请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1次,在数20中出现了1此,在数21中出现了1次,在数22中出现了2次,所以数字2在该范围内一共出现了6次。Two#include #include us... 阅读全文
posted @ 2013-03-30 22:11 Sky-Grey 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。{水…………吐槽什么的,搞了半天就一个==打成了=…}Reverse#include #include using namespace std;... 阅读全文
posted @ 2013-03-30 22:09 Sky-Grey 阅读(155) 评论(0) 推荐(0) 编辑