# 1011

## 代码

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct aaa{
int val;
int num;
};
bool cmp(aaa a,aaa b)
{
if(a.val!=b.val)
return a.val>b.val;
else
return a.num<b.num;
}

aaa a[10005];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i].val);
a[i].num=i;
}
if(k!=0)
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
if(i!=n)
printf("%d ",a[i].num);
else
printf("%d",a[i].num);
}

printf("\n");
}
return 0;
}


# 1003

## 代码

#include<bits/stdc++.h>
using namespace std;
#define IO ios::sync_with_stdio(false),cin.tie(0);
#define ll long long
#define inf 0x3f3f3f3f
const int N=55;
//set<string>b;
//set<string>::iterator it;
ll vis[N][N];
int main()
{
IO;
int T;
ll n,i,j,len,x;
double sum;
cin>>T;
while(T--)
{
memset(vis,0,sizeof(vis));
cin>>n;
if(n<25)
{
cout<<"1 "<<n+1<<endl;
for(i=1;i<=n+1;i++)
{
if(i%2) cout<<"X";
else cout<<".";
}
cout<<endl;
continue;
}
sum=n/8;
len=sum/12;
x=n%8;
cout<<"25 25\n";
for(i=1;i<=len;i++)
{
for(j=1;j<=12;j++)
{
vis[i*2][j*2]=1;
}
}
if(len*12<sum)
{
int cnt=sum-len*12;
for(i=1;i<=cnt;i++)
{
vis[len*2+2][2*i]=1;
}
}
if(x==1) vis[1][1]=1;
else if(x==2) vis[1][1]=vis[1][2]=1;
else if(x==3) vis[25][1]=1;
else if(x==4) vis[1][1]=vis[25][1]=1;
else if(x==5) vis[25][2]=1;
else if(x==6) vis[25][25]=vis[25][1]=1;
else if(x==7) vis[1][1]=vis[25][25]=vis[25][1]=1;
for(i=1;i<=25;i++)
{
for(j=1;j<=25;j++)
{
if(vis[i][j]) cout<<".";
else cout<<"X";
}
cout<<endl;
}
}
return 0;
}



# 1004

## 思路

dp[i][j]表示用到1-i的数字。且有j个数字比下标大的方法数。那么dp[i][j]=(j+1)*dp[i-1][j]+(i-j)*dp[i-1][j-1]。

## 代码

#include <bits/stdc++.h>
#define ll long long
#define PII pair<int,int>
#define ls x<<1
#define rs x<<1|1
#define fi first
#define se second
#define pb push_back
#define inf 0x3f3f3f3f
using namespace std;
const int N=5e6+10;
#define MOD 1000000007
__int64 p[1001][1001];
int main()
{
int i,j,n,k;
for(i = 1;i <= 1000;i ++)
{
p[i][0] = 1;
p[i][i-1] = 1;
}
for(i = 3;i <= 1000;i ++)
{
for(j = 1;j <= (i+1)/2-1;j ++)
{
p[i][i-1-j] = p[i][j] = (((i-j)*p[i-1][j-1])%MOD+((j+1)*p[i-1][j])%MOD)%MOD;
}
}
while(scanf("%d%d",&n,&k)!=EOF)
{
printf("%I64d\n",p[n][k]);
}
return 0;
}



# 一级目录

## 代码

• 点赞
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

For the brave

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文

07-24 97
08-23 483
08-23 129
09-01 795