SRM 500 DIV1 B
2011-08-17 17:44
316 查看
递归算法在几何计算上的应用...好题...
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <memory.h> #include <string> #include <vector> #include <map> #include <set> #include <queue> #include <algorithm> #include <iostream> using namespace std; class FractalPicture { public: double getLength(int x1, int y1, int x2, int y2) { return solve(x1, y1, x2, y2, 500); } double solve(int x1, int y1, int x2, int y2, int gen) { if (gen == 0) return 0.0; if (x1 < -27) x1 = -27; if (x2 > 27) x2 = 27; if (y1 < 0) y1 = 0; if (y2 > 81) y2 = 81; if (x1 > x2 || y1 > y2) return 0.0; if (x1 == -27 && x2 == 27 && y1 == 0 && y2 == 81) return 81.0 + 54.0 * (gen - 1); double res = 0.0; if (x1 <= 0 && x2 >= 0) { if (gen != 1) res += max(min(54, y2) - y1, 0); else res += y2 - y1; } res += solve((y1 - 54) * 3, -x2 * 3, (y2 - 54) * 3, -x1 * 3, gen - 1) / 3.0; res += solve((54 - y2) * 3, x1 * 3, (54 - y1) * 3, x2 * 3, gen - 1) / 3.0; res += solve(x1 * 3, (y1 - 54) * 3, x2 * 3, (y2 - 54) * 3, gen - 1) / 3.0; return res; } };
相关文章推荐
- 【TP SRM 703 div2 500】 GCDGraph
- TopCoder SRM 646 Div2 Problem 500 - TheGridDivTwo (BFS + 优先队列)
- SRM 667 DIV2 OrderOfOperationsDiv2 500-point
- TopCoder SRM 650 Div2 Problem 500 - TaroFillingAStringDiv2 (DP)
- TopCoder SRM 651 Div2 Problem 500 - FoxAndSouvenirTheNext (DP)
- TopCoder SRM 681 Div. 2 Problem 500 - ExplodingRobots (枚举)
- Topcoder SRM 503 DIV1 500 KingdomXCitiesandVillages
- TC SRM 671 Div2 500 BearDartsDiv2
- SRM 554 - 500 TheBrickTowerMediumDivOne
- (水题)TC SRM 441 DIV 500 PaperAndPaintEasy
- Topcoder SRM 543 DIV2 1000 EllysThreeRivers & DIV1 500 EllysRivers
- Topcoder: Problem Statement SRM 39 DIV1 500 Point
- SRM 586 DIV2 500
- TopCoder SRM 654 Div2 Problem 500 - OneEntrance (思维)
- TopCoder SRM 659 Div2 Problem 500 - PublicTransit (思维)
- TopCoder SRM 647 Div2 Problem 500 - TravellingSalesmanEasy (思维)
- SRM 669 DIV 2 CombiningSlimes 500-point
- srm 556 div1 500 LeftRightDigitsGame2(DP)
- SRM 599 div2 250 500
- SRM 497(DIVII) 500 PermutationSignature