锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1. 鍏堝畨瑁?/span>netbeans鍜?/span>c++鎻掍歡 2. 鎵懼埌cygwin錛岄夋嫨devel涓嬬殑錛堣棰戞暀紼嬮噷灝戜簡(jiǎn)鏈鍚庝袱欏癸紝鎸夎棰戞暀紼嬮偅鏍峰畨瑁呭啀鍔犱笂鏈鍚庝袱欏瑰氨ok浜?jiǎn)锛?jí) gcc 鏍稿績(jī)(c緙栬瘧鍣?/span>) 3.4.x gcc-c++(c++緙栬瘧鍣?/span>) 3.4.x gdb(GUN璋冭瘯鍣?/span>) make 3.80 3. 瀹屽悗鎶?/span>cygwin鐩綍涓嬬殑bin鏂囦歡浠ュ強(qiáng)usr閲岀殑bin(or sbin)鏀懼埌鐜鍙橀噺path閲屽幓 渚嬪錛?/span>D:\cygwin\bin; D:\cygwin\usr\sbin
http://topic.csdn.net/t/20061218/23/5239809.html
]]>
http://hi.baidu.com/ecchi/blog/item/84bcdc3ff832a5c37d1e71bf.html
Trie鏍?007-03-12 17:46杞嚜xiaoyao4005.cublog.cnTrie鏍?wèi)鏃㈠彲鐢ㄤ簬涓鑸殑瀛楀吀鎼滅儲(chǔ)錛屼篃鍙敤浜庣儲(chǔ)寮曟煡鎵俱傚浜庣粰瀹氱殑涓涓瓧絎︿覆a1,a2,a3,...,an.鍒欓噰鐢═RIE鏍?wèi)鎼滅储缁彉q噉嬈℃悳绱㈠嵆鍙畬鎴愪竴嬈℃煡鎵俱備笉榪囧ソ鍍忚繕鏄病鏈塀鏍?wèi)鐨勬悳鐑?chǔ)鏁堢巼楂橈紝B鏍?wèi)鎼滅储绠楁硶澶嶆潅搴︿负logt(n+1/2).褰搕瓚嬪悜澶э紝鎼滅儲(chǔ)鏁堢巼鍙樺緱楂樻晥銆傛笉寰桪B2鐨勮闂唴瀛樿緗負(fù)铏氭嫙鍐呭瓨鐨勪竴涓狿AGE澶у皬錛岃屼笖甯у垏鎹㈤鐜囬檷浣庯紝鏃犻渶緇忓父鐨凱AGE鍒囨崲銆?/ trie.cpp : 瀹氫箟鎺у埗鍙板簲鐢ㄧ▼搴忕殑鍏ュ彛鐐廣?br>
http://acm.pku.edu.cn/JudgeOnline/problem?id=2564
//trie鏍?wèi)鍔犲姩鎬佽鍒?br>
//鍒氬紑濮嬩互涓轟細(xì)瓚呮椂,浠ヤ負(fù)澶嶆潅搴︽槸o(25000*16*26)*o(16)
//榪樻病鎼炴槑鐧介偅trie鏍?wèi)鐨勬煡璇㈡棄櫁村埌搴曟槸o(1)榪樻槸o(16)鍛?
#include<stdio.h>
#include<iostream>
#include<memory.h>
#include<string.h>
using namespace std;
#define MAX 25001
#define M 26
int rec,rec2;
char q[M];
char p[M];
int ans;
class Trie{
public:
Trie();
~Trie();
int insert(char *key);
int search(char *key);
struct Trie_node{
char *p;
int num;
Trie_node *next[M];
Trie_node();
};
Trie_node *root;
};
Trie::Trie_node::Trie_node(){
p=NULL;
for(int i=0;i<M;i++){
next[i]=NULL;
}
}
Trie::Trie(){
root=NULL;
}
Trie::~Trie(){
}
int Trie::insert(char *key){//鎻掑叆錛屾彃鍏ユ垚鍔熷悗榪斿洖1
int char_node;
char *g=new char[strlen(key)+1];
strcpy(g,key);
if(root==NULL){
root=new Trie_node;
}
Trie_node *cur=root;
while(cur&&*key!=0){
if(*key>='a'&&*key<='z'){
char_node=*key-'a';
}
else if(*key>='A'&&*key<='Z'){
char_node=*key-'A';
}
else return 0;
if(cur->next[char_node]==NULL){
cur->next[char_node]=new Trie_node;
}
cur=cur->next[char_node];
key++;
}
cur->num=rec2;
cur->p=new char[strlen(g)+1];
strcpy(cur->p,g);
return 1;
}
int Trie:: search(char *key)//鏌ユ壘錛屾壘鍒板悗鏀句簬entry涓紝榪斿洖1
{
Trie_node *cur=root;
int char_node;
char k[M];
strcpy(k,key);
while(cur&&*key!=0){
if(*key>='a'&&*key<='z'){
char_node=*key-'a';
}
else {if(*key>='A'&&*key<='Z'){
char_node=*key-'A';
}
else {return 0;}
}
cur=cur->next[char_node];
key++;
}
if(cur!=NULL&&cur->p!=NULL){
if(rec<cur->num+1){rec=cur->num+1;}
return 1;
}
return 0;
}
Trie t;
int Least(){
int i,j,k,q_len;
char ch,sh;
q_len=strlen(q);
rec=1;
for(i=0;i<q_len;i++){
for(k=j=0;j<q_len-1;j++,k++){
if(k==i)k++;
p[j]=q[k];
}
p[j]='\0';
t.search(p);
}
if(ans<rec)ans=rec;
rec2=rec;
rec=1;
for(i=0;i<q_len;i++){
ch=q[i];
for(sh='a';sh<='z';sh++){
q[i]=sh;
t.search(q);
}
q[i]=ch;
}
if(ans<rec)ans=rec;
if(rec2<rec)rec2=rec;
rec=1;
for(i=0;i<q_len;i++){
for(j=0;j<i;j++){
p[j]=q[j];
}
for(j=q_len;j>i;j--){
p[j]=q[j-1];
}
p[q_len+1]='\0';
for(sh='a';sh<='z';sh++){
p[i]=sh;
t.search(p);
}
}
strcpy(p,q);
p[q_len+1]='\0';
for(sh='a';sh<='z';sh++){
p[q_len]=sh;
t.search(p);
}
if(ans<rec)ans=rec;
if(rec2<rec)rec2=rec;
t.insert(q);
return 0;
}
int main(){
int i,j,k,g,q_len;
ans=0;
while(scanf("%s",q)!=EOF){
Least();
}
printf("%d\n",ans);
return 0;
}
浠婂ぉ鏁寸悊浜?jiǎn)涓浜?define鐨勭敤娉曪紝涓庡ぇ瀹跺叡浜紒
1.綆鍗曠殑define瀹氫箟
#define MAXTIME 1000 
涓涓畝鍗曠殑MAXTIME灝卞畾涔夊ソ浜?jiǎn)锛屽畠浠h?000錛屽鏋滃湪紼嬪簭閲岄潰鍐?br>
if(i
緙栬瘧鍣ㄥ湪澶勭悊榪欎釜浠g爜涔嬪墠浼?xì)瀵筂AXTIME榪涜澶勭悊鏇挎崲涓?000銆?br>
榪欐牱鐨勫畾涔夌湅璧鋒潵綾諱技浜庢櫘閫氱殑甯擱噺瀹氫箟CONST錛屼絾涔熸湁鐫涓嶅悓錛屽洜涓篸efine鐨勫畾涔夋洿鍍忔槸綆鍗曠殑鏂囨湰鏇挎崲錛岃屼笉鏄綔涓轟竴涓噺鏉ヤ嬌鐢紝榪欎釜闂鍦ㄤ笅闈㈠弽鏄犵殑灝や負(fù)紿佸嚭銆?br>
2.define鐨?#8220;鍑芥暟瀹氫箟”
define鍙互鍍忓嚱鏁伴偅鏍鋒帴鍙椾竴浜涘弬鏁幫紝濡備笅
#define max(x,y) (x)>(y)?(x):(y);
榪欎釜瀹氫箟灝卞皢榪斿洖涓や釜鏁頒腑杈冨ぇ鐨勯偅涓紝鐪嬪埌浜?jiǎn)鍚楀Q熷洜涓鴻繖涓?#8220;鍑芥暟”娌℃湁綾誨瀷媯(gè)鏌ワ紝灝卞ソ鍍忎竴涓嚱鏁版ā鏉夸技鐨勶紝褰撶劧錛屽畠緇濆娌℃湁妯℃澘閭d箞瀹夊叏灝辨槸浜?jiǎn)銆傚彲浠ヤ綔涓轟竴涓畝鍗曠殑妯℃澘鏉ヤ嬌鐢ㄨ屽凡銆?br>
浣嗘槸榪欐牱鍋氱殑璇濆瓨鍦ㄩ殣鎮(zhèn)o紝渚嬪瓙濡備笅錛?br>
#define Add(a,b) a+b;
鍦ㄤ竴鑸嬌鐢ㄧ殑鏃跺欐槸娌℃湁闂鐨勶紝浣嗘槸濡傛灉閬囧埌濡傦細(xì)c * Add(a,b) * d鐨勬椂鍊欏氨浼?xì)鍑虹幇闂锛屼唬鏁板紡鐨勬湰鎰忔槸a+b鐒跺悗鍘誨拰c錛宒鐩鎬箻錛屼絾鏄洜涓轟嬌鐢ㄤ簡(jiǎn)define錛堝畠鍙槸涓涓畝鍗曠殑鏇挎崲錛夛紝鎵浠ュ紡瀛愬疄闄呬笂鍙樻垚浜?br>
c*a + b*d
鍙﹀涓句竴涓緥瀛愶細(xì)
#define pin (int*);
pin a,b;
鏈剰鏄痑鍜宐閮芥槸int鍨嬫寚閽堬紝浣嗘槸瀹為檯涓婂彉鎴恑nt* a,b;
a鏄痠nt鍨嬫寚閽堬紝鑰宐鏄痠nt鍨嬪彉閲忋?br>
榪欐槸搴旇浣跨敤typedef鏉ヤ唬鏇縟efine錛岃繖鏍穉鍜宐灝遍兘鏄痠nt鍨嬫寚閽堜簡(jiǎn)銆?br>
鎵浠ユ垜浠湪瀹氫箟鐨勬椂鍊欙紝鍏繪垚涓涓壇濂界殑涔?fàn)鎯Q屽緩璁墍鏈夌殑灞傛閮借鍔犳嫭鍙楓?br>
3.瀹忕殑鍗曡瀹氫箟
#define A(x) T_##x
#define B錛坸) #@x
#define C錛坸) #x
鎴戜滑鍋囪錛歺=1錛屽垯鏈夛細(xì)
A(1)------銆塗_1
B(1)------銆?/span>'1'
C(1)------銆?/span>"1"
錛堣繖閲屽弬鑰冧簡(jiǎn) hustli鐨勬枃绔狅級(jí)
3.define鐨勫琛屽畾涔?br>
define鍙互鏇夸唬澶氳鐨勪唬鐮侊紝渚嬪MFC涓殑瀹忓畾涔夛紙闈炲父鐨勭粡鍏革紝铏界劧璁╀漢鐪嬩簡(jiǎn)鎭跺績(jī)錛?br>
#define MACRO(arg1, arg2) do { \
/* declarations */ \
stmt1; \
stmt2; \
/*
*/ \
} while(0) /* (no trailing ; ) */
鍏抽敭鏄鍦ㄦ瘡涓涓崲琛岀殑鏃跺欏姞涓婁竴涓?/span>"\" 
鎽樻妱鑷猦ttp://www.blog.edu.cn/user1/16293/archives/2005/115370.shtml 淇ˉ浜?jiǎn)鍑犱釜bug
4.鍦ㄥぇ瑙勬ā鐨勫紑鍙戣繃紼嬩腑錛岀壒鍒槸璺ㄥ鉤鍙板拰緋葷粺鐨勮蔣浠墮噷錛宒efine鏈閲嶈鐨勫姛鑳芥槸鏉′歡緙栬瘧銆?br>
灝辨槸錛?br>
#ifdef WINDOWS





#endif
#ifdef LINUX





#endif
鍙互鍦ㄧ紪璇戠殑鏃跺欓氳繃#define璁劇疆緙栬瘧鐜
5.濡備綍瀹氫箟瀹忋佸彇娑堝畯
//瀹氫箟瀹?br>
#define [MacroName] [MacroValue]
//鍙栨秷瀹?br>
#undef [MacroName]
鏅氬畯
#define PI (3.1415926)
甯﹀弬鏁扮殑瀹?br>
#define max(a,b) ((a)>(b)? (a),(b))
鍏抽敭鏄崄鍒嗗鏄撲駭鐢熼敊璇紝鍖呮嫭鏈哄櫒鍜屼漢鐞嗚В涓婄殑宸紓絳夌瓑銆?br>
6.鏉′歡緙栬瘧
#ifdef XXX…(#else) …#endif
渚嬪 #ifdef DV22_AUX_INPUT
#define AUX_MODE 3
#else
#define AUY_MODE 3
錛僥ndif
#ifndef XXX … (#else) … #endif
7.澶存枃浠?.h)鍙互琚ご鏂囦歡鎴朇鏂囦歡鍖呭惈錛?br>
閲嶅鍖呭惈錛堥噸澶嶅畾涔夛級(jí)
鐢變簬澶存枃浠跺寘鍚彲浠ュ祵濂楋紝閭d箞C鏂囦歡灝辨湁鍙兘鍖呭惈澶氭鍚屼竴涓ご鏂囦歡錛屽氨鍙兘鍑虹幇閲嶅瀹氫箟鐨勯棶棰樼殑銆?br>
閫氳繃鏉′歡緙栬瘧寮鍏蟲(chóng)潵閬垮厤閲嶅鍖呭惈錛堥噸澶嶅畾涔夛級(jí)
渚嬪
#ifndef __headerfileXXX__
錛僤efine __headerfileXXX__
…
鏂囦歡鍐呭
…
#endif
浠ヤ笂鍙槸鎴戜粠緗戠粶涓婃悳闆嗕簡(jiǎn)涓浜涘叧浜巇efine鐨勪竴浜涚敤娉曪紝鍙兘榪樹(shù)笉鍏ㄩ潰錛岃屼笖#define鐨勪嬌鐢ㄦ湰鏉ヤ篃瀛樺湪榪欎簤璁紝濡傛灉浣犲#define鐨勭敤娉曚篃寰堟湁鍏磋叮錛屽彲浠ユ潵鍙傚姞鎴戜滑鐨勮璁猴紙鐐瑰嚮涓嬮潰鐨勯摼鎺ワ級(jí)http://www.dingge.com/forum/dispbbs.asp?boardID=43&ID=6972&page=1 


#define 鐨勬敞鎰忕敤娉?nbsp;
鍦ㄨ繖閲屾垜浠璁?define鐨勪竴浜涜鐢紝鍥犱負(fù)涓婁竴鐗囧凡緇忚浜?jiǎn)瀹冪殑涓昏浣滅敤锛寴q欑瘒涓昏鏄竴浜涙瘮杈冨父瑙佺殑瀹忛櫡闃便傞鍏堣交鏉句竴涓嬨傚涓嬬殑涓涓粡鍏鎬緥瀛愩?br>
#define private public
#include
using namespace std;
class c
{
private:
int i;
};
int main()
{
c c1;
c1.i=1;
cout<}
#define 绔熺劧璁﹑rivate濡傛鐨勮剢寮憋紝浣嗘槸鍗存彮紺轟簡(jiǎn)#define闄烽槺鐨勬牴婧愶紝瀹冧粎浠呮槸浠g爜鏇挎崲鏈哄埗鑰屽凡錛岄櫎姝や箣澶栵紝瀹冧粈涔堥兘涓嶆槸銆?br>
璁╂垜浠鍏ユ棰橈紝鏉ョ湅鐪嬩笅闈㈢殑涓涓畾涔変細(xì)浜х敓涓涓粈涔堟牱鐨勯敊璇紵
#define f (x) ((x)-1)
濡傛灉榪欎釜鏄竴涓嚱鏁板氨娌℃湁浠涔堥棶棰?br>
int f (int x) { return x-1; }
浣嗘槸榪欓噷鏄痙efine鐨勪笘鐣岋紝f(x)鍙鍑虹幇浜?jiǎn)涓涓彲鎬曠殑絀烘牸
浣垮緱浣垮緱紼嬪簭涓鏋滃嚭鐜頒簡(jiǎn)
f(10)
榪欎釜浠g爜錛屾渶緇堝氨鍙樻垚浜?br>
(10) (10-1)(10)榪欐牱涓涓鎬殑涓滆タ錛屽綋鐒惰繖涓唬鐮佸掓槸鏃犳硶閫氳繃緙栬瘧錛岃繕鏄彲浠ユ鏌ュ嚭鏉ョ殑銆傜畻鏄鎴戜滑閫冭繃浜?jiǎn)涓嬈★紝涓嬫灝辨病鏈夐偅涔堝垢榪愪簡(jiǎn)錛岃鎴戜滑緇х畫(huà)銆?br>
#define abs(x) x>0? x:-x (寮曠敤鑷狢璇█闄烽槺涓庣己闄?
榪欎釜浠g爜鏈変粈涔堥棶棰橈紵涔熻澶у涔熸敞鎰忓埌浜?jiǎn)锛屾垜涓鐩村湪鐢ㄦ棤鏁扮殑錛堬級(jí)鏉ュ啓#define錛屼笉鏄洜涓烘垜寰堝枩嬈?)榪欎釜涓滆タ錛岃屾槸褰撴垜鍦ㄨ繘琛屽涓嬬殑璋冪敤鐨勬椂鍊欍?br>
z = abs(a-b) //鍛滃懠錛岃繖灝嗕駭鐢熶粈涔堜笢瑗垮憿錛?br>
絳旀鏄細(xì)
a-b>0? a-b : -a-b
榪欎釜鏄劇劧涓嶆槸鎴戜滑瑕佺殑緇撴灉錛屽洜涓哄綋a-b<0鐨勬椂鍊欏皢榪斿洖涓涓?/span>-a-b錛岃瑙e喅榪欎釜闂錛屾垜浠氨瑕佷嬌鐢?)鏉ヨВ鍐熾?br>
#define abs(x) (x)>0? (x):-(x)
鐜板湪榪欎釜浠g爜灝卞彲浠ユ甯哥殑宸ヤ綔浜?jiǎn)銆傚彧瑕佹垜浠揣璁?define鏄唬鐮佹浛鎹㈢殑鏈哄埗錛屼笉瑕佸瀹冩湁浠諱綍鐨勫ア姹傦紝灝變細(xì)閬垮厤涓婇潰鐨勯棶棰樸傚彟澶栵紝鍥犱負(fù)瀹忎笉鏄竴涓被鍨嬶紝娌℃湁鏁版嵁瀹夊叏媯(gè)鏌ワ紝鍦ㄨ皟璇曠殑鏃跺欎篃浼?xì)漶旂敓闅溂剭锛屾墍浠ワ紝C++灝變竴鐩存彁鍊′嬌鐢╟onst鍜宨nline鏉ユ浛鎹?define錛屼篃璁革紝#define鐪熺殑浼?xì)鍦ㄥ巻鍙茬殑鑸炲忣C笂娑堝け錛屼絾define鍦–璇█鏃朵唬鐣欎笅鐨勫姛緇╁嵈涓嶅簲璇ュ繕璁般?br>

鏉ヨ嚜 http://community.csdn.net/Expert/topic/3195/3195102.xml?temp=.3936731
//http://acm.hnu.cn:8080/online/discuss/hostandfollow.jsp?hostid=97&problemid=10030
//pow鍑芥暟姣旇緝涓嶇ǔ瀹氾紝鍙互鐢ㄨ嚜瀹氫箟鐨刾own鍑芥暟榪涜璁$畻錛?nbsp;
//http://acm.pku.edu.cn/JudgeOnline/problem?id=3199
#include<stdio.h>
#include<math.h>
__int64 pown(__int64 base,__int64 n)
{
if(n==0)return 1;
if(n==1)return base;
if(n%2==0)return pown(base*base,n/2);
else return pown(base*base,n/2)*base;
}
int main()
{
int N,D;
int base=1000000000;
double maxn=pow(2.0,62.5);
while(scanf("%d%d",&N,&D)&&(N!=0||D!=0)){
double max=pow(N,D);
if(max<=maxn){
printf("%I64d\n",pown(N,D));
continue;
}
__int64 a1 = pown(N, D / 2);
__int64 a2 = pown(N, D - D / 2);
__int64 a1h = a1 / base, a1l = a1 % base;
__int64 a2h = a2 / base, a2l = a2 % base;
__int64 low = a1l * a2l;
__int64 hih = a1h * a2h * base + a1h * a2l + a2h * a1l + low / base;
printf("%I64d", hih);
printf("%09I64d\n", low % base);//09鏍煎紡鍖栵紝9浣嶄笉瓚沖乏杈圭敤0琛ュ厖涓婏紱
}
return 0;
}
#include<stdio.h>
#include<memory.h>
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
string a,b;
string c;
multimap<string,string>authors;
typedef multimap<string,string>::size_type sz_type;
while(cin>>a>>b){//杈撳叆閿煎拰涓瀹炰緥錛?br>
authors.insert(make_pair(a,b));
sz_type entries = authors.count(a);
multimap<string,string>::iterator iter = authors.find(a);
for(sz_type i=0;i!=entries;i++,iter++){
cout << iter->second << endl;
}
cin>>b;//鍒犻櫎鏌愪釜瀹炰緥錛?br>
multimap<string,string>::iterator it = authors.find(a);
for(sz_type j=0;j!=entries;j++,it++){
cout<< it->second << endl;
if(it->second==b){
authors.erase(it);//it鎸囬拡琚垹闄わ紱
break;
}
}
}
return 0;
}
//澶氭簮鏈鐭礬錛?br>
//鏈灝忚礬寰勮鐩栵紱
//http://acm.pku.edu.cn/JudgeOnline/problem?id=3216
#include<stdio.h>
#include<memory.h>
#include<iostream>
using namespace std;
#define MAX 21
#define M 201
#define INFF -1
bool b[M];
int n,m,ans;
int g[MAX][MAX];//璺緞鐨勯偦鎺ョ煩闃碉紱
int link[M];
int p[MAX][MAX];
int d[MAX][MAX];
int x[M],y[M],z[M];
/*==========================================
http://topic.csdn.net/t/20020703/16/847300.html
澶氭簮鏈鐭礬寰?nbsp;
Floyd-Warshall 綆楁硶
d[i,j]琛ㄧず浠巌鍒癹鐨勬渶鐭窛紱伙紱
p[i,j]琛ㄧず浠巌鍒癹鐨勬渶鐭礬寰勪笂j鐨勭埗鑺傜偣
===========================================*/
void Floyd_Washall(){
int i,j,k;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
d[i][j]=g[i][j];
p[i][j]=i;
}
}
for(i=1;i<=n;i++){
d[i][i]=0;
p[i][i]=0;
}
for(k=1;k<=n;k++){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(d[i][k]>=0&&d[k][j]>=0&&(d[i][j]>d[i][k]+d[k][j]||d[i][j]==INFF)){
d[i][j]=d[i][k]+d[k][j];
p[i][j]=p[k][j];
}
}
}
}
}
//鏈灝忚礬寰勮鐩栵紱
bool find(int a)
{
int j;
int r=x[a];
for(int i=1;i<=m;i++){
j=x[i];
if(d[r][j]>=0&&y[a]+z[a]+d[r][j]<=y[i]&&!b[i]){
b[i]=true;
if(link[i]==0||find(link[i])){
link[i]=a;
return true;
}
}
}
return false;
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&m)!=EOF&&(n||m)){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
scanf("%d",g[i]+j);
}
}
for(i=1;i<=m;i++){
scanf("%d%d%d",x+i,y+i,z+i);
}
Floyd_Washall();
ans=0;
memset(link,0,sizeof(link));
for(i=1;i<=m;i++){
memset(b,0,sizeof(b));
if(find(i)){
ans++;
}
}
printf("%d\n",m-ans);
}
return 0;
}
#include<iostream.h>
int main(){
int n,**p;
cin>>n;
p=new int*[n];
for(int i=0;i<n;i++){
p[i]=new int[n];
for(int j=0;j<n;j++){
cin>>p[i][j];
cout << p[i][j] << " ";
}
cout << endl;
}
return 0;
}
/*********************************************
http://acm.pku.edu.cn/JudgeOnline/problem?id=3217
閭繪帴璺濋樀錛?br>
鍏朵腑 insert()鍑芥暟鏄瀯閫犻偦鎺ヨ窛闃碉紱
find()鍑芥暟鏄亶鍘嗚窛闃佃妭鐐癸紱
**********************************************/
#include<stdio.h>
#include<memory.h>
#include<iostream>
using namespace std;
#define MAX 101
int n;
struct CON{//鑺傜偣鐨勭埗鎴栧瓙鑺傜偣淇濆瓨鐨勪俊鎭紱
int pos;
CON *g;
};
struct NODE{
int sex;
int d1,d2;
CON *p,*son;//姝よ妭鐐圭殑鐖惰妭鐐逛互鍙?qiáng)瀛愯妭鐐瑰Q?br>
}a[MAX];
int ans;
int rec[MAX];
int c1,c2;
void Insert(int num,int con){
CON *h=new CON;
if(a[num].son==NULL){
h->pos=con;
h->g=NULL;
a[num].son=h;
}
else{
h->pos=con;
h->g=a[num].son;
a[num].son=h;
CON *g = a[num].son;
if(num==19){
while(g){
g=g->g;
}
}
}
CON *t = new CON;
if(a[con].p==NULL){
t->pos=num;
t->g=NULL;
a[con].p=t;
}
else{
t->pos=num;
t->g=a[con].p;
a[con].p=t;
}
}
int Find1(int t){
CON *h = a[t].p;
int k;
rec[t]=1;
/*********
/* 閬嶅巻鐖朵翰鑺傜偣錛?br>
*/
while(h){
k=h->pos;
a[k].d1=a[t].d1+1;
Find1(k);
h = h->g;
}
//閬嶅巻鍎垮瓙鑺傜偣錛?br>
/*
CON *g = a[t].son;
int j;
while(g){
j=h->pos;
a[j].d1=a[t].d1+1;
Find1(k);
h=h->g;
}*/
return 0;
}
int Find2(int t){
CON *h = a[t].p;
int k;
rec[t]=1;
while(h){
k=h->pos;
a[k].d2=a[t].d2+1;
Find2(k);
h = h->g;
}
return 0;
}
int main(){
int num;
int con,i;
NODE gg;
gg.p=gg.son=NULL;
gg.sex=1;
gg.d1=gg.d2=1000;
for(i=1;i<=100;i++){
a[i]=gg;
}
scanf("%d%d",&c1,&c2);
while(scanf("%d",&num)!=EOF){
while(scanf("%d",&con)&&con!=0&&con!=-1){
Insert(num,con);
}
a[num].sex=con;
}
if(a[c1].sex==a[c2].sex){
printf("same\n");
}
else{
a[c1].d1=0;
Find1(c1);
a[c2].d2=0;
Find2(c2);
ans=0;
for(i=1;i<=100;i++){
if(a[i].d1<3&&a[i].d2<3){
ans=1;
break;
}
}
if(ans){
printf("close\n");
}
else{
printf("marriage\n");
}
}
return 0;
}
銆銆瀵逛簬涓涓簭鍒梐[0]...a[n]錛岃F[i]琛ㄧず鍒扮i涓暟涓烘鐨勬渶澶т笂鍗囧瓙搴忓垪錛屾垜浠冭檻濡傝繖縐嶆儏鍐碉紝瀛?br>鍦?<=y<x<i=n錛岃嫢婊¤凍
(1) y<x<i;
(2) a[x]<a[y]<a[i];
(3) |F[x]| == |F[y]|;
(4) a[j] < a[x], y < j < x
銆銆鍒欐鏃禙[i]搴旇鐢盕[x]鎵╁睍鑰屾潵錛屽洜涓哄彲鑳藉瓨鍦▃婊¤凍
(1) y<x<z<i;
(2) a[x]<a[z]<a[y]<a[i]
(3) z < min{j | a[j]>a[y], j > x}
銆銆鍒欐鏃剁敤F[x]鎵╁睍寰楀埌F[i]灝嗛暱浜嶧[y]鎵╁睍寰楀埌鐨勫瓙搴忓垪銆?鐢辨鍙緱鍑虹粨璁猴紝鍘熷簭鍒楃i涓厓绱犱箣鍓嶆渶闀?br>瀛愬簭鍒楃殑瑙e彲鑳藉瓨鍦ㄥ緢澶氾紝浣嗘垜浠彧闇瑕佸敖鍙兘浣垮緱閭d釜鏈闀垮瓙搴忓垪鐨勬渶鍚庝竴涓厓绱犵殑鍊兼渶灝忥紝灝辮兘鍚戝悗鎵╁睍寰?br>鍒板師涓叉渶闀垮瓙搴忓垪銆?/p>
銆銆姹傝В鐨勮繃紼嬩緷鐒舵槸涓涓姩鎬佽鍒掔殑榪囩▼錛屾垜浠噰鐢ㄤ竴涓暟緇刣[k]錛屾潵鎻忚堪鍒扮姸鎬乮鏃墮暱搴︿負(fù)k鐨勫瓙搴忓垪鏈鍚庝竴
涓厓绱犵殑鏈灝忓箋備粠鐘舵乮-1杞Щ鍒扮姸鎬乮鏃訛紝a[i]鐨勫姞鍏ュ獎(jiǎng)鍝嶅埌鏁扮粍涓殑d[k]錛宬婊¤凍
k = max{a[i]>d[j]} + 1
姝ゆ椂鏈?/p>
d[k] = min{d[k], a[i]}
銆銆鐢辨鎴戜滑浼?xì)鍙戠幇鏁熬l刣涓涓槑鏄劇殑鐗瑰緛錛屽嵆d鏄竴涓崟璋冧笂鍗囩殑搴忓垪錛屽埄鐢ㄨ繖涓壒鎬э紝鎴戜滑鍙互閲囩敤浜屽垎娉曟潵
鏌ユ壘k鐨勫鹼紝榪欐牱浣垮緱鏁翠綋鐨勬椂闂村鏉傚害浠庡師鏉ョ殑n2鍙樹(shù)負(fù)nlog2n錛屼絾鏄湪璁捐榪囩▼涓簲璇ヨ娉ㄦ剰鍒版暟緇刣鐨勯鍏冪礌
鍜屽熬鍏冪礌鐨勫鐞嗐傛渶鍚庯紝鎴戜滑鎵闇瑕佺殑鍊煎氨鏄湪鏈姸鎬佹椂d鏁扮粍鐨勬渶澶т笅鏍囧鹼紝榪欓噷鍊煎緱娉ㄦ剰鐨勬槸鏁扮粍d鐨勪笅琛ㄧ殑
鏈澶у煎簲璇ユ槸鍦ㄥ彉鍖栫殑鈥斺斿弽瑙傚畾涔夊垯鍙槑鏄懼湴寰楀埌榪欎釜鐗規(guī)с?/p>
銆銆涓涓嬫槸涓孌墊簮浠g爜錛屾祴璇曡繃涓涓皬鏁版嵁錛岃璁′腑鍙戠幇鏁翠釜綆楁硶鐨勯毦鐐瑰湪浜庝簩鍒嗘硶鏌ユ壘鐨勮璁°?br>*/
#include <cstdio>
#include <cstdlib>
#include <climits>
#include <iostream>
using namespace std;
#define MAX 1000
int a[MAX];
int d[MAX];
int max_subsequence (const int size )
{
int n;
d[ n = 0 ] = a[ 0 ];
for ( int i = 1; i < size; i++ )
if ( d[ n ] < a[ i ] )
d[ ++n ] = a[ i ];
else if ( d[ 0 ] > a[ i ] )
d[ 0 ] = a[ i ];
else
{
int left = 0, right = n, mid = n / 2, key = a[ i ];
while ( left < right ){
if ( d[ mid ] == key )
{
mid--;
break;
}
if ( d[ mid ] > key )
{
right = mid;
mid = ( left + right ) / 2;
}
else if ( mid > left )
{
left = mid;
mid = ( left + right ) / 2;
}
else
break;
}
if ( d[ mid + 1 ] > key )
d[ mid + 1 ] = key;
}
return n + 1;
}
int main ( )
{
int n;
scanf ( "%d", &n );
for ( int i = 0; i < n; i++ )
scanf ( "%d", &a[ i ] );
printf ( "%d\n", max_subsequence ( n ) );
// system ( "pause" );
return 0;
}
