Thursday, April 12, 2012

[Vim] Vim 5 分鐘快速入門

最近社團裡有人想用vim

那我就介紹一下基本用法
和怎樣拿來寫C程式最方便
先介紹一下Vim的兩種最簡單的模式:插入模式和命令模式
按i, a可以從命令模式進入插入模式
在其他模式按esc就可以回到命令模式

介紹常用命令:

上下左右:kjhl 或者直接用方向鍵
:q離開、:wq儲存並離開 :w 儲存 :q!離開但不儲存
x 刪除、u 復原
/往後尋找、?往前尋找、n 下一個、N 前一個
全文尋找並取代: :1,$s/word1/word2/g
dd刪除整行(常用!)、ndd(n是行數)刪除n行
yy複製整行、p 貼上在下一行
:!{cmd} 執行指令 (ex: :! gcc test.c)

常用設定
可以直接用:set設定 (ex :set autoindent)
或編輯設定檔~/.vimrc (Linux / Mac) $HOME\_vimrc

syntax on 語法高亮度表示
autoindent 自動縮排
cindent C/C++的自動縮排(好用!)
nu/nonu 顯示行號/不顯示行號
tabstop=4 
shiftwidth=4  (tab字元寬度)
com CMD(指令名稱 必須大寫) command (指令內容) 自訂指令 大概這樣
分享一下我寫C用的.vimrc

set cindent
set nu
set shiftwidth=4
set tabstop=4
syntax on
com C !g++ % -Wall -g #編譯C++
com CC !gcc % -Wall -g -ansi #編譯C
com R :!./a.out #執行
參考資料:http://linux.vbird.org/linux_basic/0310vi.php#vi_command

[GNU/Linux] Kernel 3.3 Ath9k link is not ready

前幾天升級kernel 3.3

發現無線網路不能連@@

看了一下log之後發現

ADDRCONF(NETDEV_UP): wlan0: link is not ready

上網google了一下

終於找到解法了!

https://bbs.archlinux.org/viewtopic.php?id=139365


$ sudo pacman -S linux-headers
$ wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2
$ tar -xv -f compat-wireless-2.6.tar.bz2
$ cd compat-wireless-2012-04-09
$ make
$ sudo make install
$ sudo make unload
$ sudo sync; sudo reboot #重新開機
這樣就OK了!

Sunday, March 25, 2012

[code] TIOJ - 1212 最遠距點對

http://tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1213

先隨便戳一個點(第一個)

找出離他最遠的點

再從那個點再做一次DFS

P.S. 這題是多測資...害我WA了好幾次= =

[code] TIOJ - 1463 打不倒的樹木人

http://tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1463

code應該很好懂

注意一下條件判斷就好了

Friday, March 16, 2012

[GNU/Linux] MATE themes in ArchLinux

用了一陣子的gnome3 實在綁手綁腳
也開始想念gnome2了
TOI爆了以後有時間 就來試試gnome2的fork---MATE Desktop Environment

安裝過程就看Archwiki就好 這裡不詳述
裝display manager 結果gdm、mdm(MATE display manager)都有問題= =
只有lxdm又快又穩定 不過長得太醜 懶得弄主題什麼的
最後決定直接用startx 這樣登入的時候也比較酷(?

用起來很順暢 遇到的問題也只有主題的部份
發現預設主題(ex: Clearlooks)的都不能用
無意中發現了解決方案:

這裡以經典主題——Clearlooks為例
$cd /usr/share/themes/Clearlooks
$ls
gtk-2.0  index.theme  marco-1 #會出現這三樣東西
$mv marco-1 metacity-1 #猜測是MATE把metacity改名為marco 
              #但主題程式未同步更改導致讀取不到主題檔案的錯誤
$cd metacity-1
$ls
marco-theme-1.xml
$mv marco-theme-1.xml metacity-theme-1.xml
$sudo vim metacity-theme-1.xml
#把標籤改成
#記得文件最後一行的關閉標籤也要改
這樣就可以用我最愛的Clearlooks了XD

Wednesday, March 7, 2012

[code] UPRC-1149 太空船(TOI初選2007pD)

http://zerosea.tfcis.org:8080/JudgeOnline/showproblem?problem_id=1149

這題最難的地方在於方向 (我是J睿捏我才會的)

1. 起點放入queue

2. 從queue拿出點 四周可以通行的點步數都+1

3. 固定方向把接下來的點都放入queue 直到不能放為止
    重點是要記得紀錄步數和把點戳成黑洞

感謝jghs1328幫我debug好久..

[code] TIOJ-1240 LIS but not LIS

http://tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1240

先sort但記錄原順序

對於每個s[i]拿最近且比他大的點

[code] TIOJ-1509 地道問題 (TOI初選2008pD)

http://tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1509

如果TIOJ又掛了的話= =
http://zerosea.tfcis.org:8080/JudgeOnline/showproblem?problem_id=1128

做第一次dijkstra -> 把邊反過來 -> 再做一次

P.S. 冏我都被J睿捏好玩的 不捏我都想不到...


[code] Uva-11069 A Graph Problem

http://uva.onlinejudge.org/external/110/11069.html
我太急了 一下子沒想出來就看別人code
這其實很好想啊...
我好廢啊= =
因為不能走到相鄰的點
中間也不能有地方能插入合法的點
所以只有兩種狀況
走到第n + 2個點
或是第n + 3個點

[code] Uva-10583 Ubiquitous Religions

http://uva.onlinejudge.org/external/105/10583.html
很簡單的Disjoint Set
最後輸出Case n: ans
C是大寫= = 害我WA了兩次
另外Uva真的是ANSI C..
註解只能用
/* This is a comment. */
不能 用
// Not allowed in ANSI C
害我吃了一次CE...

[code] TIOJ-1717 專案時程(TOI2010初選pB)

http://tioj.redirectme.net:8080/JudgeOnline/showproblem?problem_id=1717

戳入度(in-degree)為零的點下去DFS再取最大值