锘??xml version="1.0" encoding="utf-8" standalone="yes"?> HDU 1251 緇熻闅鵑 瑕佺湅璁烘枃鍑嗗姣曚笟璁捐浜嗭紝濂藉嚑鍛ㄩ兘娌℃湁鎼?font face="Times New Roman">ACM浜嗭紝浠婂ぉ瀹炲湪鎵嬬棐浜嗭紝灝卞幓hdu涓婃簻杈句簡涓鍦堬紝鎸戝嚑涓鍋氾紝浜庢槸涔庡氨鐪嬪埌浜嗚繖涓錛屽吀鍨嬬殑瀛楀吀鏍戙?/font> 棰樼洰瑕佹眰杈撳嚭浠ユ煇涓瓧絎︿覆涓哄墠緙鐨?font face="Times New Roman">word鐨勬暟鐩紝寤虹珛瀛楀吀鏍戜箣鍚庡氨鏄釜綆鍗曠殑鏌ヨ浜嗭紝涓轟簡鎬ц兘閲囩敤浜嗛潤鎬佸瓧鍏告爲錛岀敱浜庝笉鐭ラ亾浼氭湁澶氬皯涓崟璇嶅氨鐚滀簡涓嬫劅瑙?/font>10w搴旇澶熶簡鍚э紝鎻愪氦涓婂幓access violation錛屾槑鏄劇殑瓚婄晫璁塊棶錛屼慨鏀逛負20W涓鏍峰嚭閿欙紝鍚庢潵鐏簡錛岀洿鎺ュ紑鍒?/font>50w榪囦簡錛屾祴璇曟暟鎹浉褰撶嫚鍛銆?/font> 涓嶅璇翠簡錛屽弬鑰冧唬鐮佸涓嬨?/span>
#include <stdlib.h>
struct node
{
int cnt;
int childs[26];
};
int avail = 1;
int cur = 0;
struct node tree[500000];
char buf[15];
int main(void)
{
int i;
int root;
int index;
int flag;
/*freopen("in.txt", "r", stdin);*/
while (fgets(buf, 15, stdin) != NULL && buf[0] != '\n')
{
i = 0;
root = 0;
while (buf[i] != '\n')
{
index = buf[i]-'a';
if (tree[root].childs[index] == 0)
{
tree[root].childs[index] = avail++;
}
++tree[tree[root].childs[index]].cnt;
root = tree[root].childs[index];
++i;
}
}
while (fgets(buf, 15, stdin) != NULL && buf[0] != '\n')
{
i = 0;
root = 0;
flag = 1;
while (buf[i] != '\n')
{
index = buf[i] - 'a';
if (tree[root].childs[index] == 0)
{
flag = 0;
break;
}
root = tree[root].childs[index];
++i;
}
printf("%d\n", flag == 1 ? tree[root].cnt : 0);
}
return 0;
}
ZOJ 1808 Immediate Decodability
榪欓亾棰樼粰鍑?/span>n涓湁1鍜?/span>0緇勬垚鐨勫瓧絎︿覆闆嗗悎錛岀劧鍚庤姹傚垽鏂槸鍚︽湁鏌愪竴涓瓧絎︿覆鏄彟涓涓瓧絎︿覆鐨勫墠緙銆傛槸瀛楀吀鏍戠殑鍏稿瀷搴旂敤銆?/span>
瀛楀吀鏍戞湁闈欐佸拰鍔ㄦ佷箣鍒嗭紝鍔ㄦ佸瓧鍏告爲灝辨槸鍦ㄦ彃鍏ユ椂鏍規嵁闇瑕佸姩鎬?/span>malloc鑺傜偣錛岃岄潤鎬佸瓧鍏告爲鍒欐槸浜嬪厛寮杈熶竴涓緝澶х殑鏁扮粍錛岀劧鍚庤緗竴涓彉閲?/span>index鎸囧悜褰撳墠鏁扮粍涓湭琚崰鐢ㄧ殑鑺傜偣涓嬫爣鐨勬渶灝忓鹼紝鍗充笅涓涓彲鐢ㄨ妭鐐圭殑涓嬫爣銆傝窡C璇█涓疄鐜伴潤鎬侀摼琛ㄧ被浼箋傝繖涓ょ鏂規硶鍚勬湁浼樺姡錛屽姩鎬佸瓧鍏告爲鐞嗚涓婂彲浠ユ彃鍏ヤ換鎰忓涓妭鐐癸紝浣嗘槸姣忔鐨?/span>malloc鍙婃渶鍚庣殑free浼氭秷鑰楀緢澶氭椂闂淬傝岄潤鎬佸瓧鍏告爲鐪佸幓浜嗗唴瀛樼殑鍔ㄦ佺敵璇峰拰閲婃斁錛岃妭鐪佷簡鏃墮棿錛屼絾鏄彲浠ユ彃鍏ヨ妭鐐規暟鐩彈鍒頒簨鍏堝紑杈熺殑鏁扮粍澶у皬闄愬埗錛屽彲鎵╁睍鎬ц緝宸傚叿浣撻噰鐢ㄥ摢縐嶅疄鐜版柟寮忔牴鎹渶姹傝屽畾銆傚氨鏈鑰岃█鏃墮棿瑕佹眰1s錛屽彲浠ュ垵姝ラ渶瑕佹彃鍏ョ殑鍒ゆ柇鑺傜偣鏁扮洰涓嶄細澶錛屽洜姝や負浜嗘彁楂樿繍琛岄熷害閲囩敤浜嗛潤鎬佸瓧鍏告爲銆?/span>
鍙傝冧唬鐮佸涓嬶細
#include <stdlib.h>
#include <string.h>
struct dick
{
/*宸﹀彸瀛╁瓙鎸囬拡錛屾寚鍚戝乏鍙沖瀛愬湪鏁扮粍涓殑涓嬫爣錛屽仛瀛╁瓙涓?錛屽彸瀛╁瓙涓?*/
int child[2];
/*鏄惁鏄瓧絎︿覆鐨勬渶鍚庝竴涓瓧絎?/span>*/
int leaf;
};
/*浠庤鏁扮粍涓垎閰嶈妭鐐?/span>*/
struct dick d[1000];
/*鎸囧悜涓嬩釜鍙敤鑺傜偣鐨勪笅鏍?/span>*/
int index;
int main(void)
{
char buf[100];
int no = 0;
int flag = 1;
int i;
index = 0;
int start;
int tmp;
int test;
memset(d, 0, sizeof(d));
freopen("in.txt", "r", stdin);
while (gets(buf) != NULL)
{
if (buf[0] == '9' && buf[1] == '\0')
{
++no;
if (flag == 1)
{
printf("Set %d is immediately decodable\n", no);
}
else
{
printf("Set %d is not immediately decodable\n", no);
}
/*娓呯悊鍜屽垵濮嬪寲鏁版嵁*/
flag = 1;
memset(d, 0, sizeof(d));
index = 0;
}
else if (flag == 1)
{
i = 0;
start = 0;
test = 1;
/*閫愬瓧絎︽彃鍏ユ暟鎹埌瀛楀吀鏍戜腑*/
while (buf[i] != '\0')
{
if (d[start].child[buf[i]-'0'] == 0)
{
if (d[start].leaf == 1)
{
break;/*鍙戠幇宸叉彃鍏ュ瓧絎︿覆鏄湰瀛楃涓茬殑鍓嶇紑*/
}
/*鍒嗛厤鏂扮殑鑺傜偣*/
d[start].child[buf[i]-'0'] = ++index;
test = 0;
}
tmp = d[start].child[buf[i]-'0'];
if (buf[i+1] == '\0')
{
d[tmp].leaf = 1;
}
start = tmp;
++i;
}
if (test == 1)
{
flag = 0;
}
}
}
return 0;
}
ZOJ1058 Currency Exchange
姘撮涓閬擄紝鍞竴闇瑕佹敞鎰忕殑鏄鐩腑璇村彧鑳藉彇鍒拌揣甯佺殑鐧懼垎涔嬩竴錛屽洜姝ゅ湪姣忔榪涜璐у竵姹囩巼杞崲涔嬪悗閮借榪涜澶勭悊錛?/span>WA浜嗕竴嬈″氨鏄洜涓哄埌鏈鍚庤緭鍑虹殑鏃跺欐墠鍥涜垗浜斿叆錛岃繖涓搷浣滃簲璇ュ湪姣忔杞崲姹囩巼鍚庨兘榪涜銆?/span>
鍙傝冧唬鐮佸涓嬶細
ZOJ 1334 Basically Speaking
榪欐槸涓閬撶畝鍗曠殑榪涘埗杞崲棰橈紝涔熸槸涓閬撹鎴戞棤璇殑棰樸?/span>
棰樼洰澶ф剰杈冧負綆鍗曪紝浣嗘槸鎻愪氦浜?/span>n嬈★紝涓鐩?/span>PE錛屾鏌ヤ簡濂藉鍦版柟錛屽疄鍦ㄦ劅瑙夋病澶寸華浜嗭紝灝辨椿椹綋姝婚┈鍖伙紝鎶?/span>printf(“%*c”, len, ‘ ’)鎹㈡垚浜嗗驚鐜紝鍥犱負瑕佸彸瀵歸綈錛屾墍浠ヨ緭鍑轟簺絀烘牸錛岀珶鐒?/span>AC浜嗭紝绔熺劧鏄printf鐨勮繖縐嶈緭鍑烘牸寮忕悊瑙f湁璇紝鏃犺鍛銆?/span>
鍙傝冧唬鐮佸涓嬶細
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
char a[50];
char ch[] = "0123456789ABCDEF";
int main(void)
{
int to, from;
unsigned sum;
int len;
int i;
unsigned t;
freopen("in.txt", "r", stdin);
while (scanf("%s %d %d", a, &from, &to) != EOF)
{
sum = 0;
t = 1;
len = strlen(a);
for (i = len-1; i >= 0; --i)
{
if (isdigit(a[i]))
{
sum += (a[i] - '0')*t;
}
else
{
sum += (a[i] - 'A' + 10)*t;
}
t *= from;
}
if (to == 10)
{
len = (int)log10(sum)+1;
if (len > 7)
{
printf(" ERROR\n");
}
else
{
printf("%7d\n", sum);
}
}
else
{
i = 0;
while (sum > 0)
{
a[i++] = ch[sum%to];
sum /= to;
}
if (i > 7)
{
printf(" ERROR\n");
}
else
{
len = 7-i;
printf("%*c", len, ' ');
--i;
while (i >= 0)
{
putchar(a[i--]);
}
printf("\n");
}
}
}
return 0;
}