本文共 8055 字,大约阅读时间需要 26 分钟。
250:乱搞。
1 // BEGIN CUT HERE 2 /* 3 4 */ 5 // END CUT HERE 6 #line 7 "Target.cpp" 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include 29 #include 30 using namespace std; 31 32 #define PB push_back 33 #define MP make_pair 34 35 #define REP(i,n) for(i=0;i<(n);++i) 36 #define FOR(i,l,h) for(i=(l);i<=(h);++i) 37 #define FORD(i,h,l) for(i=(h);i>=(l);--i) 38 39 typedef vector VI; 40 typedef vector VS; 41 typedef vector VD; 42 typedef long long LL; 43 typedef pair PII; 44 45 46 class Target 47 { 48 public: 49 vector draw(int n) 50 { 51 vector fuck; 52 string a; 53 a.clear(); 54 for(int i = 0;i < n;i ++) 55 a.push_back('#'); 56 fuck.push_back(a); 57 for(int i = 1;i < n/2 + 1;i ++) 58 { 59 for(int j =0 ;j < n ;j ++) 60 a[j] = ' '; 61 //cout << a < < i;j += 2 ) 64 { 65 a[j] = a[n-j -1] = '#'; 66 } 67 if(i % 2 == 0 ) 68 { 69 for(int j = i;j <= n-i -1;j ++) 70 a[j] = '#'; 71 } 72 73 fuck.push_back(a); 74 //cout << a << endl; 75 // printf("%d\n",fuck.size()); 76 77 } 78 for(int i= n/2 +1;i < n;i ++) 79 { 80 string temp = fuck[n-i-1]; 81 fuck.push_back(temp); 82 } 83 84 85 return fuck; 86 87 } 88 89 // BEGIN CUT HERE 90 public: 91 void run_test(int Case) { if ((Case == -1) || (Case == 0)) test_case_0(); if ((Case == -1) || (Case == 1)) test_case_1(); if ((Case == -1) || (Case == 2)) test_case_2(); if ((Case == -1) || (Case == 3)) test_case_3(); } 92 private: 93 template string print_array(const vector &V) { ostringstream os; os << "{ "; for (typename vector ::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '\"' << *iter << "\","; os << " }"; return os.str(); } 94 void verify_case(int Case, const vector &Expected, const vector &Received) { cerr << "Test Case #" << Case << "..."; if (Expected == Received) cerr << "PASSED" << endl; else { cerr << "FAILED" << endl; cerr << "\tExpected: " << print_array(Expected) << endl; cerr << "\tReceived: " << print_array(Received) << endl; } } 95 void test_case_0() { int Arg0 = 5; string Arr1[] = { "#####", "# #", "# # #", "# #", "#####" }; vector Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); verify_case(0, Arg1, draw(Arg0)); } 96 void test_case_1() { int Arg0 = 9; string Arr1[] = { "#########", "# #", "# ##### #", "# # # #", "# # # # #", "# # # #", "# ##### #", "# #", "#########" }; vector Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); verify_case(1, Arg1, draw(Arg0)); } 97 void test_case_2() { int Arg0 = 13; string Arr1[] = { "#############", "# #", "# ######### #", "# # # #", "# # ##### # #", "# # # # # #", "# # # # # # #", "# # # # # #", "# # ##### # #", "# # # #", "# ######### #", "# #", "#############" }; vector Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); verify_case(2, Arg1, draw(Arg0)); } 98 void test_case_3() { int Arg0 = 17; string Arr1[] = { "#################", "# #", "# ############# #", "# # # #", "# # ######### # #", "# # # # # #", "# # # ##### # # #", "# # # # # # # #", "# # # # # # # # #", "# # # # # # # #", "# # # ##### # # #", "# # # # # #", "# # ######### # #", "# # # #", "# ############# #", "# #", "#################" }; vector Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); verify_case(3, Arg1, draw(Arg0)); } 99 100 // END CUT HERE101 102 };103 104 // BEGIN CUT HERE105 int main()106 {107 Target ___test;108 ___test.run_test(-1);109 return 0;110 }111 // END CUT HERE
500:二维平面内,给你规定的步数和每步的步长,要你求最后是否能走到指定点。
思路:算出能到达的范围就行 ,最开始 用的是 be(左端点) = min(abs(be - a[i]),abs(en-a[i])),发现有问题,在 a[i] <= en && a[i] >= be 的时候 be可以等于0.
1 // BEGIN CUT HERE 2 /* 3 4 */ 5 // END CUT HERE 6 #line 7 "Jumping.cpp" 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include 29 #include 30 using namespace std; 31 32 #define PB push_back 33 #define MP make_pair 34 35 #define REP(i,n) for(i=0;i<(n);++i) 36 #define FOR(i,l,h) for(i=(l);i<=(h);++i) 37 #define FORD(i,h,l) for(i=(h);i>=(l);--i) 38 39 typedef vector VI; 40 typedef vector VS; 41 typedef vector VD; 42 typedef long long LL; 43 typedef pair PII; 44 45 46 class Jumping 47 { 48 public: 49 int ABS(int x) 50 { 51 if(x < 0) 52 return -x; 53 else return x; 54 } 55 string ableToGet(int x, int y, vector a) 56 { 57 double p = sqrt((x*x) + (y*y) * 1.0); 58 int len = a.size(); 59 int be ; 60 int en; 61 be = 0 ; 62 en = 0 ; 63 for(int i = 0 ;i < len;i ++) 64 { 65 if(a[i] <= en && a[i] >= be) 66 be = 0 ; 67 else { 68 be = min(ABS(en -a[i]),ABS(be -a[i])); 69 } 70 en = en + a[i]; 71 //printf("%d %d %lf\n",be,en,p); 72 } 73 if(p + 1e-10 >= be && p - 1e-10 <= en) 74 { 75 return "Able"; 76 } 77 return "Not able"; 78 79 } 80 81 // BEGIN CUT HERE 82 public: 83 void run_test(int Case) { if ((Case == -1) || (Case == 0)) test_case_0(); if ((Case == -1) || (Case == 1)) test_case_1(); if ((Case == -1) || (Case == 2)) test_case_2(); if ((Case == -1) || (Case == 3)) test_case_3(); if ((Case == -1) || (Case == 4)) test_case_4(); if ((Case == -1) || (Case == 5)) test_case_5(); if ((Case == -1) || (Case == 6)) test_case_6(); } 84 private: 85 template string print_array(const vector &V) { ostringstream os; os << "{ "; for (typename vector ::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '\"' << *iter << "\","; os << " }"; return os.str(); } 86 void verify_case(int Case, const string &Expected, const string &Received) { cerr << "Test Case #" << Case << "..."; if (Expected == Received) cerr << "PASSED" << endl; else { cerr << "FAILED" << endl; cerr << "\tExpected: \"" << Expected << '\"' << endl; cerr << "\tReceived: \"" << Received << '\"' << endl; } } 87 void test_case_0() { int Arg0 = 5; int Arg1 = 4; int Arr2[] = { 2, 5}; vector Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0]))); string Arg3 = "Able"; verify_case(0, Arg3, ableToGet(Arg0, Arg1, Arg2)); } 88 void test_case_1() { int Arg0 = 3; int Arg1 = 4; int Arr2[] = { 4}; vector Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0]))); string Arg3 = "Not able"; verify_case(1, Arg3, ableToGet(Arg0, Arg1, Arg2)); } 89 void test_case_2() { int Arg0 = 3; int Arg1 = 4; int Arr2[] = { 6}; vector Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0]))); string Arg3 = "Not able"; verify_case(2, Arg3, ableToGet(Arg0, Arg1, Arg2)); } 90 void test_case_3() { int Arg0 = 0; int Arg1 = 1; int Arr2[] = { 100, 100}; vector Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0]))); string Arg3 = "Able"; verify_case(3, Arg3, ableToGet(Arg0, Arg1, Arg2)); } 91 void test_case_4() { int Arg0 = 300; int Arg1 = 400; int Arr2[] = { 500}; vector Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0]))); string Arg3 = "Able"; verify_case(4, Arg3, ableToGet(Arg0, Arg1, Arg2)); } 92 void test_case_5() { int Arg0 = 11; int Arg1 = 12; int Arr2[] = { 1,2,3,4,5,6,7,8,9,10}; vector Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0]))); string Arg3 = "Able"; verify_case(5, Arg3, ableToGet(Arg0, Arg1, Arg2)); } 93 void test_case_6() { int Arg0 = 11; int Arg1 = 12; int Arr2[] = { 1,2,3,4,5,6,7,8,9,100}; vector Arg2(Arr2, Arr2 + (sizeof(Arr2) / sizeof(Arr2[0]))); string Arg3 = "Not able"; verify_case(6, Arg3, ableToGet(Arg0, Arg1, Arg2)); } 94 95 // END CUT HERE 96 97 }; 98 99 // BEGIN CUT HERE100 int main()101 {102 int x, y,temp ;103 vector a; 104 scanf("%d %d",&x,&y);105 106 while(scanf("%d",&temp) != EOF)107 {108 a.push_back(temp);109 getchar();110 }111 Jumping xx;112 xx.ableToGet(x,y,a);113 return 0;114 }115 // END CUT HERE
有会做1000pt 的请在评论区说下解法 谢谢
转载于:https://www.cnblogs.com/zyue/p/3978478.html