zoukankan      html  css  js  c++  java
  • Topcoder SRM633 DIV2 解题报告

    250:乱搞。

      1 // BEGIN CUT HERE
      2 /*
      3 
      4 */
      5 // END CUT HERE
      6 #line 7 "Target.cpp"
      7 #include <cstdlib>
      8 #include <cctype>
      9 #include <cstring>
     10 #include <cstdio>
     11 #include <cmath>
     12 #include <algorithm>
     13 #include <vector>
     14 #include <string>
     15 #include <iostream>
     16 #include <sstream>
     17 #include <map>
     18 #include <set>
     19 #include <queue>
     20 #include <stack>
     21 #include <fstream>
     22 #include <numeric>
     23 #include <iomanip>
     24 #include <bitset>
     25 #include <list>
     26 #include <stdexcept>
     27 #include <functional>
     28 #include <utility>
     29 #include <ctime>
     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<int> VI;
     40 typedef vector<string> VS;
     41 typedef vector<double> VD;
     42 typedef long long LL;
     43 typedef pair<int,int> PII;
     44 
     45 
     46 class Target
     47 {
     48         public:
     49         vector <string> draw(int n)
     50         {
     51           vector <string> 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 <<endl;
     62 
     63              for(int j = 0;j < 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
    ",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 <typename T> string print_array(const vector<T> &V) { ostringstream os; os << "{ "; for (typename vector<T>::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '"' << *iter << "","; os << " }"; return os.str(); }
     94     void verify_case(int Case, const vector <string> &Expected, const vector <string> &Received) { cerr << "Test Case #" << Case << "..."; if (Expected == Received) cerr << "PASSED" << endl; else { cerr << "FAILED" << endl; cerr << "	Expected: " << print_array(Expected) << endl; cerr << "	Received: " << print_array(Received) << endl; } }
     95     void test_case_0() { int Arg0 = 5; string Arr1[] = {"#####", "#   #", "# # #", "#   #", "#####" }; vector <string> 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 <string> 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 <string> 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 <string> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); verify_case(3, Arg1, draw(Arg0)); }
     99 
    100 // END CUT HERE
    101 
    102 };
    103 
    104 // BEGIN CUT HERE
    105 int main()
    106 {
    107         Target ___test;
    108         ___test.run_test(-1);
    109         return 0;
    110 }
    111 // END CUT HERE
    View Code

    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 <cstdlib>
      8 #include <cctype>
      9 #include <cstring>
     10 #include <cstdio>
     11 #include <cmath>
     12 #include <algorithm>
     13 #include <vector>
     14 #include <string>
     15 #include <iostream>
     16 #include <sstream>
     17 #include <map>
     18 #include <set>
     19 #include <queue>
     20 #include <stack>
     21 #include <fstream>
     22 #include <numeric>
     23 #include <iomanip>
     24 #include <bitset>
     25 #include <list>
     26 #include <stdexcept>
     27 #include <functional>
     28 #include <utility>
     29 #include <ctime>
     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<int> VI;
     40 typedef vector<string> VS;
     41 typedef vector<double> VD;
     42 typedef long long LL;
     43 typedef pair<int,int> 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 <int>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
    ",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 <typename T> string print_array(const vector<T> &V) { ostringstream os; os << "{ "; for (typename vector<T>::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 << "	Expected: "" << Expected << '"' << endl; cerr << "	Received: "" << Received << '"' << endl; } }
     87     void test_case_0() { int Arg0 = 5; int Arg1 = 4; int Arr2[] = {2, 5}; vector <int> 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 <int> 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 <int> 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 <int> 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 <int> 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 <int> 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 <int> 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 HERE
    100 int main()
    101 {
    102     int x, y,temp ;
    103     vector<int> 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
    View Code

     有会做1000pt 的请在评论区说下解法 谢谢

    没有梦想,何谈远方
  • 相关阅读:
    php基础的一点注意事项
    每天学习一点点--word-break和word-wrap用法和区别
    line-height的一点粗浅认识
    图片的无缝滚动效果
    CSS篇章
    redis 3.0 集群__数据迁移和伸缩容
    redis 3.0 集群__使用
    官方教程文档地址
    redis 3.0 集群__安装
    java 泛型的使用
  • 原文地址:https://www.cnblogs.com/zyue/p/3978478.html
Copyright © 2011-2022 走看看