青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

Configuration files, ACM-DIY Group Contest 2011 Spring 之 7,HDOJ 3806

Configuration files

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)


Problem Description
In daily project development process, we often use to the configuration file. Now we are going to solve the problem is simple. It is a complete configuration files writing and reading operation and output operation results.
 

Input
The input contains multiple test cases.The first line has one integer N (1 <= N<= 100), represent the number of the test cases.The second line has one integer M (1 <= M <= 2600) ,represent configuration files contain the M line data. The following next M line data represent the content of configuration files. The next line has one integer K (1 <= K <= 10000), represent the number of the operations. Then next K lines follow, each line represent a operation.there are two format in the operations. The first format is “op nodeName variable Name value “ . The second format is “op nodeName variableName”. If op is “U” that represent that it is the Update operation. If op is “G” that represent that it is the Get operation. If op is “I” that represent that it is the Insert operation. The node’s format in the configuration is “[nodeName]”. The format of the value is “variableName=value”. The nodeName, variableName in the configuration files all consist of lowercase character and each of them most contain 100 characters(include 100). The value consist of printable characters and most contain 100 characters(include 100) There may have some whitespaces (space or Tab key) front or behind the nodeName, variableName and value. There may have multiple same variables in the same node in the configuration file and the value of the variable to last shall prevail and the variable names and node name may be the same, in a configuration file won't exist in the same node name, inserting operations if a specified node name designated variables are the already existing failured.
 

Output
For each case, firstly print the “case n:” n represent the number of the case.Then operate according to the output corresponding operation results, to “U” operation if successfully output “update succeed.” otherwise output “update failured.”,to “I” operation if successful ouput “insert succeed.” otherwise ouput “insert failured.” for “G” operation if successful output a specified node specified under the value of the variable, or output “not get the value.”.
 

Sample Input
1
10
[appinfo]
appid = 32152
post = 86,87,89
[userinfo]
name = acmer
password = 2536LR
[softversion]
version =3.0.1
date= 2011-2-20
developers = ACM_DIY
11
U appinfo appid 12345
G appinfo appid
I test value 110alcm
G test value
G userinfo password
G userinf name
I softversion version 3.0.5
G softversion version
U softversion date 2011-2-14
G softversion versio
G softversion Date
 

Sample Output
case 1:
update succeed.
12345
insert succeed.
110alcm
2536LR
not get the value.
insert failured.
3.0.1
update succeed.
not get the value.
not get the value.
 

Author
[FJAU]菜鳥
 

Source
ACM-DIY Group Contest 2011 Spring


Trie 處理插入查找,只是字符串輸入有點(diǎn)繁瑣。。。


  1 #include <stdio.h>
  2 #include <string.h>
  3 #include <ctype.h>
  4 
  5 #define  TC   26
  6 #define  TM   400000
  7 #define  LEN  122
  8 #define  LIM  90000
  9 
 10 int  ibuf;
 11 char buf[ LIM ][ LEN ];
 12 
 13 struct  _Trie
 14 {
 15         char isNode, isValue;
 16         char *pData;
 17         struct  _Trie *ch[ TC ];
 18 };
 19 typedef struct _Trie Trie;
 20 
 21 Trie *root;
 22 
 23 Trie  triemem[ TM ];
 24 int   iTriemem;
 25 
 26 void trie_init() {
 27         root = NULL;
 28         iTriemem = 0;
 29 }
 30 
 31 Trie* trie_new() {
 32         return triemem + iTriemem++;
 33 }
 34 
 35 /* 1 node, 0 other */
 36 int getName( char *str ) {
 37         int isNode = 0;
 38         char ch;
 39         do {
 40                 ch = getchar();
 41         } while ( !( (('a'<=ch)&&(ch<='z')) || (ch=='[') ) );
 42         if ( ch == '[' ) {
 43                 isNode = 1;
 44                 do {
 45                         ch = getchar();
 46                 } while ( (ch<'a'|| ('z'<ch) );
 47         }
 48         while ( ('a'<=ch) && (ch<='z') ) {
 49                 *str++ = ch;
 50                 ch = getchar();
 51         }
 52         *str = 0;
 53         return isNode;
 54 }
 55 
 56 void getValue( char *str ) {
 57         char ch;
 58         do {
 59                 ch = getchar();
 60         } while ( (!isprint( ch )) || (ch=='='|| (ch==' '|| (ch=='\n'|| (ch=='\t') );
 61         while ( isprint( ch ) ) {
 62                 *str++ = ch;
 63                 ch = getchar();
 64         }
 65         *str = 0;
 66 }
 67 
 68 void getCmd( char *str ) {
 69         do {
 70                 *str = getchar();
 71         } while ( ((*str)<'A'|| ('Z'<(*str)) );
 72         str[ 1 ] = 0;
 73 }
 74 
 75 /* insert always,    pData == NULL --- node, else name */
 76 void trie_insert( Trie **pRoot, char *str, char *pData ) {
 77         Trie **= pRoot;
 78         for ( ; ; ) {
 79                 if ( (*p) == NULL ) {
 80                         *= trie_new();
 81                         memset( *p, 0sizeof(Trie) );
 82                 }
 83                 if ( *str ) {
 84                         p = &( (*p)->ch[ (*str) - 'a' ] );
 85                         ++str;
 86                 }
 87                 else {
 88                         if ( pData ) {
 89                                 (*p)->isValue = 1;
 90                                 (*p)->pData = pData;
 91                         }
 92                         else {
 93                                 (*p)->isNode = 1;
 94                         }
 95                         return;
 96                 }
 97         }
 98 }
 99 
100 /* ret 1, succ, other failed ppData == NULL node, else name */
101 int trie_find( Trie *root, char *str, char **ppData ) {
102         Trie *= root;
103         for ( ; ; ) {
104                 if ( p == NULL ) {
105                         return 0;
106                 }
107                 if ( *str ) {
108                         p = p->ch[ (*str) - 'a' ];
109                         ++str;
110                 }
111                 else {
112                         if ( ppData ) {
113                                 *ppData = p->pData;
114                                 return p->isValue;
115                         }
116                         else {
117                                 return p->isNode;
118                         }
119                 }
120         }
121 }
122 
123 int main() {
124         int td, cd = 0, m, k;
125         char cmd[ 10 ], tmp[ LEN ], tmp2[ LEN+LEN ], node[ LEN ], *pData;
126         scanf( "%d"&td );
127         while ( td-- > 0 ) {
128                 printf( "case %d:\n"++cd );
129                 ibuf = 0;
130                 trie_init();
131                 scanf( "%d"&m );
132                 while ( m-- > 0 ) {
133                         if ( getName( tmp ) ) {
134                                 trie_insert( &root, tmp, NULL );
135                                 strcpy( node, tmp );
136                         }
137                         else {
138                                 getValue( buf[ ibuf++ ] );
139                                 strcpy( tmp2, node );
140                                 strcat( tmp2, tmp );
141                                 trie_insert( &root, tmp2, buf[ ibuf-1 ] );
142                         }
143                 }
144                 scanf( "%d"&k );
145                 while ( k-- > 0 ) {
146                         getCmd( cmd );
147                         switch ( cmd[ 0 ] ) {
148                         case 'U' :
149                                 getName( node );
150                                 strcpy( tmp2, node );
151                                 getName( tmp );
152                                 strcat( tmp2, tmp );
153                                 getValue( buf[ ibuf++ ] );
154                                 if ( trie_find( root, node, NULL ) && trie_find( root, tmp2, &pData ) ) {
155                                         trie_insert( &root, tmp2, buf[ ibuf-1 ] );
156                                         puts( "update succeed." );
157                                 }
158                                 else {
159                                         puts( "update failured." );
160                                 }
161                                 break;
162                         case 'G' : 
163                                 getName( node );
164                                 strcpy( tmp2, node );
165                                 getName( tmp );
166                                 strcat( tmp2, tmp );
167                                 if ( trie_find( root, node, NULL ) && trie_find( root, tmp2, &pData ) ) {
168                                         puts( pData );
169                                 }
170                                 else {
171                                         puts( "not get the value." );
172                                 }
173                                 break;
174                         case 'I' : 
175                                 getName( node );
176                                 strcpy( tmp2, node );
177                                 getName( tmp );
178                                 strcat( tmp2, tmp );
179                                 getValue( buf[ ibuf++ ] );
180                                 if ( trie_find( root, node, NULL ) && trie_find( root, tmp2, &pData ) ) {
181                                         puts( "insert failured." );
182                                 }
183                                 else {
184                                         trie_insert( &root, node, NULL );
185                                         trie_insert( &root, tmp2, buf[ ibuf-1 ] );
186                                         puts( "insert succeed." );
187                                 }
188                                 break;
189                         }
190                 }
191         }
192         return 0;
193 }
194 


posted on 2011-03-27 21:08 coreBugZJ 閱讀(1017) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久亚洲精选| 欧美成人蜜桃| 久久乐国产精品| 亚洲国产欧美一区二区三区同亚洲 | 牛夜精品久久久久久久99黑人| 亚洲第一主播视频| 亚洲欧美日韩精品| 欧美激情精品久久久久久免费印度 | 理论片一区二区在线| 一区二区三区视频在线| 噜噜噜91成人网| 国内精品久久久久久久影视蜜臀| 亚洲婷婷综合色高清在线| 欧美va天堂| 欧美日本中文| 日韩一区二区高清| 女仆av观看一区| 欧美激情一区二区三区| 亚洲国产高清一区二区三区| 久久精品三级| 亚洲五月婷婷| 国产精品亚洲片夜色在线| 亚洲视频在线视频| 午夜一区二区三区在线观看| 国产精品一区2区| 亚洲欧美一区二区激情| 夜夜嗨av色一区二区不卡| 女女同性女同一区二区三区91| 国产一区在线免费观看| 亚洲国产黄色| 国产亚洲欧美另类中文| 久久国产天堂福利天堂| 欧美精品导航| 久久久久久尹人网香蕉| 欧美日韩国产探花| 久热精品视频在线观看| 欧美亚洲不卡| 欧美在线播放一区| 翔田千里一区二区| 9i看片成人免费高清| 亚洲毛片av| 国产精品视频网站| 最近看过的日韩成人| 欧美日韩精品免费观看| 麻豆精品在线观看| 国产免费观看久久| 一区二区三区鲁丝不卡| 亚洲免费观看| 在线视频欧美一区| 国产一区二区三区日韩| 在线亚洲欧美视频| 亚洲欧洲精品成人久久奇米网| 91久久精品国产91久久性色tv| 国产一区二区久久| 亚洲欧美激情精品一区二区| 狠狠色综合日日| 亚洲国产欧美久久| 尹人成人综合网| 亚洲伦理在线观看| 日韩视频免费看| 暖暖成人免费视频| 亚洲激情图片小说视频| 亚洲国产午夜| 亚洲免费视频在线观看| 亚洲一区久久久| 久久国产精品99国产| 亚洲区国产区| 欧美成人性生活| 欧美与黑人午夜性猛交久久久| 欧美日韩免费高清一区色橹橹| 久久超碰97人人做人人爱| 你懂的视频一区二区| 欧美黑人一区二区三区| 国产精品入口尤物| 亚洲欧美日韩视频一区| 亚洲欧美一区二区原创| 国产麻豆综合| 欧美影院午夜播放| 亚洲一区视频| 国产精品综合| 久久久久九九视频| 羞羞视频在线观看欧美| 欧美精品一区二区三区久久久竹菊| 久久精品免费观看| 国内精品久久久久影院优| 久久久久久噜噜噜久久久精品| 欧美成人免费播放| 一区二区三区www| 欧美激情视频一区二区三区在线播放 | 亚洲电影第1页| 午夜一区二区三视频在线观看| 久久嫩草精品久久久精品一| 在线播放视频一区| 欧美日韩国产一级| 午夜精品视频在线观看一区二区 | 亚洲精品视频免费观看| 久久久999精品| 久久久久久久久岛国免费| 国产精品私人影院| 麻豆久久婷婷| 亚洲一本大道在线| 欧美 日韩 国产精品免费观看| 亚洲美女免费视频| 国产欧美一区二区精品性色| 亚洲一区二区三区涩| 亚洲欧美日韩国产成人精品影院| 欧美精品 日韩| 亚洲在线视频网站| 亚洲第一福利在线观看| 亚洲女优在线| 亚洲国产精品一区二区尤物区| 国产精品成人播放| 制服丝袜亚洲播放| 欧美激情第8页| 欧美有码在线视频| 亚洲午夜影视影院在线观看| 欧美日韩成人在线播放| 久久精品五月婷婷| 国产精品99久久久久久久女警| 免费看av成人| 一本色道久久88亚洲综合88| 国产一区香蕉久久| 国产精品成人免费| 欧美精品www| 麻豆精品一区二区综合av| 欧美一区二区三区喷汁尤物| 免费中文日韩| 久久久久一本一区二区青青蜜月| 亚洲午夜精品一区二区| 亚洲精品久久久久| 亚洲电影激情视频网站| 国产又爽又黄的激情精品视频 | 欧美综合第一页| 亚洲免费婷婷| 亚洲视频一区| 一区二区三区视频在线观看| 亚洲乱码国产乱码精品精可以看| 男同欧美伦乱| 欧美成人福利视频| 久久夜色精品国产欧美乱极品| 亚洲精品免费电影| 亚洲福利视频一区二区| 国产亚洲欧美日韩日本| 国产日产精品一区二区三区四区的观看方式 | 欧美激情在线免费观看| 麻豆精品视频在线观看视频| 久久网站热最新地址| 久久久噜噜噜久久| 久久综合给合久久狠狠色| 一区二区高清| 在线一区日本视频| 亚洲淫性视频| 午夜视频久久久| 久久se精品一区二区| 久久久久综合网| 免费看亚洲片| 欧美日韩成人在线观看| 国产精品成人一区二区网站软件| 国产精品色婷婷| 国产亚洲福利一区| 亚洲成人自拍视频| 亚洲精品网址在线观看| 亚洲深爱激情| 欧美一区观看| 欧美jjzz| 宅男噜噜噜66一区二区66| 亚洲欧洲av一区二区| 久久精品免费| 欧美日韩一级黄| 国产情侣一区| 亚洲精品精选| 欧美一区二区高清| 蜜桃久久精品乱码一区二区| 亚洲国产精品尤物yw在线观看| 亚洲美女中文字幕| 亚洲激情在线播放| 亚洲欧美国产日韩中文字幕| 久久视频一区二区| 国产精品扒开腿做爽爽爽软件| 国产一区成人| 一本色道久久综合亚洲91 | 在线精品视频一区二区三四| 日韩一区二区精品视频| 久久成人18免费网站| 亚洲欧洲美洲综合色网| 欧美一级大片在线观看| 欧美激情综合| 一区在线观看| 亚洲福利视频一区| 性做久久久久久| 亚洲高清av| 欧美一区免费| 国产精品电影观看| 亚洲日本一区二区三区| 欧美在线免费视频| 日韩视频免费观看| 蜜臀a∨国产成人精品| 国产亚洲永久域名| 亚洲综合国产| 亚洲伦伦在线|