锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 絎竴涓弬鏁版槸璧勬簮錛屾湁鍝簺璧勬簮鍛紵 RLIMIT_AS RLIMIT_CORE RLIMIT_CPU RLIMIT_DATA RLIMIT_FSIZE RLIMIT_LOCKS RLIMIT_MEMLOCK RLIMIT_NOFILE RLIMIT_NPROC RLIMIT_RSS RLIMIT_SBSIZE RLIMIT_STACK RLIMIT_VMEM 絎簩涓弬鏁版槸rlimit錛宺limit緇撴瀯鏄繖鏍風殑錛?/p>
struct rlimit 鍏朵腑鍚湁杞檺鍒跺拰紜檺鍒躲傝秴綰х敤鎴峰彲浠ュ鍔犵‖闄愬埗錛涗竴鑸敤鎴峰彲浠ラ檷浣庣‖闄愬埗錛屼絾涓嶈兘澧炲姞紜檺鍒訛紝涓鑸敤鎴瘋繕鍙慨鏀硅蔣闄愬埗錛屼絾淇敼鐨勮蔣闄愬埗涓嶈兘瓚呰繃紜檺鍒躲?/p>
瀹為檯榪愯鐨勬晥鏋滃浣曞憿錛熷疄璺典竴涓嬪惂錛?/p> 榪愯鐨勭粨鏋滐細 鍏堟潵鐪嬬湅Linux鍐呮牳涓紝鏂囦歡錛堣繕鏄澶囷級鏄氳繃鍝簺鏁版嵁緇撴瀯淇濆瓨鐨勶細 姣忎釜榪涚▼閮戒繚瀛樹竴浠芥枃浠舵弿榪扮鐨勮〃鏍鹼紝姣忎竴琛屽張鎸囧悜file table錛岀劧鍚巉ile table鍐嶆寚鍚憊-node table銆倂-node table鎴戜滑鍙互鏆備笉鑰冭檻錛屾殏涓旀妸瀹冨綋浣滄枃浠剁殑鍐呭銆傝屼粠process table entry涓殑file pointer鍙互鎸囧悜涓嶅悓鎴栬呯浉鍚岀殑file table銆傚師鏈爣鍑嗚緭鍏ヨ緭鍑烘槸鎸囧悜鈥滈敭鐩樷濆拰鈥滃睆騫曗濊繖涓や釜璁懼鐨勶紝濡傛灉鍙互灝嗗畠浠寚鍚戞垜浠寚瀹氱殑鏂囦歡錛屽氨鍙互瀹炵幇閲嶅畾鍚戜簡銆?/p> 鍏堢敤open()鎵撳紑闇瑕侀噸瀹氬悜鍒扮殑鏂囦歡錛岃幏鍙栧幓鏂囦歡鎻忚堪絎d錛屽湪鐢╠up2()鎶婅繘紼嬩腑鍘熷厛鐨勮緭鍏ヨ緭鍑烘枃浠舵弿榪扮STDIN_FILENO鍜孲TDOUT_FILENO閲嶅畾鍚戣嚦fd錛岃繖鏍峰氨鍙互瀹炵幇杈撳叆杈撳嚭閲嶅畾鍚戜簡銆傛垜鎯籌紝shell瀹炵幇閲嶅畾鍚戜篃搴旇鏄被浼肩殑鎬濇兂錛屽叧閿唬鐮佸涓嬶細int getrlimit(int resource, struct rlimit *rlptr);
璧勬簮
綺楃暐鍚箟
榪涚▼鍙嬌鐢ㄧ殑鍐呭瓨鐨勬渶澶у?/td>
鏍稿績鏂囦歡(core file)鐨勬渶澶у?/td>
CPU鏃墮棿鏈澶у?/td>
鏁版嵁孌碉紙宸插垵濮嬪寲鏁版嵁+鏈垵濮嬪寲鏁版嵁+鍫嗭級鐨勬渶澶у?/td>
鏂板緩鏂囦歡鐨勬渶澶у瓧鑺傛暟
鎸佹湁鐨勯攣鐨勬渶澶ф暟
閿佸畾鍐呭瓨鐨勬渶澶у瓧鑺傛暟
鎵撳紑鏂囦歡鐨勬渶澶ф暟鐩?/td>
姣忎釜瀹為檯鐢ㄦ埛(real user)鐨勬渶澶у瓙榪涚▼鏁扮洰
RSS(Resident Set Size)鐨勬渶澶у瓧鑺傛暟
socket buffer鐨勬渶澶у瓧鑺傛暟
榪涚▼鏍堢殑鏈澶у瓧鑺傛暟
涓嶳LIMIT_AS鍚箟涓鑷?/tt>
{
rlim_t rlim_cur; /* soft limit: current limit */
rlim_t rlim_max; /* hard limit: maximum value for rlim_cur */
};#include <stdio.h>
#include <sys/resource.h>
#define doit(name) pr_limit(#name, name)
void pr_limit(char* name, int resource);
int main ()
{
printf("resource name soft\thard \n");
#ifdef RLIMIT_AS
doit(RLIMIT_AS);
#endif
doit(RLIMIT_CORE);
doit(RLIMIT_CPU);
doit(RLIMIT_DATA);
doit(RLIMIT_FSIZE);
#ifdef RLIMIT_LOCKS
doit(RLIMIT_LOCKS);
#endif
#ifdef RLIMIT_MEMLOCK
doit(RLIMIT_MEMLOCK);
#endif
doit(RLIMIT_NOFILE);
#ifdef RLIMIT_NPROC
doit(RLIMIT_NPROC);
#endif
#ifdef RLIMIT_RSS
doit(RLIMIT_RSS);
#endif
#ifdef RLIMIT_SBSIZE
doit(RLIMIT_SBSIZE);
#endif
doit(RLIMIT_STACK);
#ifdef RLIMIT_VMEM
doit(RLIMIT_VMEM);
#endif
return 0;
}
void pr_limit(char* name, int resource)
{
struct rlimit limit;
if ( getrlimit(resource, &limit) < 0 )
{
printf("getrlimit error!\n");
return;
}
printf("%-14s ", name);
if ( limit.rlim_cur == RLIM_INFINITY )
printf("infinite ");
else
printf("%8ld ", limit.rlim_cur);
if ( limit.rlim_max == RLIM_INFINITY )
printf("infinite ");
else
printf("%8ld ", limit.rlim_max);
putchar('\n');
}
resource name soft hard
RLIMIT_AS infinite infinite
RLIMIT_CORE 0 infinite
RLIMIT_CPU infinite infinite
RLIMIT_DATA infinite infinite
RLIMIT_FSIZE infinite infinite
RLIMIT_LOCKS infinite infinite
RLIMIT_MEMLOCK 65536 65536
RLIMIT_NOFILE 1024 1024
RLIMIT_NPROC infinite infinite
RLIMIT_RSS infinite infinite
RLIMIT_STACK 8388608 infinite
]]>#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/resource.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
int main (int argc, char** argv)
{
if ( argc != 3 )
{
printf("usage: inputFile outputFile\n");
return 1;
}
int inFd, outFd;
//open file descriptor
inFd = open(argv[1], O_RDONLY);
if ( inFd < 0 )
{
printf("inFd open error!\n%s\n",strerror(errno));
return 1;
}
outFd = open(argv[2], O_CREAT | O_TRUNC | O_RDWR, S_IRWXU | S_IRGRP | S_IROTH);
if ( outFd < 0 )
{
printf("outFd open error!\n%s\n", strerror(errno));
return 1;
}
//change standard input and output
if ( dup2(inFd, STDIN_FILENO) < 0 )
{
printf("inFd dup2 error!\n");
return 1;
}
if ( dup2(outFd, STDOUT_FILENO) < 0 )
{
printf("outFd dup2 error!\n");
return 1;
}
char line[128];
while ( scanf("%s", &line) != EOF )
{
printf("%s\n", line);
}
return 0;
}
]]>
鏈寮濮嬪緢澶╃湡鐨勬兂鏋氫婦姣忎釜鏁幫紝璁$畻鍏朵腑1鐨勪釜鏁幫紝緇撴灉絎?緇勬祴璇曟暟鎹紑濮嬪氨瓚呮椂鐨勪笉琛屼簡銆?/p>
鏋氫婦涓嶈錛屾潵璇曡瘯鏋勯犲彲涓嶅彲浠ワ紝鍋囪鎴戜滑鏈変竴涓暱搴︿負n錛?涓暟<=l鐨勪簩榪涘埗涓茬殑闆嗗悎錛岄偅涔堟庝箞鎶婂畠浠粠澶у埌灝忓尯鍒嗗憿錛熸垜浠竴浣嶄竴浣嶆潵錛屾牴鎹n浣嶏紝鍙互灝嗛泦鍚堝垝涓?閮ㄥ垎錛氱n浣嶆槸0鐨勶紝絎琻涓烘槸1鐨勩傚ソ浜嗭紝閫掓帹寮忕獊鐒跺氨鍙樺緱寰堟槑鏄句簡銆傚浣曡num[N][L]涓洪暱搴︿負N錛?涓暟灝忎簬絳変簬L鐨勪簩榪涘埗涓茬殑涓暟錛岄偅涔堬細
num[N][L] = num[N-1][L] + num[N-1][L-1]
錛堢n浣嶆槸0錛?nbsp; 錛堢n浣嶆槸1錛?/p>
涓暟鏈変簡錛岄偅涔堢I涓暟鏄灝戞庝箞姹傚憿錛熻鏉ヤ篃綆鍗曪紝灝辨槸鐢ㄩ掑綊鐨勬濇兂錛岀湅I钀藉湪num[N-1][L]鍜宯um[N-1][L-1]鐨勫摢涓閮ㄥ垎錛岀湅涓嬮潰鐨勪唬鐮佸簲璇ュ氨鏄庣櫧浜嗭細
void Print (int len, int num1, long long idx) { if ( len == 0 ) return; if ( num[len-1][num1] >= idx ) { putchar('0'); Print(len-1, num1, idx); } else { putchar('1'); Print(len-1, num1-1, idx-num[len-1][num1]); } }
浠?涓鐩翠箻鍒癗錛屽鏋滆兘鏁撮櫎10錛屽氨闄や互10錛屽彲浠ュ悧錛熶笉琛岋紝鍥犱負鍗充嬌鍘繪帀浣庝綅鐨?錛岄珮浣嶇殑闈?浣嶄粛鐒跺緢澶э紝鏃犳硶淇濆瓨涓嬫潵銆?/p>
鍙互灝哊!榪欐牱琛ㄧず錛?
N! = 2^K * 5^L * V(N)
= 2^(K-L) * V(N) * 10^L ( K >= L 濡備綍璇佹槑鍛紵)
10^L涓嶅獎鍝峃!鏈浣庨潪闆朵綅錛岃繖涓暟鐢?K-L)浠ュ強V(N)鐨勪釜浣嶆暟鎵鍐沖畾銆侹鍜孡瀹規槗寰楀埌錛孷(N)鐨勪釜浣嶆暟涔熷ソ寰楀埌錛屽彧瑕佹灇涓緄錛堜粠1鍒癗錛夛紝鍘婚櫎鍥犲瓙2鍜?錛堝洜瀛愪釜鏁板姞鍒癒鍜孡錛夛紝灝嗗叾涓綅鏁頒箻浠ヤ腑闂寸粨鏋滃氨鍙互浜嗐?/p>
鍏抽敭浠g爜濡備笅錛?/p>
const int f2 [] = {6, 2, 4, 8}; int i, tmp, n2, n5; int ans = 1; n2 = n5 = 0; for ( i = 1; i <= n; i ++) { tmp = i; while ( tmp % 2 == 0 ) { n2 ++; tmp /= 2; } while ( tmp % 5 == 0 ) { n5 ++; tmp /= 5; } ans = (( tmp % 10) * ans) % 10; } ans = ( ans * f2[( n2- n5)%4] ) % 10; printf( "%d\n", ans);
涓寮濮嬫兂鍒癉P錛屾暟緇刢anComprise[10000*200][200]錛宑anComprise[i][j]琛ㄧず鐢╦寮犻偖紲ㄦ槸鍚﹀彲浠ョ粍鎴愰潰鍊糹錛屼絾鏁扮粍澶ぇ錛屾斁寮冦?/p>
鍚庢潵鏀圭敤娣辨悳錛屼紭鍖栦簡璁鎬箙錛屾渶鍚庡嚑緇勬暟緇勪粛鐒惰秴鏃訛紝鏀懼純銆?/p>
鍙堝洖澶存兂DP錛屽鏋渃anComprise[i][j1]鍜宑anComprise[i][j2]鍧囦負true錛宩1 < j2錛岄偅涔坈anComprise[i][j1]鑲畾鏄洿浼樼殑瑙o紝鍥犱負j1鍙互鎵╁睍鏇村i+stamps[x]銆傛墍浠ワ紝鍙鐢ㄤ竴緇存暟緇勪繚瀛樼瓟妗堝氨鍙互浜嗭紝姣斿minStamp[i] = j灝辮〃紺虹粍鎴恑鎵鐢ㄥ埌鐨勬渶灝戦偖紲ㄦ暟涓簀錛岄掓帹寮忓緢瀹規槗鎯沖埌錛?/p>
minStamp[i] = Min{ minStamp[i-stamp[x]] + 1 } ( i 鈥?stamp[x] >= 0 )
鍚屼竴縐嶆儏鍐碉紝琛ㄨ揪瑙g殑鏂瑰紡鍙兘鏈夊縐嶏紝灝介噺浣跨敤鏈綺劇畝鐨勬柟寮忥紝宸茶揪鍒伴檷緇寸殑鏁堟灉銆?/strong>
闅忕潃杈撳叆鐨勯『搴忥紝灝嗙煩褰竴涓釜鏀懼叆闆嗗悎錛屽鏋滄柊鐨勭煩褰笌闆嗗悎涓殑鏃х煩褰㈢浉浜わ紝灝卞皢鏃х煩褰㈠垎瑙o紝鍒犻櫎鏃х煩褰紝鏀懼叆鏂扮煩褰㈠拰鍒嗚В鐨勭煩褰€?/p>
璁劇煩褰1銆丷2錛屽鍜岄珮鍒嗗埆涓?W1, H1)鍜?W2, H2)錛屼袱鐭╁艦涓績鍧愭爣鍒嗗埆涓?X1, Y1)浠ュ強(X2, Y2)銆傚垽鏂袱鐭╁艦鏄惁鐩鎬氦錛堜篃灝辨槸鏄惁鏈夐潰縐浉閲嶅悎錛夛紝灝辯湅涓ょ煩褰腑蹇冨潗鏍囩殑绔栫洿鍜屾按騫寵窛紱繪槸鍚﹀皬浜庝袱鐭╁艦楂樼殑鍜岀殑涓鍗婁互鍙婁袱鐭╁艦瀹界殑鍜岀殑涓鍗娿傚嵆錛?/p>
( |X1 - X2| < (W1 + W2) / 2 ) && ( |Y1 - Y2| < (H1 + H2) / 2 )
濡傛灉鏉′歡婊¤凍錛孯1鍜孯2鍗崇浉浜ゃ?/p>
閭g浉浜や細鏈夊嚑縐嶆儏鍐靛憿錛熸垜鎯沖埌浜?6縐嶏細
鏍規嵁涓嶅悓鐨勬儏鍐碉紝鍙互灝嗗師鏉ョ殑鐭╁艦鍒嗚В涓?锝?涓皬鐭╁艦錛岃繖鏍峰氨鍙互瑙e嚭鏉ヤ簡銆?/p>
錛堝仛鍑犱綍棰樺彲鐪熻垂鑽夌ǹ綰稿晩錛岀湅鏉ヤ互鍚庡緱瀛﹀matlab浜嗭紝浣庣⒊銆佺幆淇濓紒錛?/p>
鍙﹀錛孶SACO榪樻湁涓縐嶈В娉曪紝灝辨槸灝嗙煩褰㈢殑鍥涙潯杈硅繘琛岀鏁e寲澶勭悊錛屽皢綰挎鎺掑簭錛岀劧鍚庡啀渚濇鎵弿錛屽ぇ浣撴濊礬鏄繖鏍風殑錛屽叿浣撶粏鑺傛病鎬庝箞鐪嬨?/p>
鍚庢潵鎯沖埄鐢⊿TL涓殑set鏉ヨВ鍐籌紝鏋氫婦鏌愪竴涓暟錛屽鏋滃睘浜巗et錛屽皢鍏朵笌S涓悇鍏冪礌鐩鎬箻鐨勬暟鏀懼叆set錛屽姝ゅ驚鐜紝鐩磋嚦鎵懼埌絎琋涓暟錛屾彁浜ゅ悗榪樻槸瓚呮椂銆傜湅鏉ュ嵆渚挎槸set錛屾瘯绔熷瓨鍙栫殑鏁堢巼涓嶆槸O(1)錛屾ц兘榪樻槸鏈夊獎鍝嶃?/p>
紿佺劧鎯沖埌錛岃繖棰樹笉鏄窡poj鐨?a target="_blank">Ugly Number鎸哄儚鐨勫槢錛屾槸Ugly Number鐨勫姞寮虹増銆傚叿浣撴濇兂鏄細瀵逛簬S涓殑姣忎釜鍏冪礌p[i]錛岃緗竴涓笅鏍噋Idx[i]錛宲Idx[i]鎸囧悜humble number鏁扮粍銆傝繘琛孨嬈″驚鐜紝姣忔鎵懼嚭鏈灝忕殑p[i] * humble[pIdx[i]]錛屽皢璇ユ暟鍔犲叆humble鏁扮粍錛岀劧鍚巔Idx[minIdx]++銆傝繖鏍峰氨鑳界敱灝忓埌澶ф壘鍑虹N涓猦umble number浜嗐?/p>
PS錛氬叾瀹炶繖縐嶆柟娉曠敓鎴愮殑humble number鍙兘淇濊瘉闈為檷搴忥紝姣斿2脳3鍜?脳2灝變細鐢熸垚鐩稿悓鐨刪umble number錛岃繖縐嶆儏鍐佃鎺掗櫎銆?/p>
鎴戠殑鎬濊礬鏄細
1銆丗loyd綆楀嚭鐐瑰鏈鐭礬寰?/p>
2銆佹繁鎼滄壘鍑轟笉鍚岃繛閫氬垎閲?/p>
3銆佹灇涓懼悓涓榪為氬垎閲忎腑鐨勭偣瀵規渶鐭礬寰勶紝鏈澶х殑浣滀負璇ヨ繛閫氬垎閲忕殑鐩村緞錛岄『渚跨畻鍑轟竴鐐瑰埌榪為氬垎閲忎腑鏈榪滅偣鐨勮窛紱?/p>
4銆佹灇涓句笉鍚岃繛閫氬垎閲忕殑浠繪剰鐐瑰a鍜宐錛屾壘鍑轟互涓嬬殑鏈澶у?/p>
a鎵鍦ㄨ繛閫氬垎閲忕殑鐩村緞
b鎵鍦ㄨ繛閫氬垎閲忕殑鐩村緞
ab鐨勮窛紱?+ a鍒版湰榪為氬垎閲忔渶榪滆窛紱?+ b鍒版湰榪為氬垎閲忔渶榪滆窛紱?/p>
5銆佹壘鍑鴻繖浜涙渶澶у間腑鐨勬渶灝忓?/p>
鍚庢潵鍦ㄧ綉涓婃壘鍒頒簡涓縐嶈В娉曪細褰撳彂鐜癆鎺у埗B鏃訛紝灝咮鐨勮偂浠戒紶緇橝錛屽鏋滃彂鐜板鍔犺偂浠戒箣鍚庯紝A涓殑鑲′喚[A][i] > 50 騫朵笖A榪樻病鏈夋帶鍒秈錛屽垯灝?A, i)鍔犲叆闃熷垪銆備竴鐩村驚鐜搷浣滐紝鐩磋嚦闃熷垪涓虹┖涓烘銆?/p>
瀹樻柟鐨勮В棰樻姤鍛婁腑錛屽叾瀹炲氨鏄垜涓寮濮嬫兂鐨勯掑綊鐨勬柟娉曪紝浠栧湪鏇存柊錛圓, B錛夋椂錛?/p>
鍋囪錛屽綋鍓嶆爲鐨勮妭鐐歸棶n錛岄珮搴︿負k錛岄偅涔堝瓙鏍戝彲鍒嗕負3縐嶆儏鍐碉細
騫朵笖錛屾弧瓚抽鐩姹傜殑鏍戠殑鑺傜偣涓庨珮搴︽湁榪欐牱鐨勫叧緋伙細2*k-1 <= n <= 2^k-1錛屽彲鏄牴鎹繖涓叧緋繪灇涓懼乏鍙沖瓙鏍戠殑鑺傜偣鏁?/p>
浜庢槸灝卞彲浠ョ敤閫掑綊+DP鐨勬柟娉曡В鍑鴻繖閬撻浜嗐?/p>
錛堝湪瀵筺 <= 2^k-1榪涜杞寲鏃訛紝鑷繁灞呯劧鍐欐垚浜唊 >= log(n+1.0)/log(2.0)錛屽叾瀹炲簲璇ユ槸k >= floor (log(n+1.0)/log(2.0))錛岃繕鏄お綺楀績鍟︼級