解決問題:
N個男的和M個女的,已知道每個男的只能接受哪些女的,求最多能夠匹配多少對情侶?
思路:
1.只要求出有多少個男的找到對象即可。
2.遍歷所有男的,對于每個男的做以下處理(3~5),最后進(jìn)入6
3.隨便找一個他能夠接受的女的,判斷這個女的是否被“挑選”過了,沒挑選過的則設(shè)置為挑選并進(jìn)入4,否則繼續(xù)找下一個女的,找遍所有都是挑選過的則進(jìn)入5
4.判斷這個女的是否有男朋友了,沒有就直接和上述的男的進(jìn)行匹配,如果有的話(假設(shè)她的男朋友是A),則對A進(jìn)行3的操作,如果該操作返回的是真,則說明這個女的可以和男的匹配,而A和另外的人匹配。返回真。
5.返回假
6.如果該男的找到女的,則最大匹配數(shù)+1.
沒說清楚,配合代碼吧,很簡單的一個模板。
#include <stdio.h>
#include <string.h>

int n,m;
int sum;
int p[201];
int b[201];
int map[201][201];

bool path(int cow)


{
int i;
for(i=1;i<=m;i++)

{
if(b[i]==0 && map[cow][i] == 1)

{
b[i] = 1;
if(p[i]==0 || path(p[i]))

{
p[i]=cow;
return true;
}
}
}
return false;
}

int main()


{
int i,j;
while(scanf("%d%d",&n,&m)!=EOF)

{
sum=0;
memset(map,0,sizeof(map));
memset(p,0,sizeof(p));
for(i=1;i<=n;i++)

{
int a,b;
scanf("%d",&a);
for(j=1;j<=a;j++)

{
scanf("%d",&b);
map[i][b] = 1;
}
}
for(i=1;i<=n;i++)

{
memset(b,0,sizeof(b));
if(path(i))
sum++;
}
printf("%d\n",sum);
}
return 0;
}

下面嘗試用鄰接表來解決類似的題目,但是如果不釋放內(nèi)存的話,會MLE,而通過free釋放內(nèi)存又會出現(xiàn)TLE錯誤,太囧了。。。良智說用STL的vector應(yīng)該可以處理這個問題,回頭再用vector,今天先發(fā)free的做法,雖然過不了~~
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct edge{
int to;
edge* next;
};
edge list[101];
int p,n;
int par[301];
int b[301];
struct edge* temp;
struct edge* e;
bool path(int person)
{
struct edge* e = list[person].next;
while(e)
{
if(b[e->to]==0)
{
b[e->to] = 1;
if(par[e->to]==0 || path(par[e->to]))
{
par[e->to]=person;
// printf("%d__%d\n",e->to,par[e->to]);
return true;
}
}
e = e->next;
}
return false;
}
int main()
{
int i,j;
int a,t2;
int t;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
scanf("%d%d",&p,&n);
{
int ans = 0;
//memset(map,0,sizeof(map));
memset(par,0,sizeof(par));
for(i=1;i<=p;i++)
{
scanf("%d",&a);
//list[i] = (struct edge*)malloc(sizeof(edge));
struct edge* head = (&list[i]);
e = head;
while(a--)
{
scanf("%d",&t2);
temp = (struct edge*)malloc(sizeof(edge));
temp->to = t2;
e->next = temp;
e = temp;
}
e->next = NULL;
e = head;
/*
while(e)
{
printf("%d__%d\n",e->from,e->to);
e=e->next;
}*/
}
for(i=1;i<=p;i++)
{
memset(b,0,sizeof(b));
if(path(i))
{
ans++;
}
else
{
printf("NO\n");
break;
}
}
if(ans==p)
printf("YES\n");
for(i=1;i<=p;i++)
{
e = list[i].next;
while(e)
{
temp = e;
e=e->next;
free(temp);
}
}
}
}
}
return 0;
}
posted @
2010-05-16 00:56 ACong 閱讀(191) |
評論 (0) |
編輯 收藏
如果我們只是做一個單機(jī)版的swf,與世隔絕,那么完全不會接觸到接下來我們要說的這么多東西。。??梢娞岣邔δ沩椖康囊笫鞘鼓銓W(xué)習(xí)更多知識的方法。
最常見的,我們有這樣一個主swf(為了簡單說明,再假設(shè)只有這么一個swf),另外我們有很多資源:jpg,png,xml,txt,swf等等,我們將之放在一個文件夾Resource下,然后將Resource和主swf放在同一個目錄下,然后我們通過這個swf加載、訪問這些資源,我們發(fā)現(xiàn),非常沒有問題。
然而,當(dāng)我們最終需要將這個swf放在網(wǎng)頁上,并且將那些資源都放在網(wǎng)頁上,那么他們最好還是跟本地一樣的文件結(jié)構(gòu)存放,但是我們知道,網(wǎng)頁上的swf肯定不會自己跑出來顯示,肯定是要網(wǎng)頁來加載他,在網(wǎng)頁中通過"***.swf?p=...&p2=.."這樣的方式來調(diào)用這個swf和傳參數(shù)。如果這個網(wǎng)頁也是和swf放在同一個文件夾下,那也是沒問題的??墒俏覀冇锌赡軙泻芏噙@樣的網(wǎng)頁,都放在一個文件夾很難管理,于是我們將他們放在不同的文件,這就會導(dǎo)致這樣的問題:A網(wǎng)頁是放在"../1/2/A",B網(wǎng)頁是"../5/5/B",那么URLRequest的默認(rèn)路徑是哪個呢?是主swf所在的位置么?錯,其實(shí)是看具體調(diào)用它的網(wǎng)頁的地址,例如A調(diào)用時,URLRequest默認(rèn)路徑是"../1/2/",這樣的話,如果我們URLRequest()時只會在A或B下面找,而不會在swf所在的目錄中找,自然找不到。所以我們的做法是:獲得主swf的絕對路徑,將之作為URLRequest的路徑。要想獲得該swf的絕對路徑,可以這樣:test = stage.loaderInfo.url; 另外我們要將文件名去掉:
test .slice(0,test.lastIndexOf("/")+1);理論上這在本機(jī)上也行得通,但是實(shí)際上是:顯示安全沙箱出錯或者是加載資源出錯。為什么呢?
看看這個例子就知道了:
在本機(jī)上,我們運(yùn)行swf,得到的test的值為file:///C://test/test.swf,路徑也就是file:///C://test/
在本機(jī)上,我們運(yùn)行同個目錄下的html文件,發(fā)現(xiàn)沙箱問題、加載問題等等問題,test的值是file://C:\test\,這就難怪他找不到了
于是我們要改成:
test .slice(0,test.lastIndexOf("
\\")+1); 注意,前面的\只是轉(zhuǎn)義字符,實(shí)際上就是讓路徑遇到最后一個"\"時截止。這樣的話按道理本機(jī)運(yùn)行swf會有問題,但是實(shí)際上卻是沒有問題。。。
由于之前這個問題一直纏繞著我,導(dǎo)致我將它和安全沙箱問題混淆了,以為安全沙箱是多么恐怖的事情。
其實(shí)安全沙箱很簡單:
當(dāng)兩個不同文件夾下面的文件(這兩個文件至少一個是swf)要通信時,會出現(xiàn)安全沙箱問題??捎孟旅娴娜我庖粋€方法解決:
1.在swf里面通過Security.allowDomain("另一個文件的地址和名字");
2.在另一個文件所在文件夾下建一個crossdomain.xml,里面寫上:
<cross-domain-policy><allow-access-from domain="允許訪問的對方的地址和名字" /></cross-domain-policy>
3.如果這兩個文件中一個是網(wǎng)頁的話,可以在網(wǎng)頁調(diào)用swf的標(biāo)簽處加上:allowScriptAccess="允許訪問的對方的地址和名字"
4.萬不得已、僅在平時調(diào)試時:在C:\windows\system32\Macromed\Flash\FlashPlayerTrust 下面,新建一個隨便的txt文件,里面將你要設(shè)置為同個域的文件名(包括路徑),每個一行寫在里面,然后將文件改后綴為.cfg(其實(shí)txt應(yīng)該也沒問題)。
posted @
2010-05-14 17:40 ACong 閱讀(763) |
評論 (0) |
編輯 收藏
1.一個fla想要使用另一個fla的庫元件,方法是文件-》導(dǎo)入-》打開外部庫,然后就可以將自己想要用到的新元件拖到正在使用的fla中了。
2.當(dāng)項目要更新資源的時候,可以通過上述方法,然后用新元件覆蓋掉舊元件,方法很笨重:改掉原來元件A的名字,將新元件改為元件A原來的名字,這種只適用于需要導(dǎo)出為AS對象時,如果只是普通元件,并且這個元件有被其他地方引用到,那么Flash表現(xiàn)得很智能,當(dāng)你修改一個元件時,會把其他調(diào)用到他的地方也隨之改動,解決方案也很笨重,到那個元件下面,點(diǎn)編輯,選中元件,點(diǎn)左邊屬性里面的更換,換為新的元件。
3.關(guān)于遮罩:遮罩就是畫一個形狀,然后將一堆東西放在這個層下面,那么這個形狀的部分都是透明的,大家看得到,其他部分都是非透明的,大家看不到。如果你想將里面一個圖層的東西跟遮罩分開,只需要將它移到遮罩外并且是下邊(上邊的話我會遇到問題。。)
4.關(guān)于AS代碼和Flash庫元件的分離問題:到底是要用庫元件呢,還是要用代碼中的對象好呢?到底是要在庫元件中調(diào)好位置,還是在代碼中調(diào)好位置好呢?到底一個混合的元件里面,那些東西該用代碼,那些東西該用CS4呢?
posted @
2010-05-13 16:12 ACong 閱讀(350) |
評論 (1) |
編輯 收藏
(本文摘自http://hi.baidu.com/flex101/blog/item/f8a87bf7c21d0ed2f3d38518.html)
在AS中使用json其實(shí)并不是一個必須或是很好的選擇,因?yàn)锳S對xml的解析已經(jīng)很不錯了,但是為什么可以考慮使用
json呢,有以下幾點(diǎn):
json是介于單純的文本方式(如:
- firstName=Brett&lastName=McLaughlin&
email=brett@newInstance.com)和xml(<request><firstName>Brett&
lt;/firstName><lastName>McLaughlin<
/lastName><email>brett@newInstance.com</email><
/request>)中間的一種格式,他具有文本和xml的中性優(yōu)勢:數(shù)據(jù)量小和清晰的數(shù)據(jù)格式。
- json是JavaScript Object
Notation的簡寫,那么意思就是說他是來自于javascript的東西。因?yàn)楝F(xiàn)在ajax的流行,大部分網(wǎng)站會采用ajax的模式和構(gòu)架,那么
json會是一個數(shù)據(jù)傳輸?shù)氖走x(文本方式太簡單,要是大數(shù)據(jù)量的時候無法理解,xml的方式數(shù)據(jù)量大,在解析的時候會增加服務(wù)器負(fù)擔(dān)),那么要是一個網(wǎng)
站從ajax構(gòu)架的基礎(chǔ)上出一個flex/flash版的界面的時候使用json會最少地減少服務(wù)器端的程序改動。
- 服務(wù)器端現(xiàn)在有成熟的JSON解析代碼(因?yàn)镴SON運(yùn)用太廣泛了),那么在開發(fā)的時候也不用擔(dān)心服務(wù)器
端的解析。
下面就介紹一下adobe的官方的json類的用法
下面是教程,比較簡單:
1、服務(wù)器端來的json
怎么樣獲得服務(wù)器端的json我就不說了吧(就是通訊),那么得到的應(yīng)該是一個字符串,存入變量serverJSON,使用方式如下:
程序代碼
import json.*;
//json格式字符串 存入變量:serverJSON;
var serverJSON:String = '{ "programmers": [{ "firstName": "Brett",
"lastName":"McLaughlin", "email": "brett@newInstance.com" },{
"firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com"
}, { "firstName": "Elliotte", "lastName":"Harold", "email":
"elharo@macfaq.com" }],"authors": [{ "firstName": "Isaac", "lastName":
"Asimov", "genre": "science fiction" },{ "firstName": "Tad", "lastName":
"Williams", "genre": "fantasy" },{ "firstName": "Frank", "lastName":
"Peretti", "genre": "christian fiction" }],"musicians": [{ "firstName":
"Eric", "lastName": "Clapton", "instrument": "guitar" },{ "firstName":
"Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }]}'
//開始使用
var json:Object = new Object();
json = JSON.decode(serverJSON);
trace(json.programmers[0].firstName);//輸出:Brett;
json就是一個對象了,簡單吧。
不是吧這么簡單。其實(shí)轉(zhuǎn)變后就成為一個對象了,可以通過點(diǎn)語法來訪問這些值了。XML靠邊去。
2、本地對象做成JSON
你要是能自己拼出JSON字符串也可以,不過我們是在面向?qū)ο蟮氖澜绨?,那么我們都是對象啊,到時候?qū)ο笾苯泳涂梢詠碛昧恕?br>
舉一個例子:
程序代碼
import json.*;
var myObject:Object = new Object();
myObject.ab = "adfsdf";
myObject.cd = Math.random();
trace(JSON.encode( myObject
));//輸出:{"ab":"adfsdf","cd":0.0599129400216043}
這樣就可以給服務(wù)器了。
總結(jié):就兩個方法,JSON.decode(String),JSON.encode(Object),有這么簡單的方式實(shí)現(xiàn)傳輸量小,而且簡單的數(shù)據(jù)格
式,我們?yōu)槭裁催€不用呢?
其實(shí)XML自然也有他自己的強(qiáng)勢,當(dāng)一個結(jié)構(gòu)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)出現(xiàn)的時候,這個時候JSON就很難搞定了,XML就是首選了。
posted @
2010-05-11 15:50 ACong 閱讀(2148) |
評論 (0) |
編輯 收藏
前提當(dāng)然是安裝了SVN。
然后,最簡單的方法是隨便新建一個文件夾,然后右鍵-》SVN-》在此建立檔案庫 這樣就創(chuàng)建好了以后所有版本存放的地方了。
然后到項目以后要工作的地方,新建文件夾,檢出,檢出的地址就填file:///后面加上上面說的檔案庫的路徑,即可。
平時做的項目都是本機(jī)上調(diào)試的,可是一旦我們的swf要放到服務(wù)器上,然后訪問它,這個時候出錯了,我們想要看到各種輸出信息,有幾種方法:
1.在swf中多做幾個TextField,動態(tài)輸出各種輸出信息。
2.通過拋出異常來找出問題。
3.遠(yuǎn)程調(diào)試swf。方法是:在發(fā)布SWF時候,發(fā)布設(shè)置那里勾選“遠(yuǎn)程調(diào)試”,然后在FlashIDE里面,點(diǎn)擊上面的調(diào)試-》遠(yuǎn)程調(diào)試-》選擇AS3.0。然后就會等待和網(wǎng)站的連接。這個時侯訪問那個swf,然后右鍵就會發(fā)現(xiàn)多了個調(diào)試器的選項。(請確保你的播放器是裝了debug版本的,如果是傲游、IE、FireFox之類的瀏覽器,是要安裝相應(yīng)的插件。)
4.有些瀏覽器的某些插件是可以直接就在瀏覽器上面trace出輸出信息的。
將Flex項目(.zip格式)導(dǎo)入FB 3的方法:(前提是裝了阿帕奇)
File-》Import-》找到那個.zip文件-》next-》隨便填,待會改~~
在左邊工作區(qū)看到項目了,右鍵-》屬性-》找到Server端-》將Root folder地址填寫的是你本機(jī)上阿帕奇下面新建的一個項目文件夾,Root URL則是對應(yīng)于網(wǎng)上的地址(類似于IIS的虛擬目錄中具體地址和網(wǎng)絡(luò)地址的對應(yīng)),可以填http://127.0.0.1/目錄名
這樣子就會將.zip生成的各個文件存放到Root folder下面,然后當(dāng)你調(diào)試時,就會通過Root URL在瀏覽器中打開。
posted @
2010-05-11 13:33 ACong 閱讀(986) |
評論 (0) |
編輯 收藏
對于沒有寫過很多面向?qū)ο蟪绦虻娜藖碚f,TC是很難入門的,太多東西和C不同了。
好在我已經(jīng)接觸了很多面向?qū)ο?,所以參考下別人的做法,順帶溫習(xí)了下VC和STL,交了一道300分的題,拿了100分。。。
posted @
2010-05-10 22:38 ACong 閱讀(143) |
評論 (0) |
編輯 收藏
原來沒想著能去觀摩比賽的,比賽前幾天,才被告知能夠隨大隊一起去。
周六去注冊報名試機(jī)和做阿里巴巴的PK,我沒事做,在教練室閑著。其他高校很多人留在那里做阿里巴巴的PK,我們懶得做,跑去玩和吃雪糕了,等到鐘了就去吃自助餐,吃得好飽,據(jù)郭老說,人均標(biāo)準(zhǔn)是60元??偟膩碚f,我們不是去吃東西,我們是去學(xué)習(xí)、進(jìn)步、交流的,我根本不記得我吃了七八個肉丸、十多只茶葉蝦、四五塊鮮嫩雞肉、四個小蛋糕、一碟拉皮、豬骨玉米湯、紅棗蓮子湯、一碗豆芽豬紅、牛腩、香蕉西瓜番茄若干、可樂兩杯、雪碧一杯、紫番薯兩塊,我只記得人山人海以及阿里巴巴PK比賽的趣味性。
第二天比賽,早早過去,在教練室一邊看他們比賽,一邊記錄下現(xiàn)場報告,可惜3個小時后電腦沒電了,所有插座都被老師用光了~~只能看起題目來,發(fā)現(xiàn)我自己來做,也是只能做出3道。。。囧
很可惜的是,79名就能夠拿到三等獎,良智他們隊85名,主要是在K題提交了幾次,或者說E題沒做出來。其他隊更是在120名之后~
事后評判長的題目分析是這樣的:
A題:水題,全場都過。
B題:水題,僅有幾支隊伍沒過。
C題:網(wǎng)絡(luò)流+二分答案。
D題:
E題:右上角開始搜索。
F題:中國剩余定理變型+高精度。
G題:博弈,判斷兩端端點(diǎn)或者用SG理論。
H題:
I題:
J題:枚舉、DP都行。
K題:BFS、智權(quán)的最長路徑、DP都能過。
椰子的弟弟他們隊伍拿到了十六名??粗鴪錾夏切┠锚劦呐H耍矣X得我們更應(yīng)該覺得熱血沸騰,想方設(shè)法超越他們。難道我們只想著看著別人在我們面前打機(jī)而看不過別人在我們面前拿獎?
我相信他們在接下來的區(qū)域賽能夠表現(xiàn)得很好。那也是能夠讓學(xué)校矚目的機(jī)會。實(shí)在不行就當(dāng)是次旅行也行吧?據(jù)說最近的賽區(qū)是在武漢。
以上是我們學(xué)校的比賽總結(jié),下面看看本次冠軍隊伍的總結(jié),轉(zhuǎn)自中大論壇逸仙時空:
http://argo.sysu.edu.cn/bbscon?board=ACMICPC&file=M.1273582283.A
發(fā)信人: litexavier (Xavier), 信區(qū): ACMICPC
標(biāo) 題: GDCPC 2010 Summary @ SYSU_Stellation
發(fā)信站: 逸仙時空 Yat-Sen Channel (Tue May 11 20:51:23 2010)
自blog截出來的,砍掉了一大段東西,將就著看吧。
另外已將題解劇透,有想明年做GDCPC2010的忽略此文好了。
——ANALYSIS——
按照規(guī)矩,先來說下這次比賽的簡單題解:
A: 在n x n x n的盒子中,放m x m x m的木塊,問最多放多少塊木塊。
答案應(yīng)該很顯然吧。
B:一開始序列S={1..N},P={},然后每次P = P + S,S刪掉最小的M個元素,如此循環(huán),直
到S={},問P中第K個元素是什么。
簡單的計數(shù)問題。等差數(shù)列解之即可。
C:給出M種產(chǎn)品,以及每種產(chǎn)品的個數(shù)。給出N個檢查員,每個檢查員能檢查給定種類中若
干產(chǎn)品的一個,但是每個產(chǎn)品只能由一個檢查員檢查。并且檢查每個產(chǎn)品的時間是一樣的
。問最少花費(fèi)多少時間才能檢查完所有產(chǎn)品。
構(gòu)造一個流量圖:如果檢查員A能夠檢查產(chǎn)品B,那么在A,B間連一條流量為無窮大的邊,所
有產(chǎn)品到匯點(diǎn)連一條以產(chǎn)品個數(shù)為流量的邊。那么,如果已知最少花費(fèi)時間為T,那么就從
源點(diǎn)連一條流量為T的邊到每個檢查員上。這個圖的意義很明顯:“所有檢查員在T時間內(nèi)
檢查完所有產(chǎn)品”的充分必要條件為“該圖的最大流等于產(chǎn)品總數(shù)”。那么,接下來只要
二分T即可。
D:給出N個點(diǎn),試確定兩個正方形,滿足:(1)所有給定點(diǎn)都在某個正方形內(nèi);(2)正方
形的中心(對角線連線的交點(diǎn))必須在某個給定點(diǎn)上;(3)最大的正方形的面積最小。
二分正方形的邊長L。然后根據(jù)鬼才知道的某個單調(diào)性掃描判斷出用兩個長度為L的正方形
能不能滿足題設(shè)。
E:楊氏矩陣上的一些操作。
做法都固定了吧。
F:給出A和B兩個序列,試找出一個最大的Y和最小的X,滿足X = Ai ( mod Bi * Y ),for
each i。
首先因?yàn)?X = Ai + Ki * Bi * Y = Aj + Kj * Bj * Y,于是必有 Ai = Aj ( mod (Bi,B
j)*Y ),即 (Bi,Bj)*Y | Ai-Aj。于是Y被確定下來,接下來的事情就只是中國剩余定理了
。
G:給定一個無向圖G。問經(jīng)過G中給定的X個點(diǎn)和Y條邊的最小花費(fèi)是多少。
由于X和Y很?。╔+Y<16),于是一個簡單狀態(tài)壓縮動態(tài)規(guī)劃即可。注:別忘了做預(yù)處理。
H:給出N個總長度不超過300,000的關(guān)鍵字。并且,給出M個文本,每個文本的長度為L。對
于每個文本,求出該文本出現(xiàn)的關(guān)鍵字個數(shù)S,然后用S替代下一個文本的"0",并輸出S。
經(jīng)典自動機(jī)。需要注意的是要延遲處理關(guān)鍵字個數(shù)的統(tǒng)計,總之,是個細(xì)節(jié)題,要仔細(xì)分
析每步的復(fù)雜度。
I:無愛的博弈題啊。
SG值可以搞定,大概。不知道SG值是何的可以搜Game Theory這書。
J:給出N個二元組(v,c),從中選出K個,并確定順序,使得給定函數(shù)的值最大。注意:c <
1。
按照 v / (1-c) 排序。然后順序就確定了,之后就是一個簡單的動態(tài)規(guī)劃問題了。
K:打地鼠游戲。已知地鼠出現(xiàn)的時間,并且規(guī)定錘子每單位時間只能移動到相鄰的地洞上
,并且擊打操作是不需要時間的。問最多打到幾只地鼠。
簡單的動態(tài)規(guī)劃題目。
——????——
開場后,老樣子,db從A開始,我從K開始,趙牛中間。db第一時間讀完A題,并很快開始c
oding。我讀完了K,算了下復(fù)雜度,剛好的樣子。于是又一道水題到手了。db交A了之后,
我開始敲K。不久之后A返回Yes,然后db的B就在隊列中了。敲完的K的代碼沒過樣例,離線
debug了下,發(fā)現(xiàn)是初始化狀態(tài)搞錯了。改之,返回第二個Yes。再來db連續(xù)開了B,E,C三題
,都是很順利的過掉了。
我下來之后,趙牛扔了D給我。這時候看了下時間——才過了一個半小時。比賽的時候還未
知這是一個大坑來著。就這樣,我一直想,一直想,一直想……頭腦各種混亂……
拋開這個僵尸進(jìn)程不談,我們來說趙牛。
趙牛在閱遍大半版的題目后發(fā)現(xiàn)了第一個看起來能做的題目——I。才推了不到一會,趙牛
很堅定的說:“我來敲I ”。I就這樣accepted了。再之后看時間還有好久,我就直接把一
個看起來像是動態(tài)規(guī)劃的題目J(不過有個序的問題需要證明)扔給了趙牛。他看后沒等我
反應(yīng),直接上去搶機(jī)器了。不過很詭異的是,直到趙牛敲完J,還沒人過這個所謂的簡單題
。到趙牛剛要交時,才發(fā)現(xiàn)第一個accepted這題的隊伍。然后,不出所料,J一次提交即返
回Yes。
因?yàn)檫@時我們隊伍已經(jīng)8題,領(lǐng)先第二名2題之多。所以剩下的時間就交給趙牛研究他的F。
雖然趙牛英勇無比地再次在現(xiàn)場推導(dǎo)出中國剩余定理的公式,但是難奈BigCowZhang的陰險
的數(shù)據(jù)使然,趙牛陷入了苦戰(zhàn)。
回頭看db這邊。
db投出的超高速直線球三好一壞不僅起到了穩(wěn)定軍心的作用,同時我們也確立的巨大的罰
時上的領(lǐng)先優(yōu)勢。他下來之后,我將 H題的題意說給他看,并說了下大概做法。當(dāng)然,我
相信他也是會的——畢竟雅加達(dá)那次比賽我們就栽倒在一道差不多的題目上面。在三次TL
E之后,H終于順利返回Yes。3個小時之后的第8道題終于accepted。
然后也不知是我們太放松還是如何,我們一直堅信G是一個節(jié)點(diǎn)規(guī)模為100的TSP問題。于是
我便拉db來跳火坑(D 題)。
期間我們許久沒出題,甚至郭老師都忍不住送食物過來了。
最后半個小時,雖然db回過頭看了下G發(fā)現(xiàn)我們?nèi)x錯題了,然則為時晚矣。趙牛的F也被
完美的卡到死。
至于D題?……(……(……))
posted @
2010-05-10 21:33 ACong 閱讀(940) |
評論 (8) |
編輯 收藏
已確定人員:
ACong,Lemo(已通知),小七(已通知),Jialiang(已通知),打醬油(已通知),小熊夫婦,Succeed(已通知)
全部人員最終都出席了,另外小七找多了Kuangcao加入,合計9人。
流程安排:
早上9點(diǎn)起床,10點(diǎn)在華師地鐵口集合。
(決定去客村好又多買燒烤的東西,結(jié)果11點(diǎn)30分才買完。)坐地鐵三號線經(jīng)過8站到達(dá)地鐵市橋站B出入口下,到光明北路站(番禺)
轉(zhuǎn)乘番禺16路(坐10站)到大夫山森林公園總站(南門)下。
(由于對光明北路的不熟悉,導(dǎo)致花了耽擱了30分鐘)預(yù)計11點(diǎn)到大夫山門口,一起去租自行車(由ACong負(fù)責(zé)租車事宜)
(1點(diǎn)才到達(dá)大夫山,而且居然是南門~南門不是正門,我們只能坐觀光車去燒烤場)11點(diǎn)30分,從南門出發(fā),開始向山上燒烤場進(jìn)軍
(實(shí)際上是從北門坐觀光車去燒烤場)12點(diǎn),到達(dá)燒烤場,開始燒烤(由于不能夠預(yù)定燒烤場,所以要么早些去訂場,要么晚點(diǎn)去)
1點(diǎn),燒烤完,開始飯后慢慢騎車活動。
(事實(shí)上是1點(diǎn)30分開始燒烤,2點(diǎn)30分才燒烤完)1點(diǎn)30分,找到?jīng)隹煊州^安靜的地方,開始玩三國殺(對于不玩的家屬,可以讓他們一起騎自行車去玩,放風(fēng)箏、踢毽子、打羽毛球都可以)
4點(diǎn)30分,自由活動,并約好5點(diǎn)30分在南門集合。
(事實(shí)上是從2點(diǎn)30分一直殺到5點(diǎn),然后坐觀光車回南門,再坐公交車回去)6點(diǎn)一起到附近的餐廳吃飯
(中午燒烤大家吃得很飽,都不想吃晚飯,回去睡覺了,我們另外組織了部分人晚上打DOTA)7點(diǎn)回家。
8點(diǎn)到家。
本次活動總結(jié):
1.日期定在5.3這個相對于5.1和5.2來說人較少的日子,是很正確的,而且Lemo說5.3的天氣會很好,果然。
2.人員確定方面,由于我找的都是平時很玩得來的同事,所以在我打電話邀請他們的時候都很順利,果然本次出行全程都很愉快,歡聲笑語不斷。不過在燒烤的時候Lemo突然說到了公司各部門的重要性問題,導(dǎo)致有小小不愉快,小小怪責(zé)下他。另外基本上大家都很懶,又愛??幔豢咸釚|西,尤其是Lemo,全程空手,再次怪責(zé)下。
3.一開始由于擔(dān)心這些懶散的家伙放我鴿子,就沒事先買好燒烤物品(而且也擔(dān)心提前太久買不新鮮),結(jié)果將采購物資的任務(wù)分配下去后,買肉的小分隊買了一大堆加好調(diào)料的食物~~火腿腸又買少了~不過總體來說食物剛剛夠,都吃完了又很飽。在這里還是要表揚(yáng)下大家的,嘿嘿。但是我由于也太就沒去大夫山燒烤了,居然不知道大夫山節(jié)假日燒烤有提供燒烤物品的。。結(jié)果我們買了一堆沒用到的。。。在這里記錄下,他們那里提供的有:
木炭一箱+酒精一塊+燒烤網(wǎng)一張+燒烤叉8個+一次性碗8個左右+燒烤刷2個+報紙一份+火機(jī)一個+紙巾一卷。對于8個人左右的來說,已經(jīng)夠用了。另外我們買的能夠派上用處的有:
長牙簽(用來串火腿、雞翅膀等的,買了兩包,只用了一包,因?yàn)楸旧碣I的肉串帶有木枝了)、燒烤汁(兩瓶,用了一瓶)、孜然粉(一瓶,用了一半,很好的調(diào)味料)、芝麻油(一瓶)、蜂蜜(一瓶,用了六分之一吧)。
經(jīng)驗(yàn)教訓(xùn)+下次推薦:
8個人的話,可以租一個單爐,100元(非節(jié)假日是40元但是沒送燒烤包),另外他們送一個上述的燒烤包,還是挺值的。另外自己再買:兩份報紙、一卷紙巾、一包長牙簽(這個還能當(dāng)筷子)、8個一次性碗、一條一次性杯子、火腿腸(雙匯火腿腸*2~3包,大根的那種,就是在街邊看到賣燒烤的人賣的那種,不要買玉米腸和雞肉腸)、超市里面腌制并且串好的肉串(24根~32根)、雞翅膀(8個~12個,這個烤失敗的概率較高,另外如果買的是一小塊的中翅,那要小心掉進(jìn)燒烤爐里面)、香菇(一盒12個左右,好吃好烤又便宜)、青菜或者尖椒等若干、孜然粉一瓶、燒烤汁一瓶、芝麻油一瓶、蜂蜜一小點(diǎn)(買一瓶可以用很多次了)。
4.費(fèi)用合計:
9*14元(來回車費(fèi))+300元(超市買燒烤物資)+100元(租燒烤爐)+3*9*2(坐觀光車)+36(中途買水)=126+300+100+29+36=591元。人均65元。由于車費(fèi)大多是自己出的,所以每人需要交52元。哇塞。。這個比起唱K可是便宜多了。。。而且又健康又好玩得多,呵呵。
5.不足之處:
個人點(diǎn)火功夫小白、個人調(diào)料功夫小白、個人帶路能力有待加強(qiáng)。(呃,畢竟本次走的路線是我以前沒走過的,囧)
回想起來,5月2日早上,當(dāng)我看到窗臺照進(jìn)來的第一縷陽光時,我就對自己說:天氣這么好,一定要去大夫山。
結(jié)果我承擔(dān)了這次活動的以下工作:
人員召集和通知、流程安排、物質(zhì)清單設(shè)計、采購安排、路線安排。
由Success和Kuangcao承擔(dān)了點(diǎn)火安排。
由Kuangcao和小熊嫂子承擔(dān)了燒烤大廚工作。
posted @
2010-05-02 19:54 ACong 閱讀(347) |
評論 (0) |
編輯 收藏
一、素材篇
素材有三種,一種是美術(shù)提供的各種靜態(tài)圖片,對此我們要做的是將這些靜態(tài)圖片用腳本轉(zhuǎn)成swf為我們所用。另一種是在Flash創(chuàng)作工具(IDE)中自己創(chuàng)建,這部分需要用到的主要是FLash CS4的知識,如時間軸、圖層、遮罩、各種工具、補(bǔ)間、少數(shù)簡單動作等等。第三種是通過用AS3的繪圖API或者3D API去繪制資源,通常這種占內(nèi)存最小,并且擴(kuò)展性較強(qiáng),但是難度較高。
獲得以及對素材的加工處理工具有PhotoShop+其腳本、Flash IDE+JSFL腳本、AS3幫助文檔
通過PS的記錄動作可以執(zhí)行一些重復(fù)性事情。另外將圖片轉(zhuǎn)化為png-8的,可以減少將近一半以上的資源大小,代價是圖像邊緣有鋸齒,并且無半透明度。。
二、代碼篇
代碼分兩種,一種是插在時間軸上,一種是獨(dú)立做成類文檔。前者容易寫,但是擴(kuò)展和管理不好。后者易于管理、擴(kuò)展,邏輯清晰,但是和Flash IDE的交互不夠,通常我們會通過FB等其他開發(fā)工具來彌補(bǔ)這一點(diǎn)。
編寫代碼的工具有Flash IDE中的Flash 文檔、Flash IDE中的AS 3文檔、Flash Builder 4(以前是叫做FLex Builder 3)、FDT(我用的是Eclipse)。
三、結(jié)構(gòu)篇
盡量用面向設(shè)計模式的思想去組織你的模塊。另外就是擁有個人的類庫。(算法類庫、3D類庫、圖形特效類庫、網(wǎng)絡(luò)通信類庫、內(nèi)存管理類庫、文本處理類庫、聲音編碼解碼類庫)。
四、內(nèi)存篇
通常一個單打格斗游戲,可以做到swf只有3M左右,占內(nèi)存不超過100M,而且動作相當(dāng)華麗。另外還有些通過矢量圖制作的Flash網(wǎng)頁無交互游戲,能夠達(dá)到接近0內(nèi)存的消耗,且總資源非常小。
減少對內(nèi)存的消耗有這么些方法:
1.盡量用矢量圖。
2.對于圖片的話,可以通過BitmapByte格式來減少它存放在內(nèi)存的空間。
3.對于資源是swf的話,它對內(nèi)存的消耗是這樣的:每張圖片長*寬*4/1024,也就是說如果你有一張1024*768的圖片,盡管由于你把背景設(shè)置為透明,使得圖片大小只有10K,但是通過Loader讀到內(nèi)存,他的大小是1024*768*4/1024約等于2.8M。增長了將近300倍。(估計原因是透明點(diǎn)也是會在Flash中保存的,類似于0Xff000000。)
4.防止內(nèi)存泄露:當(dāng)對象不再需要的時候果斷置為null,每個偵聽器在它該remove的時候果斷remove,要刪除一個對象里面的所有子對象的所有引用,才能夠刪除該對象,定時調(diào)用GC執(zhí)行強(qiáng)制垃圾回收。一種方法是當(dāng)需要完全刪除該對象時,調(diào)用一個自定義函數(shù)rever,該函數(shù)將清空該對象的所有子對象、所有動態(tài)屬性、所有偵聽器。
5.沒有用到的東西盡量少加載到swf中。
6.對對象進(jìn)行引用時一定要想清楚。(局部變量如果被addChild到舞臺,也是會占內(nèi)存的)
posted @
2010-04-22 19:17 ACong 閱讀(175) |
評論 (0) |
編輯 收藏
PKU上面的1077是經(jīng)典題目——八數(shù)碼,在《人工智能》這門課中是重點(diǎn)的研究對象,引領(lǐng)前面幾章的內(nèi)容,可見其在搜索方面的典型性。
已知:3*3的格子,以及每個格子的數(shù)字(1~8和一個'x',兩兩不同),每次只能夠移動x那個格子,并且只能往左右上下四個方向移動
目標(biāo):某種狀態(tài),在該題中為
1 2 3
4 5 6
7 8 x
未知(所求):如何從給出的一個狀態(tài),經(jīng)過一系列的移動,到達(dá)目標(biāo)狀態(tài)
解決問題從提出問題開始:
1.已知和未知有啥關(guān)系?
答:目標(biāo)狀態(tài)是由已知狀態(tài)一步步移到的。
2.是否一定存在解呢?
答:從題目得知,有時候會得不到解(當(dāng)僅僅只有兩個數(shù)字不在原來的位置上時無解)。
3是否在以前遇到過類似的問題?
答:象棋上馬的走法,從一個點(diǎn)到達(dá)目的點(diǎn)的搜索過程,因此考慮可以用類似的方法來尋找答案,也就是搜索。
4.除了搜索還有其他方法可以解決這個問題么?
答:暫時沒有人發(fā)現(xiàn),
5.如何搜索?
答:從起始位置開始,向四個方向嘗試,一旦往一個方向嘗試了,則要防止呆會又往原來的位置嘗試的問題,于是除了一開始外,其他的每次最多只能往3個方向的嘗試。
6.如何判斷當(dāng)前狀態(tài)是否已經(jīng)是目標(biāo)狀態(tài)?
答:每行每列都和目標(biāo)狀態(tài)的比較。
好,我于是很快的寫出來一個DFS的程序(DFS不需要額外的空間,不需要記住狀態(tài)到達(dá)哪里,比BFS容易寫)
運(yùn)行后,發(fā)現(xiàn)出錯,通過用斷點(diǎn)調(diào)試了一會后,處理了幾個小錯誤后,遇到一個問題:
7.我的程序總是得不出結(jié)果。
答:因?yàn)镈FS的話,你必須要確定他會到達(dá)一個終點(diǎn)就回溯,問題就出在我的程序不會出現(xiàn)無路可走的情況,因?yàn)樗粫袛喈?dāng)前狀態(tài)是否已經(jīng)是之前走過的,所以會一步循環(huán)走下去,甚至明明一步就能到達(dá)目的地,他還是要走無限遠(yuǎn)的路,直到程序被迫跳出。
8.如何處理這個問題?
答:既然是因?yàn)檫f歸的無限深度,那我們就給他一個深度極限,當(dāng)?shù)竭_(dá)這個深度時,就返回。接下來的問題是:
9.這個深度該是多少?
答:一個深度就代表一步,八數(shù)碼的問題最多需要走多少步就一定能夠到達(dá)目標(biāo)呢?(注意,是一定),如果這個深度開太小了,有可能找不到解,如果這個深度開太大了,又會讓程序不斷遞歸下去。所以需要自己試驗(yàn)。
我先設(shè)了個100,發(fā)現(xiàn)可以得出結(jié)果,但是那個步數(shù)也就是100步左右(因?yàn)镈FS找到的路徑不是最短的,而是最靠近某一個方向的),和sample output的19步不同啊,于是我改成19步,結(jié)果出來的答案也是19步,只是和給出的不同,為了驗(yàn)證我的答案也是正確的,我撕了一張紙,在上面寫了個八數(shù)碼,并且按照我給出的步驟去走,最終確實(shí)到達(dá)目標(biāo)了,可見我的算法是正確的。
10.求的不是最短步驟,能行么?
答:再次檢查題目,發(fā)現(xiàn)并沒有要求最短路徑,并且題目顯示是Special Judge,可見應(yīng)該可以。
最終提交時,我把深度定為500(因?yàn)槎?000時我自己的程序崩潰了),居然一次性過了,花費(fèi)的空間是208K,時間是
875MS,再看一個師弟的提交,空間是9816K,時間是438MS,可見DFS和BFS的區(qū)別。
然后我又分別試了下將深度改為200,350,結(jié)果都是TLE,證明一個問題:
有時候花費(fèi)較長的時間一次性找到一個解,比花費(fèi)較短的時間而多次找不到解,要來得快。
|
|
posted @
2010-04-06 21:19 ACong 閱讀(192) |
評論 (0) |
編輯 收藏