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

20024804

常用鏈接

統(tǒng)計(jì)

最新評(píng)論

stl奇怪的copy問題[已解決]

http://m.shnenglu.com/Files/20024804/PowerOutage.zip
  1 // BEGIN CUT HERE
  2 
  3 // END CUT HERE
  4 
  5 #include <iostream>
  6 #include <string>
  7 #include <vector>
  8 #include <sstream>
  9 #include <utility>
 10 #include <algorithm>
 11 #include <list>
 12 #include <map>
 13 #include <set>
 14 #include <queue>
 15 #include <stack>
 16 #include <bitset>
 17 #include <memory>
 18 #include <cstdio>
 19 #include <cmath>
 20 #include <cstdlib>
 21 #include <cctype>
 22 #include <cstring>
 23 #include <climits>
 24 
 25 #define foreach(it, c) for(typeof((c).begin()) it = (c).begin(); it != (c).end(); it++)
 26 #define forx(i, start, end, step) for(size_t i = (start); i != (end); i += (step))
 27 #define fori(i, start, end) for(size_t i = (start); i != (end); i++)
 28 #define forn(i, end) fori((i), 0, (end))
 29 #define repeat(n) for(int i = 0; i < n; i++)
 30 
 31 using namespace std;
 32 
 33 
 34 class PowerOutage
 35 {
 36 public:
 37     int estimateTimeOut(vector <int> fromJunction, vector <int> toJunction, vector <int> ductLength)
 38     {
 39         map<int, map<intint> >G;
 40         size_t num = 0;
 41         for (size_t i = 0; i < fromJunction.size(); i++)
 42         {
 43             if (num < toJunction[i])
 44             {
 45                 num = toJunction[i];
 46             }
 47             G[fromJunction[i]][toJunction[i]] = ductLength[i];
 48             G[toJunction[i]][fromJunction[i]] = ductLength[i];
 49         }
 50         vector<int> visited;
 51         repeat(num)
 52         visited.push_back(false);
 53 
 54         floyd(G, num + 1);
 55         return dfs(G, visited, 0).first;
 56     }
 57 
 58 private:
 59     vector<vector<int> > D;
 60 
 61     vector<vector<int> > floyd(map<int, map<intint> >G, int n)
 62     {
 63         repeat(n)
 64         {
 65             D.push_back(vector<int>(n));
 66         }
 67         forn(i, n)
 68         forn(j, n)
 69         D[i][j] = G[i][j];
 70 
 71         forn(k, n)
 72         forn(i, n)
 73         forn(j, n)
 74         {
 75             if (i !=&& D[i][k] && D[k][j])
 76             {
 77                 if (D[i][j])
 78                     D[i][j] = min(D[i][j], D[i][k] + D[k][j]);
 79                 else
 80                     D[i][j] = D[i][k] + D[k][j];
 81             }
 82         }
 83         return D;
 84     }
 85 
 86 
 87 
 88     pair<intint> dfs(map<int, map<intint> > &G, vector<int> &visited, int start)
 89     {
 90 //        clog << "start: " << start << ",\tvistied[5]: " << visited[5] << endl;
 91 
 92         int rlen = INT_MAX, rstop = start;
 93         visited[start] = 1;
 94 
 95         map<int, map<intint> > G2 = G;
 96         G2.erase(start);
 97         foreach(i, G2)
 98         foreach(j, i->second)
 99         {
100             if (j->first == start)
101                 i->second.erase(j);
102         }
103 
104         vector<int> rv = visited;
105         map<int, map<intint> > rG = G2;
106         bool enter = false;
107 
108         foreach(it, G[start])
109         {
110             if (!visited[it->first])
111             {
112                 int len = 0, stop = start;
113                 vector<int> v2(visited.size()) ;
114                 clog << "outter0:\tv2.size(): " << v2.size() << ", visited.size(): " << visited.size()
115                     << "\tv2[5]: " << v2[5<< ",\tvistied[5]: " << visited[5<< endl;
116                 copy(visited.begin(), visited.end(), v2.begin());
117 //                forn(i, visited.size())
118 //                    v2.push_back(visited[i]);
119                 clog << "outter1:\tv2.size(): " << v2.size() << ", visited.size(): " << visited.size()
120                     << "\tv2[5]: " << v2[5<< ",\tvistied[5]: " << visited[5<< endl;
121                 map<int, map<intint> > G3 = G2;
122                 foreach(jt, G[start])
123                 {
124                     if (!visited[jt->first])
125                     {
126                         enter = true;
127                         pair<intint> l = dfs(G3, v2, jt->first);
128 //                        clog << "inner:\tv2[5]: " << v2[5] << ",\tvistied[5]: " << visited[5] << endl;
129                         len += jt->second + l.first + D[l.second][start];
130                         if (D[stop][start] < D[l.second][start])
131                         {
132                             stop = l.second;
133                         }
134                     }
135                 }
136                 len -= D[stop][start];
137                 if (len < rlen)
138                 {
139                     rlen = len;
140                     rv = v2;
141                     rG = G3;
142                     rstop = stop;
143                 }
144             }
145         }
146 
147         G = rG;
148         visited = rv;
149         rlen = enter ? rlen : 0;
150         return make_pair(rlen, rstop);
151     }
152 
153 // BEGIN CUT HERE
154 public:
155     void run_test(int Case)
156     {
157         if ((Case == -1|| (Case == 0)) test_case_0();
158         if ((Case == -1|| (Case == 1)) test_case_1();
159         if ((Case == -1|| (Case == 2)) test_case_2();
160         if ((Case == -1|| (Case == 3)) test_case_3();
161         if ((Case == -1|| (Case == 4)) test_case_4();
162     }
163 private:
164     template <typename T> string print_array(const vector<T> &V)
165     {
166         ostringstream os;
167         os << "";
168         for (typename vector<T>::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '\"' << *iter << "\",";
169         os << " }";
170         return os.str();
171     }
172     void verify_case(int Case, const int &Expected, const int &Received)
173     {
174         cerr << "Test Case #" << Case << "";
175         if (Expected == Received) cerr << "PASSED" << endl;
176         else
177         {
178             cerr << "FAILED" << endl;
179             cerr << "\tExpected: \"" << Expected << '\"' << endl;
180             cerr << "\tReceived: \"" << Received << '\"' << endl;
181         }
182     }
183     void test_case_0()
184     {
185         int Arr0[] = {0};
186         vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0])));
187         int Arr1[] = {1};
188         vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0])));
189         int Arr2[] = {10};
190         vector <int> Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0])));
191         int Arg3 = 10;
192         verify_case(0, Arg3, estimateTimeOut(Arg0, Arg1, Arg2));
193     }
194     void test_case_1()
195     {
196         int Arr0[] = {0,1,0};
197         vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0])));
198         int Arr1[] = {1,2,3};
199         vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0])));
200         int Arr2[] = {10,10,10};
201         vector <int> Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0])));
202         int Arg3 = 40;
203         verify_case(1, Arg3, estimateTimeOut(Arg0, Arg1, Arg2));
204     }
205     void test_case_2()
206     {
207         int Arr0[] = {0,0,0,1,4};
208         vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0])));
209         int Arr1[] = {1,3,4,2,5};
210         vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0])));
211         int Arr2[] = {10,10,100,10,5};
212         vector <int> Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0])));
213         int Arg3 = 165;
214         verify_case(2, Arg3, estimateTimeOut(Arg0, Arg1, Arg2));
215     }
216     void test_case_3()
217     {
218         int Arr0[] = {0,0,0,1,4,4,6,7,7,7,20};
219         vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0])));
220         int Arr1[] = {1,3,4,2,5,6,7,20,9,10,31};
221         vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0])));
222         int Arr2[] = {10,10,100,10,5,1,1,100,1,1,5};
223         vector <int> Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0])));
224         int Arg3 = 281;
225         verify_case(3, Arg3, estimateTimeOut(Arg0, Arg1, Arg2));
226     }
227     void test_case_4()
228     {
229         int Arr0[] = {0,0,0,0,0};
230         vector <int> Arg0(Arr0, Arr0 + (sizeof(Arr0) / sizeof(Arr0[0])));
231         int Arr1[] = {1,2,3,4,5};
232         vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0])));
233         int Arr2[] = {100,200,300,400,500};
234         vector <int> Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0])));
235         int Arg3 = 2500;
236         verify_case(4, Arg3, estimateTimeOut(Arg0, Arg1, Arg2));
237     }
238 
239 // END CUT HERE
240 
241 };
242 
243 // BEGIN CUT HERE
244 int main()
245 {
246     PowerOutage ___test;
247     ___test.run_test(2);
248 }
249 // END CUT HERE
250 

116行copy后v2和visited的內(nèi)容竟然不同!!!

把116行換成
v2 = visited;
也出錯(cuò)

247行換成
___test.run_test(-1);
出現(xiàn)棧錯(cuò)誤

我的編譯器是gcc 4.2
os是ubuntu 8.04, 32位




問題找到了,copy內(nèi)容不同的原因是下標(biāo)越界
___test.run_test(-1)出錯(cuò)的原因是每次測(cè)試應(yīng)該構(gòu)造新對(duì)象來(lái)著。。。
嗨,真是打擾各位看客了

posted on 2008-11-05 23:49 塵埃 閱讀(1872) 評(píng)論(8)  編輯 收藏 引用

評(píng)論

# re: stl奇怪的copy問題 2008-11-06 10:01 塵埃

丟人死了

問題找到了,copy內(nèi)容不同的原因是下標(biāo)越界
___test.run_test(-1)出錯(cuò)的原因是每次測(cè)試應(yīng)該構(gòu)造新對(duì)象來(lái)著。。。
嗨,真是打擾各位看客了  回復(fù)  更多評(píng)論   

# re: stl奇怪的copy問題[已解決] 2008-11-06 11:42 abettor

真要命,就怕碰見上來(lái)就貼一大堆代碼的。
有比這還可怕的嗎?——有!貼一大堆代碼還沒注釋!  回復(fù)  更多評(píng)論   

# re: stl奇怪的copy問題[已解決] 2008-11-06 11:58 塵埃

@abettor
呵呵,抱歉哦,主要是我覺得可能問題跟代碼的意義沒有關(guān)系。。。而且這種代碼不是工業(yè)代碼,只是練手的,就沒有注釋了,抱歉。。。  回復(fù)  更多評(píng)論   

# re: stl奇怪的copy問題[已解決] 2008-11-06 15:58 Wang Feng

5 #include <iostream>
6 #include <string>
7 #include <vector>
8 #include <sstream>
9 #include <utility>
10 #include <algorithm>
11 #include <list>
12 #include <map>
13 #include <set>
14 #include <queue>
15 #include <stack>
16 #include <bitset>
17 #include <memory>
18 #include <cstdio>
19 #include <cmath>
20 #include <cstdlib>
21 #include <cctype>
22 #include <cstring>
23 #include <climits>


還有比這更可怕的么?19個(gè)頭文件…………  回復(fù)  更多評(píng)論   

# re: stl奇怪的copy問題[已解決] 2008-11-06 16:00 塵埃

@Wang Feng
這僅僅是為了參加比賽,比賽的時(shí)候編碼時(shí)間很重要,所以就沒有注意這么多
真正做項(xiàng)目的時(shí)候我是不會(huì)這樣寫的  回復(fù)  更多評(píng)論   

# re: stl奇怪的copy問題[已解決] 2008-11-06 16:39 Wang Feng

不要當(dāng)真,當(dāng)我是純粹灌水就好了:)  回復(fù)  更多評(píng)論   

# re: stl奇怪的copy問題[已解決] 2008-11-06 18:55 塵埃

@Wang Feng
:)  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲美女区一区| 国产精品久久久久久久久婷婷| 欧美精品免费看| 欧美激情一区二区三区在线视频| 亚洲欧美日韩综合aⅴ视频| 亚洲精品一区在线| 亚洲人成欧美中文字幕| 亚洲福利国产精品| 亚洲国产婷婷| 一区二区精品| 欧美亚洲综合在线| 久久久久久久999| 美女尤物久久精品| 亚洲激情网站免费观看| 农夫在线精品视频免费观看| 欧美激情第二页| 在线视频精品一区| 午夜国产不卡在线观看视频| 久久免费99精品久久久久久| 欧美国产在线视频| 国产精品影音先锋| 在线观看亚洲一区| 亚洲视频图片小说| 欧美麻豆久久久久久中文| 欧美无乱码久久久免费午夜一区| 国产精品一区在线播放| 亚洲国产精品小视频| 亚洲一卡久久| 欧美成人一二三| 亚洲一本视频| 久久久久久亚洲精品不卡4k岛国| 欧美日韩高清在线播放| 国产亚洲观看| 亚洲性感激情| 欧美激情综合色| 中日韩男男gay无套| 美玉足脚交一区二区三区图片| 国产精品成人av性教育| 亚洲国产黄色| 久久久久国产精品一区二区| 99在线精品观看| 国产精品久久久久一区二区三区共 | 国产区精品在线观看| 亚洲电影在线| 亚洲欧美不卡| 亚洲精品国精品久久99热| 久久爱www.| 国产精品九色蝌蚪自拍| 在线欧美视频| 久久久噜噜噜久久| 中文在线不卡| 欧美日韩另类丝袜其他| 亚洲国产一区二区视频| 久久激五月天综合精品| 日韩一级视频免费观看在线| 免费在线国产精品| 伊人久久大香线| 久久久久一本一区二区青青蜜月| 亚洲视频999| 欧美色欧美亚洲高清在线视频| 亚洲国产视频a| 免费在线欧美黄色| 久热综合在线亚洲精品| 一区免费视频| 久久久亚洲午夜电影| 午夜免费日韩视频| 国产一区二区激情| 久久久国产精品亚洲一区 | 亚洲午夜精品一区二区三区他趣| 免费在线一区二区| 亚洲国产精品久久久久秋霞蜜臀 | 日韩视频永久免费观看| 欧美激情综合亚洲一二区| 亚洲国产成人91精品| 黑人中文字幕一区二区三区| 性做久久久久久免费观看欧美| 亚洲美女免费精品视频在线观看| 欧美国产精品| 亚洲天堂久久| 亚洲一区在线直播| 国产日本亚洲高清| 久久一区二区三区四区| 久久麻豆一区二区| 亚洲三级电影全部在线观看高清| 亚洲国产精品久久91精品| 欧美日韩亚洲视频一区| 欧美一区免费| 久久久久久久成人| 99精品视频免费观看| 一区二区三区视频免费在线观看| 国产精品三级久久久久久电影| 久久免费一区| 欧美精品日韩一区| 久久久久免费观看| 欧美人在线视频| 欧美一区二区性| 老司机精品福利视频| 宅男噜噜噜66国产日韩在线观看| 亚洲一卡二卡三卡四卡五卡| 激情文学一区| 一个色综合导航| 黑人操亚洲美女惩罚| 亚洲精品国产精品国自产在线 | 久久久久国产精品www| 亚洲麻豆一区| 欧美一二三区精品| 日韩午夜激情av| 午夜一区二区三区在线观看| 亚洲日本成人女熟在线观看| 亚洲自拍高清| 99热在这里有精品免费| 午夜精品剧场| 亚洲新中文字幕| 猛男gaygay欧美视频| 欧美一区二区三区四区在线| 欧美r片在线| 久久久国产精品一区二区三区| 欧美精品在线观看播放| 麻豆精品传媒视频| 国产精品在线看| 99av国产精品欲麻豆| 亚洲精品国精品久久99热| 久久本道综合色狠狠五月| 亚洲一区高清| 欧美日韩一区二区在线| 美女视频一区免费观看| 国产热re99久久6国产精品| 亚洲最黄网站| 99国产精品私拍| 免费的成人av| 欧美激情免费观看| 曰本成人黄色| 久久电影一区| 久久久久国产成人精品亚洲午夜| 国产精品成人aaaaa网站| 亚洲精品午夜精品| 最新日韩欧美| 欧美大片在线看| 一区二区欧美在线| 欧美成年人视频网站欧美| 美女主播精品视频一二三四| 黄色小说综合网站| 久久久精品性| 久久岛国电影| 国产日本欧美一区二区| 欧美在线视频免费| 久久精品国产亚洲精品| 国产午夜精品美女毛片视频| 亚洲欧美日韩在线综合| 久久狠狠一本精品综合网| 国产婷婷色一区二区三区| 香蕉久久夜色精品国产| 久久久之久亚州精品露出| 国产欧美亚洲视频| 午夜在线一区| 免费观看成人www动漫视频| 原创国产精品91| 欧美激情亚洲视频| 99热这里只有精品8| 亚洲一区二区高清视频| 亚洲一区视频在线观看视频| 欧美一区二区日韩一区二区| 国产日韩欧美视频在线| 久久国产视频网| 欧美大秀在线观看| 中国女人久久久| 国产日韩欧美一二三区| 久久综合国产精品台湾中文娱乐网| 亚洲高清av在线| 亚洲欧美日韩国产综合| 国自产拍偷拍福利精品免费一| 裸体丰满少妇做受久久99精品| 亚洲人成在线观看网站高清| 亚洲免费在线观看| 国产综合精品一区| 欧美精品色一区二区三区| 亚洲综合色丁香婷婷六月图片| 美日韩丰满少妇在线观看| 亚洲图片欧美日产| 国产一区 二区 三区一级| 欧美成人高清视频| 亚洲伊人色欲综合网| 欧美国产视频在线| 亚欧成人在线| 夜夜精品视频| 一区在线视频| 国产精品一区二区视频| 欧美精品日韩| 狼狼综合久久久久综合网| 在线性视频日韩欧美| 欧美国产日本在线| 欧美亚洲系列| 日韩一区二区精品视频| 狠狠色综合色综合网络| 国产精品海角社区在线观看| 可以免费看不卡的av网站| 亚洲欧美资源在线| 亚洲无亚洲人成网站77777| 欧美国产日韩一区二区三区| 久久国产精品久久久久久电车|