• Topcoder SRM632 DIV2 解题报告


    250:乱搞

    解题代码:

     1 // BEGIN CUT HERE
     2 /*
     3 
     4 */
     5 // END CUT HERE
     6 #line 7 "RunningAroundPark.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 RunningAroundPark
    47 {
    48         public:
    49         int numberOfLap(int N, vector <int> d)
    50         {
    51            int hs[100];
    52            memset(hs,0,sizeof(hs));
    53            int len = d.size();
    54            int sum = 1;
    55            for(int i = 1 ;i < len ;i ++)
    56            {
    57               if(d[i] <= d[i-1] )
    58                   sum ++ ; 
    59            }
    60            return sum ;
    61         }
    62         
    63 
    64 };
    View Code

    500:给定序列的二进制尾巴0的个数,问你这一序列的子序列可能构成等比数列的可能数。

    解题思路:子序列为等比数列的唯一可能性是这个序列二进制后缀0个数为等差数列

    解题代码:

     1 // BEGIN CUT HERE
     2 /*
     3 
     4 */
     5 // END CUT HERE
     6 #line 7 "PotentialGeometricSequence.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 PotentialGeometricSequence
    47 {
    48         public:
    49         int numberOfSubsequences(vector <int> d)
    50         {
    51             int len = d.size();
    52             int sum = len; 
    53             for(int i = 1 ;i < len ;i ++)
    54              {
    55                 int temp = d[i] - d[i-1];
    56                 for(int j = i ;j < len ;j ++)
    57                 {
    58                    int ok = 1 ; 
    59                    for(int s = i ;s <= j; s ++)
    60                    {
    61                       if(d[s] - d[s-1] != temp)
    62                           ok = 0 ; 
    63                    }
    64                    if(ok)
    65                        sum ++ ;
    66                 }
    67              }
    68             return sum;
    69         }
    70         
    71 
    72 };
    View Code

    1000:问你100个数选任意多数乘积为K 的总数有多少

    解题思路:可以知道 k的约数最多为1000个 ,我们用map背包就行

    解题代码:

     1 // BEGIN CUT HERE
     2 /*
     3 
     4 */
     5 // END CUT HERE
     6 #line 7 "GoodSubset.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 vector <LL>a;
    46 int num[105];
    47 int n ; 
    48 int rn; 
    49 map <LL,LL>  mp[105];
    50 map <LL,LL> ::iterator it;
    51 #define M 1000000007
    52 class GoodSubset
    53 {
    54         public:
    55         int numberOfSubsets(int goodValue, vector <int> d)
    56         {
    57           for(int i = 0 ;i <=100 ;i ++)
    58               mp[i].clear();
    59           mp[0][1] = 1;
    60           n = d.size();
    61           for(int i = 1 ;i <=n ;i ++)
    62           {
    63             int t = 0 ;
    64             for( it = mp[i-1].begin();it != mp[i-1].end();it++)
    65             {
    66             t ++ ; 
    67               //printf("%d %lld %lld
    ",i,it->first,it->second);
    68                mp[i][it->first] = (mp[i][it->first] + mp[i-1][it->first])%M;
    69                if(goodValue % (d[i-1]*it->first) == 0 )
    70                    mp[i][d[i-1]*it->first] = (it->second+mp[i][d[i-1]*it->first])%M;
    71             }
    72         //    printf("%d
    ",t);
    73           }
    74            if(goodValue == 1)
    75                mp[n][goodValue] -- ;
    76            return int(mp[n][goodValue]);
    77         }
    78 
    79 };
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    Redis
    Ajax和JSON
    快速幂
    欧拉函数
    约数
    质数
    二分图相关算法模板
    最小生成树模板
    最短路算法模板
    康托展开和逆康托展开
  • 原文地址:https://www.cnblogs.com/zyue/p/3959867.html
Copyright © 2020-2023  润新知