POJ 1451 T9 字典树

2023-10-28 06:40
文章标签 字典 poj t9 1451

本文主要是介绍POJ 1451 T9 字典树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意
和手机的九键输入法一样。输入数据第一行给出有多少组测试数据,每组数据第一行给出w(0<=w<=1000),接下来w行给出一个单词以及该单词的出现频率p(1<=p<=100),每个单词的最大长度不超过100个字母;然后,给出一个整数m,接下来m行给出一个输入串,代表在手机上按了哪些键,每个输入串最多有100个字符,且以数字1作为结尾。要求根据给出输入串,输出在按这些键的过程中,输入法给出的首选项(即出现频率最高的单词),若没有对应输入的单词,则输出"MANUALLY"。

样例输入
2
5
hell 3
hello 4
idea 8
next 8
super 3
2
435561
43321
7
another 5
contest 6
follow 3
give 13
integer 6
new 14
program 4
5
77647261
6391
4681
26684371
77771

样例输出
Scenario #1:
i
id
hel
hell
hello

i
id
ide
idea


Scenario #2:
p
pr
pro
prog
progr
progra
program

n
ne
new

g
in
int

c
co
con
cont
anoth
anothe
another

p
pr
MANUALLY
MANUALLY

思路
以26个字母来建字典树,每个结点包含代表字母,频率,父节点以及一个指针数组。建树过程中,对于已存在的结点,频率要累加起来。查询的时候使用队列,先从树根的儿子里面找出第一个键所包含的各个字母的结点入队(如果该结点存在的话),并在入队的过程中找到频率最高的结点,依靠递归逆向输出。第二个键的时候,再从当前队列里的各个结点的儿子里找到对应第二个键包含的各个字母的结点入队(如果该结点存在的话),并在入队的过程中找到频率最高的结点,依靠递归逆向输出。以此类推...

注意点
1. 题目给出的单词库是按字典序排好的。
2. 输出每组样例之间有两个空行,一个空行是每个输入串后的,另一个空行是每组样例后的。
3. 当输入串只有一个1时,也要输出一个空行。
4. 用静态字典树的话记得初始化内存。
5. 频率是叠加起来的,例如这组数据
   1
   3
   bbb 5
   aaa 3
   abc 3
   1
   21
   输出的应该是a,而不是b。

  1 #include <cstdio>
  2 #include <string.h>
  3 #include <queue>
  4 using namespace std;
  5 const char n2c[10][5] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
  6 struct TRIE
  7 {
  8     int chr, freq, father, Next[26];
  9 }trie[100000];
 10 int AMOUNT;
 11 queue<int> q;
 12 void Insert(char* str, int time)
 13 {
 14     int t, pos = 0;
 15     for(int i=0; str[i]; ++i)
 16     {
 17         t = str[i] - 'a';
 18         trie[pos].freq += time;
 19         if(!trie[pos].Next[t])
 20         {
 21             trie[pos].Next[t] = ++AMOUNT;
 22             memset(trie+AMOUNT, 0, sizeof(TRIE));
 23             trie[AMOUNT].father = pos;
 24             pos = AMOUNT;
 25             trie[pos].chr = str[i];
 26         }
 27         else
 28             pos = trie[pos].Next[t];
 29     }
 30     trie[pos].freq += time;
 31 }
 32 void PrintStr(int x)
 33 {
 34     if(x)
 35     {
 36         PrintStr(trie[x].father);
 37         printf("%c", trie[x].chr);
 38     }
 39 }
 40 void Query(char* str)
 41 {
 42     int MAX, MAXTAG, t, num, pos;
 43     q.push(0);
 44     for(int i=0; str[i]!='1'; ++i)
 45     {
 46         t = str[i] - '0';
 47         num = q.size();
 48         MAX = MAXTAG = 0;
 49         for(int j=0; j<num; ++j)
 50         {
 51             for(int k=0; n2c[t][k]; ++k)
 52             {
 53                 pos = trie[q.front()].Next[ n2c[t][k] - 'a' ];
 54                 if(pos)
 55                 {
 56                     q.push(pos);
 57                     if(trie[pos].freq > MAX)
 58                         MAX = trie[pos].freq, MAXTAG = pos;
 59                 }
 60             }
 61             q.pop();
 62         }
 63         if(MAXTAG)
 64         {
 65             PrintStr(MAXTAG);
 66             printf("\n");
 67         }
 68         else
 69         {
 70             for(; str[i] != '1'; ++i)
 71                 printf("MANUALLY\n");
 72             break;
 73         }
 74     }
 75     num = q.size();
 76     while(num--)
 77         q.pop();
 78     printf("\n");
 79 }
 80 int main(void)
 81 {
 82     char str[105];
 83     int kase, n, time;
 84     scanf("%d", &kase);
 85     for(int i=0; i<kase; )
 86     {
 87         scanf("%d", &n);
 88         AMOUNT = 0;
 89         memset(trie, 0, sizeof(TRIE));
 90         for(int j=0; j<n; ++j)
 91         {
 92             scanf("%s %d", str, &time);
 93             Insert(str, time);
 94         }
 95         printf("Scenario #%d:\n", ++i);
 96         scanf("%d", &n);
 97         for(int j=0; j<n; ++j)
 98         {
 99             scanf("%s", str);
100             Query(str);
101         }
102         printf("\n");
103     }
104     return 0;
105 }
7
5
hell 3
hello 4
idea 5
next 8
super 3
2
787371
43321
7
another 5
contest 6
follow 3
give 13
integer 6
new 14
program 4
5
77647261
6391
4681
26684371
77771
7
gewel 5
hello 3
hell 2
rubmarine 4
ruper 4
suring 3
suesday 5
6
439351
435561
7826274631
787371
7874641
78373291
107
ab 2
aller 2
als 10
am 2
an 3
angerechnet 5
aus 2
begruessung 6
berichterstattung 13
bestehenden 13
bis 13
bislang 14
bitten 2
computing 2
dabei 10
darmstaedter 15
das 15
dass 8
dem 9
der 6
des 1
deutschland 9
diesem 6
eines 13
einzigen 12
entscheidet 2
erfolg 14
etwa 13
fachbereich 1
felix 15
findet 6
firma 8
fraikin 7
frankfurter 9
freuen 9
fuenf 10
fuer 4
gegeneinander 15
gelaende 5
gewinnen 1
gewinnt 12
gilt 5
hawaii 11
hinweis 14
informatikervereinigung 8
informatikwissen 12
innerhalb 6
jahr 15
koennen 7
konnte 8
kontakt 13
kryptographie 6
loesen 13
loest 2
loesung 3
machinery 6
merck 15
moechten 14
moeglich 7
moeglichst 3
muessen 15
nachmittags 15
nicht 1
november 6
prestigetraechtigen 11
programmiermeisterschaften 6
reicht 14
reines 15
reisen 5
rolle 10
seit 4
skandinavien 11
spielen 12
sporthalle 3
startschuss 6
statt 3
stattfindet 10
strafminuten 2
strasse 9
studierenden 8
teamfaehigkeit 9
teil 4
teilen 7
testierungssystem 5
ueber 9
veranstalter 4
veranstaltung 10
verbuchen 13
versuch 3
von 4
weltmeisterschaft 9
welttitelkaempfen 6
wer 8
werden 6
wettbewerb 5
wettkampf 6
wichtige 15
wie 2
wir 3
wird 13
wurde 8
zb 13
zeit 1
zeitmanagement 5
zu 9
zurueckgewiesene 4
zwar 15
10
721
5678381
57978647271
3224231
631
237834363361
3371
1
7877363278471
2378361
129
acm 9
alljaehrlich 13
am 2
anderem 8
anerkannt 6
angerechnet 5
antreten 9
aufgaben 8
ausschlag 13
beginnt 3
begruessung 6
beiden 14
beneluxstaaten 8
bereichen 15
berichterstattung 13
computing 2
darauf 4
darmstadt 7
darmstaedter 15
das 15
dass 8
den 15
der 6
des 1
die 2
diese 2
diesem 6
drei 12
dreierteams 4
eigentlichen 6
eine 2
einem 1
einer 15
email 6
erfolg 14
erreichen 3
erste 10
es 1
faellt 15
falk 13
fax 15
felix 15
finale 4
for 4
fraikin 7
frankfurter 9
gegeneinander 15
gelaende 5
gestellten 13
gewinnen 1
gewinnt 12
gilt 5
gleichstand 8
graphenalgorithmen 2
groessten 7
grossbritannien 10
gute 15
hinzuweisen 3
hoffen 7
informatik 13
informatikervereinigung 8
ist 1
kleinen 11
kniffliger 10
koennen 7
kostet 7
kryptographie 6
kurzer 10
leonhardt 8
loest 2
loesung 3
lokaler 4
merck 15
mit 15
moechten 14
moeglichst 3
muessen 15
nachmittags 15
nicht 1
nimmt 4
november 6
oder 10
philipp 9
programmieraufgaben 7
programmiermeisterschaften 6
rechnen 15
rechners 2
redaktionen 6
reines 15
reisen 5
rolle 10
samstag 3
seit 4
so 10
spannenden 8
spielen 12
sporthalle 3
stammen 14
startschuss 6
statt 3
strafminuten 2
strasse 9
studierenden 8
team 14
teamfaehigkeit 9
teilnehmer 10
tel 12
testierungssystem 5
testwettbewerb 14
thomas 14
tu 9
uhr 12
um 11
unter 4
veranstalter 4
verbuchen 13
versuch 3
viele 7
von 4
weltmeisterschaft 9
welttitelkaempfen 6
wer 8
werden 6
wettkampf 6
wie 2
wuerden 15
wurde 8
zu 9
zurueckgewiesene 4
29
35374353881
1
23431
8228431
67855776425731
672833842621
5666831
6381
662645436652731
26677841
1
438261
353648888621
621
77647261
61
5637361
8565444666831
338872452631
21
1
41
346371
36741
723448851
642481
4341
77435361
322234742673871
127
ab 2
aber 13
acht 11
acm 9
allen 11
als 10
am 2
an 3
antreten 9
auch 1
ausschlag 13
beginnt 3
begruessung 6
beneluxstaaten 8
bereichen 15
berichterstattung 13
bestehenden 13
bevorstehende 15
bislang 14
bitten 2
da 8
darauf 4
darmstadt 7
darmstaedter 15
das 15
dem 9
des 1
dreierteams 4
durfte 3
ein 2
eine 2
einen 1
einzigen 12
email 6
entspricht 10
erfolg 14
erreichen 3
es 1
fachbereich 1
fax 15
findet 6
firma 8
for 4
fraikin 7
frankfurter 9
freuen 9
fuenf 10
gestellten 13
gewinnt 12
graphenalgorithmen 2
groessten 7
grossbritannien 10
hawaii 11
im 3
informatik 13
innerhalb 6
internationalen 12
internet 2
ist 1
jeder 5
jeweils 15
kniffliger 10
koennen 7
konnte 8
kontakt 13
kostet 7
kurzer 10
leonhardt 8
loesen 13
loest 2
lokaler 4
lokales 7
machinery 6
maerz 2
moechten 14
moeglich 7
muessen 15
nachmittags 15
nimmt 4
nordwesteuropaeische 14
november 6
oder 10
prestigetraechtigen 11
programmiermeisterschaften 6
qualifizieren 15
raeumen 14
rechner 9
redaktionen 6
reihe 11
reines 15
reisen 5
rolle 10
schnuppern 12
seit 4
sie 3
skandinavien 11
spannenden 8
stammen 14
stattfindet 10
stringverarbeitung 11
studierende 15
studierenden 8
team 14
teamfaehigkeit 9
teil 4
teilen 7
teilnehmenden 4
testierungssystem 5
testwettbewerb 14
uhr 12
um 11
uns 14
veranstalter 4
veranstaltung 10
von 4
weltmeisterschaft 9
wettbewerb 5
wettbewerbs 1
wichtige 15
wieder 10
wir 3
wird 13
zb 13
zeitmanagement 5
zu 9
zurueckgewiesene 4
zwar 15
10
782883463381
1
8671
6465731
637877861
88567857631
5553682276351
22431
78641
222831
126
ab 2
acm 9
allen 11
aller 2
alljaehrlich 13
an 3
anerkannt 6
angerechnet 5
antreten 9
atlanta 2
aufgaben 8
ausgerichtet 12
ausschlag 13
automatisches 10
beginnt 3
begruessung 6
beiden 14
besten 4
bis 13
bitten 2
darmstaedter 15
das 15
dass 8
den 15
des 1
deutschland 9
die 2
diese 2
dreierteams 4
durfte 3
eigentlichen 6
eine 2
einem 1
einen 1
einer 15
eines 13
entscheidet 2
erfolg 14
erreichen 3
es 1
etwa 13
fachbereich 1
firma 8
for 4
frankfurter 9
gaertner 12
gegeneinander 15
gestellten 13
gewinnen 1
gewinnt 12
gleichstand 8
groessten 7
grossbritannien 10
hahn 1
hilfe 15
hinzuweisen 3
ihre 3
im 3
informatik 13
internationalen 12
jahr 15
kleinen 11
kniffliger 10
koennen 7
konnte 8
kontakt 13
korrekt 12
kurzer 10
lokaler 4
machinery 6
maerz 2
meisten 9
muessen 15
nachmittags 15
nicht 1
nimmt 4
november 6
ob 11
oder 10
programm 12
programmieraufgaben 7
qualifizieren 15
rechner 9
rechners 2
redaktionen 6
reihe 11
rolle 10
runde 5
samstag 3
schnuppern 12
sich 7
skandinavien 11
spannenden 8
spielen 12
sporthalle 3
stammen 14
startschuss 6
stattfindet 10
strafminuten 2
strasse 9
stringverarbeitung 11
studierende 15
stunden 1
teamfaehigkeit 9
teams 9
teil 4
teilen 7
teilnehmer 10
tel 12
testierungssystem 5
veranstalter 4
verbuchen 13
viele 7
vom 15
welttitelkaempfen 6
werden 6
wettbewerbs 1
wettkampfatmosphaere 15
wird 13
wuerden 15
zb 13
zeit 1
zu 9
zum 12
zur 3
zurueckgewiesene 4
30
55871
1
27843233576841
3668877481
73351
1
2363581
258453233661
25467248281
67357453856361
1
7383551
553221
5421
325551
441
44698934731
58667874282351
3431
31
432288536844481
778478561
4671
22287641
84438224826461
41
82383471
221
864365361
445328785821
in
Scenario #1:
s
su
sup
supe
superh
he
ide
ideaScenario #2:
p
pr
pro
prog
progr
progra
programn
ne
newg
in
intc
co
con
cont
anoth
anothe
anotherp
pr
MANUALLY
MANUALLYScenario #3:
g
ge
gew
gewe
gewelg
ge
hel
hell
hellor
ru
rub
rubm
rubma
rubmar
rubmari
rubmarin
rubmariner
ru
rup
rupe
ruperr
ru
rup
suri
surin
suringr
ru
sue
sues
suesd
suesda
suesdayScenario #4:
s
MANUALLYk
ko
MANUALLY
MANUALLY
MANUALLY
MANUALLYk
kr
kry
kryp
krypt
krypto
kryptog
kryptogr
kryptogra
kryptograpd
da
dab
fach
fachb
fachbem
meb
be
ber
best
beste
besteh
bestehe
bestehen
bestehend
bestehende
bestehendend
de
ders
st
str
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYb
be
ber
best
beste
MANUALLYScenario #5:
d
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYa
be
bei
beidt
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYm
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYm
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYk
ko
MANUALLY
MANUALLY
MANUALLY
MANUALLYm
me
MANUALLYm
mo
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYa
an
com
comp
MANUALLY
MANUALLY
MANUALLYg
ge
MANUALLY
MANUALLY
MANUALLYd
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYm
nas
sp
pro
prog
progr
progra
programmk
ko
koe
loes
MANUALLY
MANUALLYt
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYd
de
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYagd
ei
ein
eine
einerd
em
for
MANUALLYs
sa
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYm
mi
nic
nich
nichtg
ge
gegs
sp
spi
spie
spiel
spiele
spielend
da
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYScenario #6:
s
st
sta
stat
statt
stattf
stattfi
stattfin
stattfind
stattfinde
stattfindett
un
unsm
ni
nim
MANUALLY
MANUALLY
MANUALLYm
od
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYt
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYk
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYb
ac
ach
MANUALLYs
st
MANUALLY
MANUALLYb
ac
MANUALLY
MANUALLY
MANUALLYScenario #7:
k
kl
MANUALLY
MANUALLYa
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYd
fo
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYs
re
red
MANUALLYa
be
MANUALLY
MANUALLY
MANUALLY
MANUALLYa
al
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYa
al
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYm
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYs
re
MANUALLY
MANUALLY
MANUALLY
MANUALLYk
kl
kle
MANUALLY
MANUALLYk
MANUALLY
MANUALLYd
da
MANUALLY
MANUALLY
MANUALLYg
hig
hi
hin
hinz
hinzu
hinzuw
hinzuwe
hinzuwei
hinzuweis
hinzuweisek
ku
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYd
ei
diedg
ge
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYs
sp
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYg
in
MANUALLYa
ac
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYt
vi
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYgt
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYa
act
vo
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLYg
hi
hil
hilf
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
MANUALLY
out

 

转载于:https://www.cnblogs.com/corvey/p/5451901.html

这篇关于POJ 1451 T9 字典树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291396

相关文章

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s

poj 1511 Invitation Cards(spfa最短路)

题意是给你点与点之间的距离,求来回到点1的最短路中的边权和。 因为边很大,不能用原来的dijkstra什么的,所以用spfa来做。并且注意要用long long int 来存储。 稍微改了一下学长的模板。 stack stl 实现代码: #include<stdio.h>#include<stack>using namespace std;const int M

poj 3259 uva 558 Wormholes(bellman最短路负权回路判断)

poj 3259: 题意:John的农场里n块地,m条路连接两块地,w个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts。 任务是求你会不会在从某块地出发后又回来,看到了离开之前的自己。 判断树中是否存在负权回路就ok了。 bellman代码: #include<stdio.h>const int MaxN = 501;//农场数const int

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

poj 1502 MPI Maelstrom(单源最短路dijkstra)

题目真是长得头疼,好多生词,给跪。 没啥好说的,英语大水逼。 借助字典尝试翻译了一下,水逼直译求不喷 Description: BIT他们的超级计算机最近交货了。(定语秀了一堆词汇那就省略吧再见) Valentine McKee的研究顾问Jack Swigert,要她来测试一下这个系统。 Valentine告诉Swigert:“因为阿波罗是一个分布式共享内存的机器,所以它的内存访问

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i