tc srm 636 div2 500
2014-10-14 20:53
330 查看
100的数据直接暴力就行,想多了。。。
ac的代码:
ac的代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <vector> #define LL __int64 const int maxn = 100+10; using namespace std; int a[maxn], sum; class SortishDiv2 { public: int ways(int sortedness, vector <int> seq) { int f[maxn], len, i, j, ans = 0; int cnt = 0, x[maxn]; len = seq.size(); memset(f, 0, sizeof(f)); for(i = 0; i < len; i++) f[seq[i]] = 1; for(i = 1; i <= len; i++) if(f[i]==0) x[cnt++] = i; sort(x, x+cnt); do { int y = 0; for(i = 0; i < len; i++) { if(seq[i]==0) a[i] = x[y++]; else a[i] = seq[i]; } sum = 0; for(i = 0; i < len; i++) for(j = i+1; j < len; j++) if(a[j]>a[i]) sum ++; if(sum == sortedness) ans ++; } while (next_permutation(x,x+cnt)); //数字的全排列 return ans; } }; /*int main() { SortishDiv2 s; int i, j, n, y, tmp; vector<int>v; while(1) { v.clear(); cin>>n; cin>>y; for(i = 0; i < y; i++) { cin>>tmp; v.push_back(tmp); } cout<<s.ways(n, v)<<endl; } return 0; }*/
相关文章推荐
- TC SRM 636 Div2 C ChocolateDividingHard 二分
- 【jzoj3918】【TC Srm 636 Div2 1000pt】【蛋糕】【二分答案】
- TC SRM 671 Div2 500 BearDartsDiv2
- (水题)TC SRM 441 DIV 500 PaperAndPaintEasy
- TC SRM 521 (div. 2) 1000'
- TC-SRM617div1-500
- topcoder SRM 500 div2 level3
- TopCoder SRM 650 Div2 Problem 500 - TaroFillingAStringDiv2 (DP)
- Topcoder SRM 636 Div2 B
- TC Member SRM 478 DIV 1(CarrotJumping-操作观察)
- TC SRM 593 DIV1 250(dfs)
- TopCoder SRM 655 Div2 Problem 500 - FoldingPaper2 (思维)
- TC SRM 562 DIV 2
- TC SRM 663 div2 A ChessFloor 暴力
- TC SRM 664 div2 B BearPlaysDiv2 bfs
- Topcoder SRM 582 DIV2 500
- SRM 556 Div1 500
- TopCoder SRM 644 Div2 Problem 500 - LostCharacter (贪心)
- SRM 586 DIV2 500
- TC SRM 549 DIV2