首页 > 代码库 > Topcoder srm 632 div2
Topcoder srm 632 div2
脑洞太大,简单东西就是想复杂,活该一直DIV2;
A:水,基本判断A[I]<=A[I-1],ANS++;
B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列
我们枚举公差,找到能有多少就可以了。
C:想到MAP,但是前面太脑掺,只有几分钟写。。
不过还真不一定写的出来。。
进来DP感觉良好。。
我们可以发现其实这些的乘积其实比较少。。
然后就像普通数组进行加法一样。
1 #include <cstdlib> 2 #include <cctype> 3 #include <cstring> 4 #include <cstdio> 5 #include <cmath> 6 #include <algorithm> 7 #include <vector> 8 #include <string> 9 #include <iostream>10 #include <sstream>11 #include <map>12 #include <set>13 #include <queue>14 #include <stack>15 #include <fstream>16 #include <numeric>17 #include <iomanip>18 #include <bitset>19 #include <list>20 #include <stdexcept>21 #include <functional>22 #include <utility>23 #include <ctime>24 using namespace std;25 26 #define PB push_back27 #define MP make_pair28 29 #define REP(i,n) for(i=0;i<(n);++i)30 #define FOR(i,l,h) for(i=(l);i<=(h);++i)31 #define FORD(i,h,l) for(i=(h);i>=(l);--i)32 33 typedef vector<int> VI;34 typedef vector<string> VS;35 typedef vector<double> VD;36 typedef long long ll;37 typedef pair<int,int> PII;38 #define mod 100000000739 40 41 map<ll,ll> a[111];42 class GoodSubset43 {44 public:45 int numberOfSubsets(int goodValue, vector <int> d)46 {47 int n=d.size();48 ll ret=0;49 for (int i=0;i<n;i++)50 {51 for (int j=0;j<i;j++)52 {53 for (map<ll,ll>::iterator it=a[j].begin();it!=a[j].end();it++)54 {55 ll now=it->first;56 int h=it->second;57 if (goodValue%now==0)58 {59 a[i][now*d[i]]+=h;60 a[i][now*d[i]]%=mod;61 }62 }63 }64 a[i][d[i]]++;65 a[i][d[i]]%=mod;66 ret+=a[i][goodValue];67 ret%=mod;68 }69 return ret;70 }71 };72 73 int main() //模拟数据自测用74 {75 int n,m;76 cin>>n>>m;77 vector<int> p;78 for (int i=0;i<m;i++)79 {80 int x;81 cin>>x;82 p.push_back(x);83 }84 GoodSubset x;85 cout<<x.numberOfSubsets(n,p);86 return 0;87 }88 89 90 //代码还是很好看懂的91 // Powered by FileEdit92 // Powered by TZTester 1.01 [25-Feb-2003]93 // Powered by CodeProcessor
Topcoder srm 632 div2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。