解決問題:
N個男的和M個女的,已知道每個男的只能接受哪些女的,求最多能夠匹配多少對情侶?
思路:
1.只要求出有多少個男的找到對象即可。
2.遍歷所有男的,對于每個男的做以下處理(3~5),最后進入6
3.隨便找一個他能夠接受的女的,判斷這個女的是否被“挑選”過了,沒挑選過的則設置為挑選并進入4,否則繼續找下一個女的,找遍所有都是挑選過的則進入5
4.判斷這個女的是否有男朋友了,沒有就直接和上述的男的進行匹配,如果有的話(假設她的男朋友是A),則對A進行3的操作,如果該操作返回的是真,則說明這個女的可以和男的匹配,而A和另外的人匹配。返回真。
5.返回假
6.如果該男的找到女的,則最大匹配數+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;
}

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