solaris 10.0下的gaim并不支持qq~~不是很方便~~網頁版的qq又實在太丑陋了~~而且很不方便~~安全性應該也不高~于是我還是下定決心裝一個gaim的升級軟件pidgin~~它支持更多的聊天模式
今天的最后一次嘗試~~成功了~~happy
在網上搜了很久很久~~參考了大家的安裝方法~但是還是有點些是要自己試一試的~~
首先下載一個pidgin的軟件包~~我是下載的最新版本2.5.1
http://www.pidgin.im/download/source/(我是保存在桌面上)
下面執行解壓縮命令
# bunzip2 /Desktop/pidgin-2.5.1.tar.bz2
# tar xvf /Desktop/pidgin-2.5.1.tar
# cd pidgin-2.5.1
準備GCC編譯器Solaris10以后,gcc缺省安裝在/usr/sfw/bin目錄下。因此,只需要設置好環境變量即可:
# PATH=/usr/sfw/bin:/usr/ccs/bin:$PATH
# export PATH
(這一步我不知道到底要不要~~參考的別人是說要的~~但是sun網頁上提供的是沒有的,反正我是敲了的)
下面是configure
在成功執行以上步緅后會在/pidgin-2.5.1包里找到一個configure文件
網上提供的資料都說這里需要注釋一些個什么東西~~但是我在這個文件進行關鍵字查找都找不到他說的那些個東西~~我想可能是pidgin版本不同的原因吧
所以我們直接進行configure就好了
# ./configure --disable-perl --with-ncurses-headers=/opt/csw/include/ncurses --prefix=/opt/csw
(開始我是按照sun公司的敲的的~~但是check過后總會說一些東西需要disable掉,于是按照他說的一個一個的往命令行里面添加)
最后這行命令變成了
#./configure --disable-perl --disable-gtkspell --disable-meanwhile --disable-nm --disable-avahi --disable-tcl --with-ncurses-headers=/opt/csw/include/ncurses --prefix=/opt/csw
成功后,再執行下面的編譯命令:
# gmake
# gmail install
# alias gaim='/opt/csw/bin/pidgin > /dev/null 2>&1 &'
參考資料
就好啦~~
參考資料:
http://www.unix-center.net/bbs/viewthread.php?tid=5249
http://blogs.sun.com/mishuang/entry/how_to_use_qq_with
http://wiki.developers.sun.com.cn/index.php/Solaris%E4%B8%8B%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85gcc%E7%BC%96%E8%AF%91%E5%99%A8%3F
http://hi.baidu.com/i0n_p/blog/item/d96b6308ca2bfb900a7b82fa.html
posted @
2008-09-16 13:02 zoyi 閱讀(1645) |
評論 (3) |
編輯 收藏
摘要: 這道題很煩。。我的代碼也很煩。。我想也沒人愿意會看下面是為我找錯誤提供方便的幾個地方:http://blog.csdn.net/tiaotiaoyly/archive/2008/02/11/2087975.aspx他總結得很好。。但是對我幫助不大。。呵呵。。不過可以參考一下開始幾個錯誤還是自己的數據測出來的。。我最致命的錯誤是橫線的輸出橫線的長度其實取決于上下兩個數的長度的。。我一直以為是取決于最...
閱讀全文
posted @
2008-07-15 22:29 zoyi 閱讀(641) |
評論 (0) |
編輯 收藏
從昨天到今天。。。。
我不明白。。為什么一直錯。。。我現在還是不明白。。
這是我寫這類問題。。似乎都會出現的問題。。要把數組開單很多很多倍。。我到現在還是不明白這是為什么


還是第一次能在第一頁的呢。。呵呵。。小安慰一下
#include<iostream>
#include<algorithm>
#define MaxN 300005
#define MaxM 200005
using namespace std;
int N,M,res[MaxM];
struct node
{
int pri,n;
friend bool operator<(node a,node b)
{
return a.pri<b.pri;
}
}index[MaxN],ii[MaxN];
struct line
{
int b,e,k,n,ans;
friend bool operator<(line a,line b)
{
return a.b<b.b;
}
}Line[MaxM];
int cc[MaxN];
void inser_del(int key,int flag)
{
int L=0,R=N-1,mid,v=1;
while(L<R)
{
cc[v]+=flag;
mid=(L+R)/2;
v*=2;
if(key<=mid)
R=mid;
else
{
v++;
L=mid+1;
}
}
cc[v]+=flag;
}
int solve(int k)
{
int L=0,R=N-1,mid,v=1;
while(L<R)
{
mid=(L+R)/2;
if(cc[2*v]>=k)
{
R=mid;
v*=2;
}
else
{
L=mid+1;
k-=cc[2*v];
v=2*v+1;
}
}
return index[L].pri;
}

int main()
{
int i,j;
scanf("%d%d",&N,&M);

for(i=0;i<N;index[i].n=i++)
scanf("%d",&index[i].pri);
for(i=0;i<M;Line[i].n=i++)
{
scanf("%d%d%d",&Line[i].b,&Line[i].e,&Line[i].k);
if(Line[i].b>Line[i].e)swap(Line[i].b,Line[i].e);
--Line[i].b;
--Line[i].e;
}
//初始化-->cc為0
sort(index,index+N);
sort(Line,Line+M);
for(i=0;i<N;i++)
{
ii[index[i].n].pri=index[i].pri;
ii[index[i].n].n=i;
}

for(i=Line[0].b;i<=Line[0].e;i++)
inser_del(ii[i].n,1);

for(i=1;i<M;i++)
{
Line[i-1].ans=solve(Line[i-1].k);
if(Line[i - 1 ].e>=Line[i].b)
{for (j = Line[i - 1 ].b; j < Line[i].b; j ++ )
inser_del(ii[j].n,-1);
for (j = Line[i - 1 ].e + 1 ; j <= Line[i].e; j ++ )
inser_del(ii[j].n,1);
}
else
{
for(j=Line[i - 1].b;j<=Line[i - 1 ].e;j ++ )
inser_del(ii[j].n,-1);
for (j = Line[i].b; j <= Line[i].e; j ++ )
inser_del(ii[j].n,1);
}
}
Line[i-1].ans=solve(Line[i-1].k);
for(i=0;i<M;i++)
res[Line[i].n]=Line[i].ans;
for(i=0;i<M;i++)
printf("%d\n",res[i]);

return 0;
}


posted @
2008-07-15 13:46 zoyi 閱讀(391) |
評論 (0) |
編輯 收藏
這個題真的好煩。。
別的就不寫了。。貼幾個數據
7
999
898
1
45221
452511
43349
808
只記得這么幾個了。。。這幾個都出過錯。。
以下是代碼。。。
堅持一點oj沒錯。。如果一直是wa。。那么出錯的肯定是你!
#include<iostream>
#define MaxK 2000005
char k[MaxK];
int down[MaxK];
void solve()
{
int len=(int)strlen(k),i,j,c;
bool tag=true;
for(i=0;i<len;i++)
if(k[i]!='9')
break;
if(i>=len)
{
for(i=1;i<len;i++)
k[i]='0';
k[0]=k[len]='1';
k[len+1]='\0';
return;
}
if(len%2)
i=len/2-1,j=i+2;
else
i=(len-1)/2,j=i+1;
while(i>=0&&j<len)
{
if(k[i]>k[j])
down[j]=-1;//k[j]up
else if(k[i]<k[j])
down[j]=1;//k[j]down
i--,j++;
}
if(len%2)
i=len/2+1;
else i=len/2;
for(;i<len;i++)
{
if(down[i]==-1)
break;
else if(down[i]==1)
{
tag=false;
break;
}
}
if(i>=len)tag=false;
for(len%2?i=len/2+1:i=len/2;i<len;i++)

if(down[i])
{
k[i]=k[len-1-i];
}
if(!tag)
{
i=len/2,c=1;
while(i>=0&&c)
{
c=(k[i]-'0'+1)/10;
k[i]=((k[i]-'0')+1)%10+'0';
k[len-1-i]=k[i];
i--;
}
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(down,0,sizeof(down));
memset(k,0,sizeof(k));
scanf("%s",k);
solve();
printf("%s\n",k);
}
return 0;
}
posted @
2008-07-14 14:31 zoyi 閱讀(407) |
評論 (1) |
編輯 收藏
一維情況:
設序列的元素存儲在a[]中,a的下標是1..n的正整數,需要動態地更新某個a[x]的值,同時要求出a[x1]到a[y1]這一段所有元素的和。
如果要動態更新m次。。我們顯然可以用o(mn)的暴力弄出來
其實可以o(mlogn)的;
在李睿的論文里提出了一種新的數據結構:
很巧妙,很強大:
對于序列a[],我們設一個數組C,其中 (k為i在二進制下末尾0的個數)。
c[i]=a[i]+a[i-1]+...+
a[i-2^k+1]//這一項的最后一位一定是0
包含a[x]的c序列:
c[x]=a[x]+a[x-1]+...+a[x-2^k+1]
c[x+2^k]=a[x+2^k]+a[x+2^k-1]...+a[x]+...+a[x-2^k+1]
....
一直加到<=S的狀況
針對這個情況。。我們有兩個實現。。一個是update(),另一個是統計的操作
如果針對上面的統計就是求給定區間的sum (x,y)=sum(1,y)-sum(1,x);
procedure UPDATA(x,A)
begin
p←x
while (p<=n) do
begin
C[p]←C[p]+A
p←p+LOWBIT(p)
end
end

求a[1]-a[x]的和
function SUM(x)
begin
ans ← 0
p ← x
while (p>0) do
begin
ans←ans+C[p]
p←p-LOWBIT(p)
end
return ans
end

我們通過一維的可以擴展成二維的:(IOI
MOBILES)
以下是我的這代碼:

#include<iostream>
#define MaxS 1025
#define L(a) (a&(a^(a-1)))
int S,x,y,A,L,B,R,T;
int c[MaxS][MaxS];
void update()
{
//x<=i<S的c[i][y]更新
int i,j;
for(i=x;i<=S;i+=L(i))
for(j=y;j<=S;j+=L(j))
c[i][j]+=A;
}
int compute(int x,int y)
{
int result=0,i,j;
for(i=x;i>0;i-=L(i))
for(j=y;j>0;j-=L(j))
result+=c[i][j];
return result;
}
int main()
{
int oper,ans;
while(scanf("%d",&oper)&&oper!=3)
{
switch (oper)
{
case 0:
scanf("%d",&S);
memset(c,0,sizeof(c));
break;
case 1:
scanf("%d%d%d",&x,&y,&A);
x++,y++;
update();
break;
case 2:
scanf("%d%d%d%d",&L,&B,&R,&T);
L++,B++,R++,T++;
ans=compute(R,T)-compute(L-1,T)-compute(R,B-1)+compute(L-1,B-1);
printf("%d\n",ans);
break;
}
}
return 0;
}
posted @
2008-07-13 19:40 zoyi 閱讀(293) |
評論 (0) |
編輯 收藏
今天居然一點都不想睡覺。。。。
昨天一夜。。。呵呵。。。
我們干了什么呢。。。
在大大的寢室里偷來了面條。。偷了火鍋底料。。搬來了鍋。。。
很久都沒有煮東西吃了。。辣辣的火鍋的底料。。。。
我。。麥兜。。秀怡(這個名字好久沒叫了(*^__^*) 嘻嘻……)
我們都辣的滿面通紅。。。
我還很逞強的bs兜兜。。。。這個豬頭一點用都沒有。。。。。
o(∩_∩)o...哈哈...
秀逸的裝備最齊全了。。呵呵我和兜兜是沒碗沒勺。。。
用貪婪的眼神在寢室里狂掃。。。看見了過年發的阿華田
呵呵。。還沒怎么喝呢。。
要不都倒掉。。拿罐子當碗用。。呵呵。。我的perfect 建議
。。。。。被兜兜白眼了。。。
最后將用茶杯作碗。。。勺子動用了響響的生日禮物。。呵呵。。
我還順便抱怨了一句怎么沒人送碗做生日禮物呢。。呵呵。。。
/**********************************************************************************/
其實昨天本來睡得很早。。
很累。。很難受。
媽媽很晚的電話叫醒了在床上酣睡的我和麥兜。。。
以前和媽媽一直都有心靈感應的。。一般媽媽的電話如果我在的話。。總會有感覺的。。
這一次。。。是麥兜接的。。
麥兜把我喊下來。。
拿起電話。。。。媽媽的思念從另一邊傳來
媽媽問要不要媽媽來。。。
即使天氣很熱。。媽媽還是很想來的吧
我是個自私的人。。
“你來我更累。。。我沒空陪你啊”
我真的很自私。。我明白這一點。。我也很痛恨這樣的我。。
我怎么能說出這么自私的話。。
媽媽。。真的。。對不起。。
我知道您想我。。您很孤獨。。。
我和爸爸都不在你身邊。。
對不起。。。
我漸漸長大。。。從你們的保護中悄悄飛走。。。
你們看著我越飛越遠。。其實我也不知道家對我來說意味著什么
家是指你和爸爸。。還是我們曾經一起住過十年的小屋
如果是你和爸爸。。。。如果就只有我們三個人。。就算出門在外也會有家在一起的感覺么。。
我不知道。。。記得在今年的年三十。。第一個孤獨過年的日子
對這上海的夜。。我想。。媽媽說我不回去過年。。你們就來上海陪我。。
如果真的是這樣。。那我們一家三口真的好慘。。在上海這個陌生的城市。。
這是父愛母愛。。。我懂。。但是懂得好辛苦。。我能做什么呢。。。。
媽媽你說過在別人面前你很驕傲。。有個好孩子。。但是別人不懂得你心里的苦。。
每次你這么說。。。我知道你心里在哭。。
爸爸我總是那么少的想起你。。有一次媽媽說爸爸很開心我和爸爸發短信聊天。。
寫不下去了。。
呵呵。。我是個沒用的人。。
哭的一趟糊涂。。看不清了。。呵呵。。
我愛你們。。爸爸媽媽。。
真的。。我永遠愛你們。。我對不起你們
我不知道我除了說對不起還能說什么
posted @
2008-07-13 14:34 zoyi 閱讀(445) |
評論 (6) |
編輯 收藏
在poi的列表上是easy。。。。
我倒。。這也easy。。。。。。
這道題多虧了javaman。。呵呵。。這一次。。他講的挺清楚的。。。謝謝他一下
題目大意:
根據輸入,序列的長度,序列和,求這樣一串序列
序列滿足以下情況:
- for any k, such that 1 <= k < n : |ak - ak+1| = 1 and
- a1 = 0
如果沒有如此序列則輸出"No"
我們假設n-->序列長度,S-->序列和;
S=sigma a[i](1<=i<=n)
令bi=a[i+1]-a[i] (1<=i<n)
S=sigama b[i]+sigama a[i] (1<=i<n) ----> S= sgama (n-i)b[i]; (1<=i<n)//迭代加一下就能推出來
b[i]-->-1 or 1
S=sigama (n-i)(b[i]+1)-sigama(n-i)
=2*sigama ((n-i)(b[i]+1)/2) - n*(n-1)/2
d[i]=(b[i]+1)/2-->0 or 1
根據上式得:
no-->
1: S+n*(n-1)/2 為奇數
2: abs(S)>n*(n-1)/2 //
important ....我就是這里一直錯...絕對值...沒考慮....
#include<iostream>
#include<math.h>
int N,S;
int main()
{
int std,i,d,pre;
int T;
scanf("%d",&T);
for(int j=1;j<=T;j++)
{
scanf("%d%d",&N,&S);
std=(N*(N-1))/2;
if((S+std)%2||abs(S)>std)
{
printf("No\n");
if(j!=T)printf("\n");
continue;
}
printf("0\n");
for(pre=0,std+=S,std/=2,i=1;i<N;i++)
{
if(std>=N-i)
{
d=1;
std-=N-i;
}
else d=0;
printf("%d\n",pre=2*d-1+pre);
}
if(j!=T)printf("\n");
}
return 0;
}
posted @
2008-07-12 12:08 zoyi 閱讀(550) |
評論 (1) |
編輯 收藏
一道數學題。弱弱不會做。。
開始一直鉆牛角尖。。用暴力把數據跑了一下。然后找規律。。發現好像是找n的互質的質因數對數。。
小的數據用手算是可以算出來的。。但是不知道怎么用程序來算。。
后面參考pc的。。。。知道了是怎么回事。。
我想以后如果有需要求質因數對數的個數。。可以用這種方法反過來求。。
下面是代碼:
#include<iostream>
int N;
int solve(int N)
{
int i,ans=1,t;
for(i=2;i*i<=N;i++)
{
t=0;
while(!(N%i))
{
t++;
N/=i;
}
ans*=2*t+1;
}
if(ans==1||N!=1)ans*=3;
return ans;
}
int main()
{
int T,cas,id;
scanf("%d",&T);
for(cas=1;cas<=T;cas++)
{
scanf("%d",&N);
id=solve(N);
if(N==1)id=1;
printf("Scenario #%d:\n%d\n\n",cas,(id+1)/2);
}
return 0;
}
posted @
2008-07-09 10:41 zoyi 閱讀(503) |
評論 (1) |
編輯 收藏
這道題是zp推薦的,說是一道動態規劃題,做完后覺得這就是我最不認為是dp的一種dp題,他的思想和那種給你一個地圖,起始位置在左上角,終點位置在右下角,每個位置上都有一定的寶藏,規定了每次只能往右走一步,或是往下走一步。。然后問你最后能取得的寶藏最大值,開始我就不認為這種題是dp,他的狀態只會和前一狀態有關。而1029這個題就是這樣子的。
下面是我做這個題之前別人的提示,有幾個關鍵字:
2^n個狀態,n為列數,我們做到按行更新,更新一行的時候我們按列來,如果更新到最后一列,則換下一行。
更新當前行時和上一行有關。
這兩句話給了開始的模糊印象。。但是確實有點抽象
下面是cpg2001
用橫線來劃分階段,對于圖一,雖然劃分后很整齊,但把某些磚分成了兩半,于是將他們也添加進來,于是變成了圖二,其顯得參差不齊,但最多也是向下突出一格,在圖三中,我們將圖二的空隙填滿,則又轉移到了下一種狀態。
定義添磚小塊狀態為1,否則為0,則每行狀態可以映射到一個數(0,2^h})于是可建立這樣的狀態a[ i :j]:表示第i行填滿,第i+1行對應狀態為j時的不同方案數,a[I,j]=∑a[i-1,k],其中,狀態k可導出狀態j,初始化條件a[0,0]=1,最后a[w,0]即為所求。
的啟發,再加上zp的講解逐漸清晰起來:
行數我們默認是從0開始

第三行的賦值情況 :000011
第四行的賦值情況 :100100
第五行的賦值情況 :011000
圖一:第三行填滿了,第三行的第一個格子是一個豎形格子,這個豎形格子的上格子在第三行,下格子在第四行,于是在第四行需要補格子故置為1,第三行的第二個第三個格子是個橫條,我們都置為0,緊接著又是一個豎形格子的上半個格子,同樣是0,下面兩個都是豎形格子的下半個置為1
同理將分別對第四行第五行賦值
比如圖二的第四行,第二第三個兩個連續的零,還有一種方案是擺一個橫條。
其他的詳見注釋。
我的代碼:
#include<iostream>
#define max(a,b) (a>b?a:b)
int N,M,maxl=0;
__int64 ans[3000],tmp[3000];
void solve(int j,int last,int now)
{
if(j>M)
{
tmp[now]+=ans[last];
maxl=max(maxl,now);
return;
}
int up=(1<<(M-j))&last,uprt;
//up-->頭頂上的那個格子狀態,uprt-->頭頂上的右邊的那個格子的狀態
if(j==M)
{
if(!up)solve(j+1,last,now*2+1);//就剩一個空了,并且上面的那個是0,那么顯然是豎條
//這一行需要補一個小方格
//如果上面是1,顯然下面仍然是要接著一個豎條,但是這個小方格是上面這半個,無需置1
else solve(j+1,last,now*2);
}
else
{
uprt=(1<<(M-j-1))&last;
if(!up)
{
solve(j+1,last,now*2+1);
if(!uprt)//如果頭頂上的不為0,頭頂上右邊的也不為0,下面的就可以放一個橫條
solve(j+2,last,now*4);
}
else//這個地方時很容易出錯的,我這里認為是第j列置為0
//可以理解為是一個豎形條狀的上半個格子,也可以認為是一個橫行條狀的左半個格子
//這里千萬不能把這兩種情況分開計算,這樣會重復的
solve(j+1,last,now*2);
}
}

int main()
{
int i,j;
while(scanf("%d%d",&N,&M)&&N)
{
if((N*M)%2)
{
printf("0\n");
continue;
}
memset(ans,0,sizeof(ans));
ans[0]=1;
for(i=1;i<=N;i++)
{
memset(tmp,0,sizeof(tmp));
for(j=0;j<=maxl;j++)
if(ans[j])solve(1,j,0);
memcpy(ans,tmp,sizeof(tmp));
}
printf("%I64d\n",ans[0]);
}
return 0;
}
posted @
2008-07-08 14:01 zoyi 閱讀(809) |
評論 (2) |
編輯 收藏
fighting~~
posted @
2008-05-29 13:29 zoyi 閱讀(547) |
評論 (7) |
編輯 收藏