您的位置:首页 > 其它

tc srm 636 div2 500

2014-10-14 20:53 330 查看
100的数据直接暴力就行,想多了。。。

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;
}*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: