锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
TJU 1731. Strange Towers of Hanoi
#include<stdio.h>
int main()

{
int a[13]=
{0,1,3,5,9,13,17,25,33,41,49,65,81};
for(int i=1;i<=12;i++)
printf("%d\",a[i]);
}
鐪熸鐨勯鐩繕鏄澀鐢典笂鐨?nbsp; http://acm.hdu.edu.cn/showproblem.php?pid=1207
#include<stdio.h>
#include<math.h>
int main()

{
long a[65];
a[1]=1;
long i,j,n,m,r;
for(i=2,j=1,r=1,m=2;i<66;i++,j++)
if(j<=m)
a[i]=a[i-1]+pow(2,r);
else
{
m++;
j=1;
r++;
a[i]=a[i-1]+pow(2,r);
}
while(scanf("%d",&n)==1)
{
printf("%d\n",a[n]);
}
}
a[2]=a[1]+2;a[3]=a[2]+2;(2涓姞2^1)
a[4]=a[3]+4;a[5]=a[4]+4;a[6]=a[5]+4;(3涓姞2^2);
…………………………………………(4涓姞2^3);
O(∩_∩)O~
銆1銆?/font>Dijkstra綆楁硶
銆2銆?/font>Floyd綆楁硶
銆3銆?/font>Kruskal綆楁硶
銆4銆?/font>Prim綆楁硶
銆5銆?/font>嬈ф媺鍥炶礬
Dijkstra綆楁硶
Dijkstra綆楁硶鏄吀鍨嬫渶鐭礬綆楁硶錛岀敤浜庤綆椾竴涓妭鐐瑰埌鍏朵粬鎵鏈夎妭鐐圭殑鏈鐭礬寰勩備富瑕佺壒鐐規槸浠ヨ搗濮嬬偣涓轟腑蹇冨悜澶栧眰灞傛墿灞曪紝鐩村埌鎵╁睍鍒扮粓鐐逛負姝€侱ijkstra綆楁硶鑳藉緱鍑烘渶鐭礬寰勭殑鏈浼樿В錛屼絾鐢變簬瀹冮亶鍘嗚綆楃殑鑺傜偣寰堝錛屾墍浠ユ晥鐜囦綆銆?br>Dijkstra綆楁硶鏄緢鏈変唬琛ㄦх殑鏈鐭礬綆楁硶錛屽湪寰堝涓撲笟璇劇▼涓兘浣滀負鍩烘湰鍐呭鏈夎緇嗙殑浠嬬粛錛屽鏁版嵁緇撴瀯錛屽浘璁猴紝榪愮瀛︾瓑絳夈?br>Dijkstra涓鑸殑琛ㄨ堪閫氬父鏈変袱縐嶆柟寮忥紝涓縐嶇敤姘鎬箙鍜屼復鏃舵爣鍙鋒柟寮忥紝涓縐嶆槸鐢∣PEN, CLOSE琛ㄦ柟寮忥紝Drew涓轟簡鍜屼笅闈㈣浠嬬粛鐨?A* 綆楁硶鍜?D* 綆楁硶琛ㄨ堪涓鑷達紝榪欓噷鍧囬噰鐢∣PEN,CLOSE琛ㄧ殑鏂瑰紡銆?/p>
澶ф榪囩▼錛?br>鍒涘緩涓や釜琛紝OPEN, CLOSE銆?br>OPEN琛ㄤ繚瀛樻墍鏈夊凡鐢熸垚鑰屾湭鑰冨療鐨勮妭鐐癸紝CLOSED琛ㄤ腑璁板綍宸茶闂繃鐨勮妭鐐廣?br>1錛?璁塊棶璺綉涓噷璧峰鐐規渶榪戜笖娌℃湁琚鏌ヨ繃鐨勭偣錛屾妸榪欎釜鐐規斁鍏PEN緇勪腑絳夊緟媯鏌ャ?br>2錛?浠嶰PEN琛ㄤ腑鎵懼嚭璺濊搗濮嬬偣鏈榪戠殑鐐癸紝鎵懼嚭榪欎釜鐐圭殑鎵鏈夊瓙鑺傜偣錛屾妸榪欎釜鐐規斁鍒癈LOSE琛ㄤ腑銆?br>3錛?閬嶅巻鑰冨療榪欎釜鐐圭殑瀛愯妭鐐廣傛眰鍑鴻繖浜涘瓙鑺傜偣璺濊搗濮嬬偣鐨勮窛紱誨鹼紝鏀懼瓙鑺傜偣鍒癘PEN琛ㄤ腑銆?br>4錛?閲嶅2錛?錛屾銆傜洿鍒癘PEN琛ㄤ負絀猴紝鎴栨壘鍒扮洰鏍囩偣銆?/p>
Floyd綆楁硶
Floyd-Warshall 綆楁硶鐢ㄦ潵鎵懼嚭姣忓鐐逛箣闂寸殑鏈鐭窛紱匯傚畠闇瑕佺敤閭繪帴鐭╅樀鏉ュ偍瀛樿竟錛岃繖涓畻娉曢氳繃鑰冭檻鏈浣沖瓙璺緞鏉ュ緱鍒版渶浣寵礬寰勩?
娉ㄦ剰鍗曠嫭涓鏉¤竟鐨勮礬寰勪篃涓嶄竴瀹氭槸鏈浣寵礬寰勩?
浠庝換鎰忎竴鏉″崟杈硅礬寰勫紑濮嬨傛墍鏈変袱鐐逛箣闂寸殑璺濈鏄竟鐨勬潈錛屾垨鑰呮棤絀峰ぇ錛屽鏋滀袱鐐逛箣闂存病鏈夎竟鐩歌繛銆?
瀵逛簬姣忎竴瀵歸《鐐?u 鍜?v錛岀湅鐪嬫槸鍚﹀瓨鍦ㄤ竴涓《鐐?w 浣垮緱浠?u 鍒?w 鍐嶅埌 v 姣斿繁鐭ョ殑璺緞鏇寸煭銆傚鏋滄槸鏇存柊瀹冦?
涓嶅彲鎬濊鐨勬槸錛屽彧瑕佹寜鎺掗傚綋錛屽氨鑳藉緱鍒扮粨鏋溿?
// dist(i,j) 涓轟粠鑺傜偣i鍒拌妭鐐筳鐨勬渶鐭窛紱?br>For i←1 to n do
For j←1 to n do
dist(i,j) = weight(i,j)
For k←1 to n do // k涓?#8220;濯掍粙鑺傜偣”
For i←1 to n do
For j←1 to n do
if (dist(i,k) + dist(k,j) < dist(i,j)) then // 鏄惁鏄洿鐭殑璺緞錛?br>dist(i,j) = dist(i,k) + dist(k,j)榪欎釜綆楁硶鐨勬晥鐜囨槸O(V3)銆傚畠闇瑕侀偦鎺ョ煩闃墊潵鍌ㄥ瓨鍥俱?br>榪欎釜綆楁硶寰堝鏄撳疄鐜幫紝鍙鍑犺銆?
鍗充嬌闂鏄眰鍗曟簮鏈鐭礬寰勶紝榪樻槸鎺ㄨ崘浣跨敤榪欎釜綆楁硶錛屽鏋滄椂闂村拰絀洪棿鍏佽(鍙鏈夋斁鐨勪笅閭繪帴鐭╅樀鐨勭┖闂達紝鏃墮棿涓婂氨娌¢棶棰?銆?
[緙栬緫] 鏃墮棿澶嶆潅搴?O(N^3)
Kruskal綆楁硶
鍩烘湰鎬濇兂
鍋囪WN=(V,{E})鏄竴涓惈鏈塶涓《鐐圭殑榪為氱綉錛屽垯鎸夌収鍏嬮瞾鏂崱灝旂畻娉曟瀯閫犳渶灝忕敓鎴愭爲鐨勮繃紼嬩負錛氬厛鏋勯犱竴涓彧鍚玭涓《鐐癸紝鑰岃竟闆嗕負絀虹殑瀛愬浘錛岃嫢灝嗚瀛愬浘涓悇涓《鐐圭湅鎴愭槸鍚勬5鏍戜笂鐨勬牴緇撶偣錛屽垯瀹冩槸涓涓惈鏈塶媯墊爲鐨勪竴涓.鏋椼備箣鍚庯紝浠庣綉鐨勮竟闆咵涓夊彇涓鏉℃潈鍊兼渶灝忕殑杈癸紝鑻ヨ鏉¤竟鐨勪袱涓《鐐瑰垎灞炰笉鍚岀殑鏍戯紝鍒欏皢鍏跺姞鍏ュ瓙鍥撅紝涔熷氨鏄錛屽皢榪欎袱涓《鐐瑰垎鍒墍鍦ㄧ殑涓ゆ5鏍戝悎鎴愪竴媯墊爲錛涘弽涔嬶紝鑻ヨ鏉¤竟鐨勪袱涓《鐐瑰凡钀藉湪鍚屼竴媯墊爲涓婏紝鍒欎笉鍙彇錛岃屽簲璇ュ彇涓嬩竴鏉℃潈鍊兼渶灝忕殑杈瑰啀璇曚箣銆備緷嬈$被鎺紝鐩磋嚦媯灄涓彧鏈変竴媯墊爲錛屼篃鍗沖瓙鍥句腑鍚湁n-1鏉¤竟涓烘銆?lt;/p>
Procedure kruskal(V,E);
begin
sort(E,1,m);//灝嗚竟鎸夌収鏉冨兼帓搴?br>for t:=1 to n do begin
if getfather(edge[t].u)<>getfather(edge[t].v) then begin //鍒╃敤騫舵煡闆嗗垽鏂袱涓《鐐規槸鍚﹀湪鍚屼竴闆嗗悎鍐?br>tot:=tot+edge[t].data;//璁$畻鏉冨煎拰
union(edge[t].u,edge[t].v);//鍚堝茍欏剁偣
inc(k);//鍚堝茍嬈℃暟
end;
end;
if k=n-1 then 褰㈡垚浜嗕竴媯墊渶灝忕敓鎴愭爲
else 涓嶅瓨鍦ㄨ繖鏍風殑鏈灝忕敓鎴愭爲錛?br>end;
浼樺寲錛氬湪鍒ゆ柇涓や釜欏剁偣鏄惁鍦ㄥ悓涓闆嗗悎鍐呮椂鍙敤騫舵煡闆?銆
鍩烘湰鎬濇兂
1. 鍦ㄥ浘G=(V, E) 錛圴琛ㄧず欏剁偣 錛孍琛ㄧず杈癸級涓紝浠庨泦鍚圴涓換鍙栦竴涓《鐐癸紙渚嬪鍙栭《鐐箆0錛夋斁鍏ラ泦鍚?U涓紝榪欐椂 U={v0}錛岄泦鍚圱(E)涓虹┖銆?br>2. 浠巚0鍑哄彂瀵繪壘涓嶶涓《鐐圭浉閭伙紙鍙︿竴欏剁偣鍦╒涓級鏉冨兼渶灝忕殑杈圭殑鍙︿竴欏剁偣v1錛屽茍浣縱1鍔犲叆U銆傚嵆U={v0,v1 }錛屽悓鏃跺皢璇ヨ竟鍔犲叆闆嗗悎T(E)涓?br>3. 閲嶅2錛岀洿鍒癠=V涓烘銆?br>榪欐椂T(E)涓湁n-1鏉¤竟錛孴 = (U, T(E))灝辨槸涓媯墊渶灝忕敓鎴愭爲銆?/p>
PASCAL浠g爜
procedure prim(v0:integer);
var
lowcost,closest:array[1..maxn] of integer;
i,j,k,min:integer;
begin
for i:=1 to n do begin
lowcost[i]:=cost[v0,i];
closest[i]:=v0;
end;
for i:=1 to n-1 do begin
{瀵繪壘紱葷敓鎴愭爲鏈榪戠殑鏈姞鍏ラ《鐐筴}
min:=maxlongint;
for j:=1 to n do
if (lowcost[j]<min) and (lowcost[j]<>0) then begin
min:=lowcost[j];
k:=j;
end;
lowcost[k]:=0; {灝嗛《鐐筴鍔犲叆鐢熸垚鏍憓
{鐢熸垚鏍戜腑澧炲姞涓鏉℃柊鐨勮竟k鍒癱losest[k]}
{淇鍚勭偣鐨刲owcost鍜宑losest鍊紏
for j:=1 to n do
if cost[k,j]<lowcost[j] then begin
lowcost[j]:=cost[k,j];
closest[j]:=k;
end;
end;
end;{prim}
嬈ф媺鍥炶礬
瀹氫箟錛?br>鍦ㄤ竴涓浘涓紝瀵繪壘涓鏉″彧閫氳繃姣忔潯杈逛竴嬈$殑璺緞錛岃繖鍙仛嬈ф媺璺緞錛屽鏋滆搗鐐瑰拰緇堢偣鏄悓涓鐐癸紝閭d箞榪欐潯鍥炶礬鍙仛嬈ф媺鍥炶礬錛?br>鍒ゅ畾涓涓浘涓槸鍚﹀瓨鍦ㄦ鎷夊洖璺細騫朵笉鏄瘡涓浘閮藉瓨鍦ㄦ鎷夊洖璺紟浠ヤ笅鍒嗕笁縐嶆儏鍐碉細
鏃犲悜鍥撅細姣忎釜鐐圭殑搴︽暟鏄伓鏁幫紝鍒欏瓨鍦ㄦ鎷夊洖璺紟
鏈夊悜鍥撅細姣忎釜緇撶偣鐨勫叆搴︾瓑浜庡嚭搴︼紝鍒欒繖涓湁鍚戝浘涓瓨鍦ㄦ鎷夊洖璺紟
鎬葷粨錛氫互涓婁袱縐嶆儏鍐靛緢綆鍗曪紝鍏跺師鐞嗗綊鏍圭粨搴曟槸姣忎釜緇撶偣榪涘叆鍜屽嚭鍘葷殑璺緞鏉℃暟鐩哥瓑錛屽氨瀛樺湪嬈ф媺鍥炶礬錛庤繕鏈変竴縐嶆洿鍔犲鏉傜殑鎯呭喌錛庨偅灝辨槸娣峰悎鍥撅紟
娣峰悎鍥撅細錛堟湁鏃惰竟鏄崟鍚戠殑錛屾湁鏃惰竟鏄棤鍚戠殑錛屽氨鍍忓煄甯備氦閫氱綉緇滐紝鏈夌殑琛楅亾鏄崟鍚戠殑錛屾湁鐨勮閬撴槸鍙屽悜鐨勶級鎵句竴涓粰姣忎釜鏃犲悜杈瑰畾鍚戠殑絳栫暐錛岃繖鏍峰氨鍙互鎶婂浘杞寲鎴愪負鏈夊悜鍥撅紝浣挎瘡涓《鐐圭殑鍏ュ害涓庡嚭搴︽槸鐩哥瓑鐨勶紝榪欐牱灝變細瀛樺湪嬈ф媺鍥炶礬錛?br>鍏蜂綋榪囩▼濡備笅錛氭柊寤轟竴涓浘錛屽浜庡師鍥句腑鐨勬棤鍚戣竟錛屽湪鏂板浘涓柊鍔犱竴涓《鐐筫(i);瀵逛簬鍘熷浘涓殑姣忎竴涓《鐐筳錛屽湪鏂板浘涓緩涓涓《鐐箆(i)錛屽浜庡師鍥句腑姣忎竴涓《鐐筳鍜宬涔嬮棿鏈変竴鏉℃棤鍚戣竟i錛岄偅涔堝湪鏂板浘涓粠e(i)鍑哄彂錛屾坊鍔犱袱鏉¤竟錛屽垎鍒繛鍚憊(j)鍜寁(k)錛屽閲忛兘鏄?錛?br>鍦ㄦ柊鍥句腑錛屼粠婧愮偣鍚戞墍鏈夌殑e(i)閮借繛涓鏉″閲忎負1鐨勮竟錛? 瀵逛簬鍘熷浘涓瘡涓涓《鐐筳錛屽畠鍘熸湰閮芥湁涓涓叆搴n銆佸嚭搴ut鍜屾棤鍚戝害un銆傛樉鐒舵垜浠殑鐩殑鏄鎶婃墍鏈夋棤鍚戝害閮藉彉鎴愬叆搴︽垨鍑哄害錛屼粠鑰屼嬌瀹冪殑鍏ュ害絳変簬鎬誨害鏁扮殑涓鍗婏紝涔熷氨鏄?in + out + un) / 2錛堟樉鐒朵笌姝ゅ悓鏃跺嚭搴︿篃鏄誨害鏁扮殑涓鍗婏紝濡傛灉鎬誨害鏁版槸鍋舵暟鐨勮瘽錛夈傚綋鐒訛紝濡傛灉in宸茬粡澶т簬鎬誨害鏁扮殑涓鍗婏紝鎴栬呮誨害鏁版槸濂囨暟錛岄偅涔堟鎷夊洖璺偗瀹氫笉瀛樺ぇ銆傚鏋渋n灝忎簬鎬誨害鏁扮殑涓鍗婏紝騫朵笖鎬誨害鏁版槸鍋舵暟錛岄偅涔堟垜浠湪鏂板浘涓粠v錛坖錛夊埌姹囩偣榪炰竴鏉¤竟錛屽閲忓氨鏄?in + out + un) / 2 – in錛屼篃灝辨槸鍘熷浘涓《鐐筳榪橀渶瑕佸灝戝叆搴︺?br>鎸夌収榪欎釜緗戠粶妯″瀷綆楀嚭涓涓渶澶ф祦錛屽鏋滄瘡鏉′粠v(j)鍒版眹鐐圭殑杈歸兘杈懼埌婊℃祦閲忕殑璇濓紝閭d箞嬈ф媺鍥炶礬鎴愮珛銆?/p>
#include<stdio.h>
long max(long a,long b)

{
if(a>b)return a;
return b;
}
int main()

{
long i,n,m,ma;
static long a[1000001],b[1000001];
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
a[1]+=a[0];
b[1]+=b[0];
for(i=2;i<n;i++)
{
a[i]+=max(a[i-1],b[i-2]);
b[i]+=max(b[i-1],a[i-2]);
}
ma=max(b[n-1],a[n-1]);
printf("%d\n",ma);
}
}
#include<stdio.h>
long f(__int64 n)

{
while(n!=0)
{
if(n%10==7)return 1;
n/=10;
}
return 0;
}
int main()

{
static __int64 a[1000000],n,m,i,j=0,f1;
for(i=7;i<1000000000;i++)
{
if(f(i)||i%7==0)
a[j]++;
else
{
f1=1;
for(int k=0;k<j;k++)
if(a[j]<=a[k])f1=0;
if(f1)
{printf("p=%I64d,x=%I64d\n",a[j],i-a[j]);
j++;}
else a[j]=0;
}
}
}
#include<stdio.h>
int main()

{
long n,t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
if(n==1)printf("7\n");
else if(n==2)printf("27\n");
else if(n<=10)printf("70\n");
else if(n<=11)printf("270\n");
else if(n<=100)printf("700\n");
else if(n<=101)printf("2700\n");
else if(n<=1000)printf("7000\n");
else if(n<=1002)printf("26999\n");
else if(n<=10000)printf("70000\n");
else if(n<=10001)printf("270000\n");
else if(n<=100000)printf("700000\n");
else if(n<=100001)printf("1699999\n");
else if(n<=1000000)printf("7000000\n");
else if(n<=1000001)printf("27000000\n");
else if(n<=10000000)printf("70000000\n");
else if(n<=10000001)printf("270000000\n");
else printf("700000000\n");
}
}
#include<stdio.h>
int main()

{
int max,min,n,i,x,t,a[10001],sum1,sum2,s;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
max=0;
min=10001;
s=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
if(a[i]>=n&&a[i]<0)s=1;
}
if(s==1||n==1&&max==0)
{ printf("Impossible!\n"); continue;}
sum1=sum2=0;
if(max==min+1)
{
for(i=0;i<n;i++)
{
if(max==a[i])sum1++;
else sum2++;
}
if(sum2==max)printf("%d\n",max);
else printf("Impossible!\n");
}
else if(max==min)
{ if(max==0)printf("0\n");
else
{
if(max==n-1)printf("%d\n",n);
else printf("Impossible!\n"); }
}
else
printf("Impossible!\n");
}
}
#include<stdio.h>
int main()

{
int n,i,k,j,a[11][11],b[11][11];
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
scanf("%d",&k);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) //棣栧厛姹傝В姣忓驚鐜洓嬈$殑鎬誨拰*(k/4)
b[i][j]=(a[i][j]+a[j][n+1-i]+a[n+1-i][n+1-j]+a[n+1-j][i])*(k/4);
if(k%4==0)//鍐嶆眰瑙%4鐨勭粨鏋?br>
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]+=a[i][j];
else if(k%4==1)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]+=a[i][j]+a[n+1-j][i];
else if(k%4==2)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]+=a[i][j]+a[n+1-j][i]+a[n+1-i][n+1-j];
else
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
b[i][j]+=a[i][j]+a[n+1-j][i]+a[n+1-i][n+1-j]+a[j][n+1-i];
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d",b[i][j]);
if(j<n)
printf(" ");}
printf("\n");
}
}
}
#include<stdio.h>
int main()

{
long n;
while(scanf("%d",&n)==1)
{
if(n%3==0)printf("Cici\n");
else printf("Kiki\n");
}
}
#include<stdio.h>
int main()

{
long i,n,sum;
while(scanf("%d",&n)==1)
{
sum=1;
i=2;//榪借釜 1 鐨勪綅緗? 
while(i!=1)
{
if(i>n)
i=(i-n)*2-1;
else i*=2;
sum++;//琛ㄧず鎺掑簭鐨勬鏁?nbsp;
}
printf("%d\n",sum);
}
}
#include <stdio.h> //鏁頒負1鐨勬槸鏌愭暟鐨勫鉤鏂規垨鏌愭暟騫蟲柟鐨?鍊嶏紝涔嬪墠緇撴灉涔嬪拰鍙栦綑2
#include<math.h>
int main()

{
int t,sum;long long n,i,k;
scanf("%d",&t);
while(t--)
{
scanf("%I64d",&n);
sum=k=sqrt(n);
for(i=1;i<=k;i++)
{
if(i*i*2<=n)sum++;
}
sum=sum%2;
printf("%d\n",sum);
}
return 0;
}