programming-challenges Bee Maja (111204) 题解
来源:互联网 发布:淘宝代销货源平台 编辑:程序博客网 时间:2024/06/05 02:30
本题可以通过找规律解决,事实上每个格子的值可以通过相邻的两个格子算出来的。我画了一个大大的图,其实也花了不少时间。
#include <iostream>#include <sstream>#include <fstream>#include <string>#include <vector>#include <list>#include <queue>#include <map>#include <set>#include <stack>#include <assert.h>#include <algorithm>#include <math.h>#include <ctime>#include <functional>#include <string.h>#include <stdio.h>#include <numeric>#include <float.h>using namespace std;const int MAXNUM = 100000; struct Node {int i1, i2; Node() : i1(0), i2(0) {}Node(int ai1, int ai2) : i1(ai1), i2(ai2) {}};Node addNode(const Node &n1, const Node &n2, int level) {Node newNode; if (n1.i1 == level && n2.i1 == level) {newNode.i1 = level + 1; }else if (n1.i1 == -level && n2.i1 == -level) {newNode.i1 = -level - 1; }else if (n1.i1 > 0 || n2.i1 > 0) {newNode.i1 = max(n1.i1, n2.i1);}else {newNode.i1 = min(n1.i1, n2.i1);}if (n1.i2 == level && n2.i2 == level) {newNode.i2 = level + 1;}else if (n1.i2 == -level && n2.i2 == -level) {newNode.i2 = -level - 1;}else if (n1.i2 > 0 || n2.i2 > 0) {newNode.i2 = max(n1.i2, n2.i2);}else {newNode.i2 = min(n1.i2, n2.i2);}return newNode;}vector<Node> vNodes; int main() {vNodes.push_back(Node(0, 0));vNodes.push_back(Node(0, 1));vNodes.push_back(Node(-1, 1));vNodes.push_back(Node(-1, 0));vNodes.push_back(Node(0, -1));vNodes.push_back(Node(1, -1));vNodes.push_back(Node(1, 0));int minorLoop = 0; int lastMinorLoop = 0; while (vNodes.size() <= MAXNUM) {lastMinorLoop++; minorLoop = lastMinorLoop * 6; int startIndex = vNodes.size() - minorLoop; for (int i = 1; i <= minorLoop; i++) {int delta = i - 1; if (i == 1) {vNodes.push_back(addNode(vNodes[startIndex], vNodes.back(), lastMinorLoop));}else {vNodes.push_back(addNode(vNodes[startIndex + delta], vNodes[startIndex + delta - 1], lastMinorLoop));}if ((i) % lastMinorLoop == 0) {vNodes.push_back(addNode(vNodes[startIndex + delta], vNodes[startIndex + delta], lastMinorLoop)); }if (vNodes.size() > MAXNUM) break;}}int nodeId = 0; while (cin >> nodeId) {cout << vNodes[nodeId - 1].i1 << " " << vNodes[nodeId - 1].i2 << endl;}return 0; }
0 0
- programming-challenges Bee Maja (111204) 题解
- UVA 10182 - Bee Maja
- programming-challenges WERTYU (110301) 题解
- programming-challenges ShellSort (110407) 题解
- programming-challenges Ones (110504) 题解
- programming-challenges Chopsticks (111107) 题解
- programming-challenges Bicoloring (110901) 题解
- programming-challenges Crypt Kicker (110204) 题解
- programming-challenges Stack 'em Up (110205) 题解
- programming-challenges Poker Hands (110202) 题解
- programming-challenges Contest Scoreboard (110207) 题解
- programming-challenges Where's Waldorf? (110302) 题解
- programming-challenges Common Permutation (110303) 题解
- programming-challenges Crypt Kicker II (110304) 题解
- programming-challenges Automated Judge Script (110305) 题解
- programming-challenges File Fragmentation (110306) 题解
- programming-challenges Vito's Family (110401) 题解
- programming-challenges Stacks of Flapjacks (110402) 题解
- 堆排序 java
- HDU 1754 I Hate It
- js插件使用整理
- HDU-1069-DP-Monkey and Banana
- 解决win7没有找到suite objects.dll 因此rational rose不能能启动
- programming-challenges Bee Maja (111204) 题解
- 把JavaEE编写的servlet,配置到tomcat7.0
- programming-challenges Dermuba Triangle (111207) 题解
- MySql学习笔记_04_单独说下日期和时间类型&&枚举类型
- Android UI的优化
- MySQL中的行级锁SELECT FOR UPDATE 和LOCK IN SHARE MODE 区别
- UVa 11464-Even Parity 偶数矩阵-bitmask+暴力
- UIButton 的实现原理
- HDU-1087-DP-Super Jumping! Jumping! Jumping!