solaris 10.0下的gaim并不支持qq~~不是很方便~~網(wǎng)頁版的qq又實(shí)在太丑陋了~~而且很不方便~~安全性應(yīng)該也不高~于是我還是下定決心裝一個(gè)gaim的升級(jí)軟件pidgin~~它支持更多的聊天模式
今天的最后一次嘗試~~成功了~~happy
在網(wǎng)上搜了很久很久~~參考了大家的安裝方法~但是還是有點(diǎn)些是要自己試一試的~~
首先下載一個(gè)pidgin的軟件包~~我是下載的最新版本2.5.1
http://www.pidgin.im/download/source/(我是保存在桌面上)
下面執(zhí)行解壓縮命令
# bunzip2 /Desktop/pidgin-2.5.1.tar.bz2
# tar xvf /Desktop/pidgin-2.5.1.tar
# cd pidgin-2.5.1
準(zhǔn)備GCC編譯器Solaris10以后,gcc缺省安裝在/usr/sfw/bin目錄下。因此,只需要設(shè)置好環(huán)境變量即可:
# PATH=/usr/sfw/bin:/usr/ccs/bin:$PATH
# export PATH
(這一步我不知道到底要不要~~參考的別人是說要的~~但是sun網(wǎng)頁上提供的是沒有的,反正我是敲了的)
下面是configure
在成功執(zhí)行以上步緅后會(huì)在/pidgin-2.5.1包里找到一個(gè)configure文件
網(wǎng)上提供的資料都說這里需要注釋一些個(gè)什么東西~~但是我在這個(gè)文件進(jìn)行關(guān)鍵字查找都找不到他說的那些個(gè)東西~~我想可能是pidgin版本不同的原因吧
所以我們直接進(jìn)行configure就好了
# ./configure --disable-perl --with-ncurses-headers=/opt/csw/include/ncurses --prefix=/opt/csw
(開始我是按照sun公司的敲的的~~但是check過后總會(huì)說一些東西需要disable掉,于是按照他說的一個(gè)一個(gè)的往命令行里面添加)
最后這行命令變成了
#./configure --disable-perl --disable-gtkspell --disable-meanwhile --disable-nm --disable-avahi --disable-tcl --with-ncurses-headers=/opt/csw/include/ncurses --prefix=/opt/csw
成功后,再執(zhí)行下面的編譯命令:
# 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
摘要: 這道題很煩。。我的代碼也很煩。。我想也沒人愿意會(huì)看下面是為我找錯(cuò)誤提供方便的幾個(gè)地方:http://blog.csdn.net/tiaotiaoyly/archive/2008/02/11/2087975.aspx他總結(jié)得很好。。但是對(duì)我?guī)椭淮蟆!:呛恰!2贿^可以參考一下開始幾個(gè)錯(cuò)誤還是自己的數(shù)據(jù)測(cè)出來的。。我最致命的錯(cuò)誤是橫線的輸出橫線的長(zhǎng)度其實(shí)取決于上下兩個(gè)數(shù)的長(zhǎng)度的。。我一直以為是取決于最...
閱讀全文
從昨天到今天。。。。
我不明白。。為什么一直錯(cuò)。。。我現(xiàn)在還是不明白。。
這是我寫這類問題。。似乎都會(huì)出現(xiàn)的問題。。要把數(shù)組開單很多很多倍。。我到現(xiàn)在還是不明白這是為什么


還是第一次能在第一頁的呢。。呵呵。。小安慰一下
#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;
}


這個(gè)題真的好煩。。
別的就不寫了。。貼幾個(gè)數(shù)據(jù)
7
999
898
1
45221
452511
43349
808
只記得這么幾個(gè)了。。。這幾個(gè)都出過錯(cuò)。。
以下是代碼。。。
堅(jiān)持一點(diǎn)oj沒錯(cuò)。。如果一直是wa。。那么出錯(cuò)的肯定是你!
#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;
}
一維情況:
設(shè)序列的元素存儲(chǔ)在a[]中,a的下標(biāo)是1..n的正整數(shù),需要?jiǎng)討B(tài)地更新某個(gè)a[x]的值,同時(shí)要求出a[x1]到a[y1]這一段所有元素的和。
如果要?jiǎng)討B(tài)更新m次。。我們顯然可以用o(mn)的暴力弄出來
其實(shí)可以o(mlogn)的;
在李睿的論文里提出了一種新的數(shù)據(jù)結(jié)構(gòu):
很巧妙,很強(qiáng)大:
對(duì)于序列a[],我們?cè)O(shè)一個(gè)數(shù)組C,其中 (k為i在二進(jìn)制下末尾0的個(gè)數(shù))。
c[i]=a[i]+a[i-1]+...+
a[i-2^k+1]//這一項(xiàng)的最后一位一定是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的狀況
針對(duì)這個(gè)情況。。我們有兩個(gè)實(shí)現(xiàn)。。一個(gè)是update(),另一個(gè)是統(tǒng)計(jì)的操作
如果針對(duì)上面的統(tǒng)計(jì)就是求給定區(qū)間的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

我們通過一維的可以擴(kuò)展成二維的:(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;
}
今天居然一點(diǎn)都不想睡覺。。。。
昨天一夜。。。呵呵。。。
我們干了什么呢。。。
在大大的寢室里偷來了面條。。偷了火鍋底料。。搬來了鍋。。。
很久都沒有煮東西吃了。。辣辣的火鍋的底料。。。。
我。。麥兜。。秀怡(這個(gè)名字好久沒叫了(*^__^*) 嘻嘻……)
我們都辣的滿面通紅。。。
我還很逞強(qiáng)的bs兜兜。。。。這個(gè)豬頭一點(diǎn)用都沒有。。。。。
o(∩_∩)o...哈哈...
秀逸的裝備最齊全了。。呵呵我和兜兜是沒碗沒勺。。。
用貪婪的眼神在寢室里狂掃。。。看見了過年發(fā)的阿華田
呵呵。。還沒怎么喝呢。。
要不都倒掉。。拿罐子當(dāng)碗用。。呵呵。。我的perfect 建議
。。。。。被兜兜白眼了。。。
最后將用茶杯作碗。。。勺子動(dòng)用了響響的生日禮物。。呵呵。。
我還順便抱怨了一句怎么沒人送碗做生日禮物呢。。呵呵。。。
/**********************************************************************************/
其實(shí)昨天本來睡得很早。。
很累。。很難受。
媽媽很晚的電話叫醒了在床上酣睡的我和麥兜。。。
以前和媽媽一直都有心靈感應(yīng)的。。一般媽媽的電話如果我在的話。。總會(huì)有感覺的。。
這一次。。。是麥兜接的。。
麥兜把我喊下來。。
拿起電話。。。。媽媽的思念從另一邊傳來
媽媽問要不要媽媽來。。。
即使天氣很熱。。媽媽還是很想來的吧
我是個(gè)自私的人。。
“你來我更累。。。我沒空陪你啊”
我真的很自私。。我明白這一點(diǎn)。。我也很痛恨這樣的我。。
我怎么能說出這么自私的話。。
媽媽。。真的。。對(duì)不起。。
我知道您想我。。您很孤獨(dú)。。。
我和爸爸都不在你身邊。。
對(duì)不起。。。
我漸漸長(zhǎng)大。。。從你們的保護(hù)中悄悄飛走。。。
你們看著我越飛越遠(yuǎn)。。其實(shí)我也不知道家對(duì)我來說意味著什么
家是指你和爸爸。。還是我們?cè)?jīng)一起住過十年的小屋
如果是你和爸爸。。。。如果就只有我們?nèi)齻€(gè)人。。就算出門在外也會(huì)有家在一起的感覺么。。
我不知道。。。記得在今年的年三十。。第一個(gè)孤獨(dú)過年的日子
對(duì)這上海的夜。。我想。。媽媽說我不回去過年。。你們就來上海陪我。。
如果真的是這樣。。那我們一家三口真的好慘。。在上海這個(gè)陌生的城市。。
這是父愛母愛。。。我懂。。但是懂得好辛苦。。我能做什么呢。。。。
媽媽你說過在別人面前你很驕傲。。有個(gè)好孩子。。但是別人不懂得你心里的苦。。
每次你這么說。。。我知道你心里在哭。。
爸爸我總是那么少的想起你。。有一次媽媽說爸爸很開心我和爸爸發(fā)短信聊天。。
寫不下去了。。
呵呵。。我是個(gè)沒用的人。。
哭的一趟糊涂。。看不清了。。呵呵。。
我愛你們。。爸爸媽媽。。
真的。。我永遠(yuǎn)愛你們。。我對(duì)不起你們
我不知道我除了說對(duì)不起還能說什么
在poi的列表上是easy。。。。
我倒。。這也easy。。。。。。
這道題多虧了javaman。。呵呵。。這一次。。他講的挺清楚的。。。謝謝他一下
題目大意:
根據(jù)輸入,序列的長(zhǎng)度,序列和,求這樣一串序列
序列滿足以下情況:
- for any k, such that 1 <= k < n : |ak - ak+1| = 1 and
- a1 = 0
如果沒有如此序列則輸出"No"
我們假設(shè)n-->序列長(zhǎng)度,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
根據(jù)上式得:
no-->
1: S+n*(n-1)/2 為奇數(shù)
2: abs(S)>n*(n-1)/2 //
important ....我就是這里一直錯(cuò)...絕對(duì)值...沒考慮....
#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;
}
一道數(shù)學(xué)題。弱弱不會(huì)做。。
開始一直鉆牛角尖。。用暴力把數(shù)據(jù)跑了一下。然后找規(guī)律。。發(fā)現(xiàn)好像是找n的互質(zhì)的質(zhì)因數(shù)對(duì)數(shù)。。
小的數(shù)據(jù)用手算是可以算出來的。。但是不知道怎么用程序來算。。
后面參考pc的。。。。知道了是怎么回事。。
我想以后如果有需要求質(zhì)因數(shù)對(duì)數(shù)的個(gè)數(shù)。。可以用這種方法反過來求。。
下面是代碼:
#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;
}
這道題是zp推薦的,說是一道動(dòng)態(tài)規(guī)劃題,做完后覺得這就是我最不認(rèn)為是dp的一種dp題,他的思想和那種給你一個(gè)地圖,起始位置在左上角,終點(diǎn)位置在右下角,每個(gè)位置上都有一定的寶藏,規(guī)定了每次只能往右走一步,或是往下走一步。。然后問你最后能取得的寶藏最大值,開始我就不認(rèn)為這種題是dp,他的狀態(tài)只會(huì)和前一狀態(tài)有關(guān)。而1029這個(gè)題就是這樣子的。
下面是我做這個(gè)題之前別人的提示,有幾個(gè)關(guān)鍵字:
2^n個(gè)狀態(tài),n為列數(shù),我們做到按行更新,更新一行的時(shí)候我們按列來,如果更新到最后一列,則換下一行。
更新當(dāng)前行時(shí)和上一行有關(guān)。
這兩句話給了開始的模糊印象。。但是確實(shí)有點(diǎn)抽象
下面是cpg2001
用橫線來劃分階段,對(duì)于圖一,雖然劃分后很整齊,但把某些磚分成了兩半,于是將他們也添加進(jìn)來,于是變成了圖二,其顯得參差不齊,但最多也是向下突出一格,在圖三中,我們將圖二的空隙填滿,則又轉(zhuǎn)移到了下一種狀態(tài)。
定義添磚小塊狀態(tài)為1,否則為0,則每行狀態(tài)可以映射到一個(gè)數(shù)(0,2^h})于是可建立這樣的狀態(tài)a[ i :j]:表示第i行填滿,第i+1行對(duì)應(yīng)狀態(tài)為j時(shí)的不同方案數(shù),a[I,j]=∑a[i-1,k],其中,狀態(tài)k可導(dǎo)出狀態(tài)j,初始化條件a[0,0]=1,最后a[w,0]即為所求。
的啟發(fā),再加上zp的講解逐漸清晰起來:
行數(shù)我們默認(rèn)是從0開始

第三行的賦值情況 :000011
第四行的賦值情況 :100100
第五行的賦值情況 :011000
圖一:第三行填滿了,第三行的第一個(gè)格子是一個(gè)豎形格子,這個(gè)豎形格子的上格子在第三行,下格子在第四行,于是在第四行需要補(bǔ)格子故置為1,第三行的第二個(gè)第三個(gè)格子是個(gè)橫條,我們都置為0,緊接著又是一個(gè)豎形格子的上半個(gè)格子,同樣是0,下面兩個(gè)都是豎形格子的下半個(gè)置為1
同理將分別對(duì)第四行第五行賦值
比如圖二的第四行,第二第三個(gè)兩個(gè)連續(xù)的零,還有一種方案是擺一個(gè)橫條。
其他的詳見注釋。
我的代碼:
#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-->頭頂上的那個(gè)格子狀態(tài),uprt-->頭頂上的右邊的那個(gè)格子的狀態(tài)
if(j==M)
{
if(!up)solve(j+1,last,now*2+1);//就剩一個(gè)空了,并且上面的那個(gè)是0,那么顯然是豎條
//這一行需要補(bǔ)一個(gè)小方格
//如果上面是1,顯然下面仍然是要接著一個(gè)豎條,但是這個(gè)小方格是上面這半個(gè),無需置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,下面的就可以放一個(gè)橫條
solve(j+2,last,now*4);
}
else//這個(gè)地方時(shí)很容易出錯(cuò)的,我這里認(rèn)為是第j列置為0
//可以理解為是一個(gè)豎形條狀的上半個(gè)格子,也可以認(rèn)為是一個(gè)橫行條狀的左半個(gè)格子
//這里千萬不能把這兩種情況分開計(jì)算,這樣會(huì)重復(fù)的
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;
}
fighting~~