#include<bits/stdc++.h>
using namespace std;
int a[1000],n,sum=0;
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
while(n>1)
{
int maxn=0;
for(int i=0;i<n;i++)
{
if(a[i]>a[maxn]) maxn=i;
}
if(maxn<n-1&&maxn>0)
{
reverse(a,a+maxn+1);
reverse(a,a+n);
sum=sum+2;
}
else if(maxn==0)
{
reverse(a,a+n);
sum=sum+1;
}
n--;
}
cout<<sum<<endl;
}
348: 花生采摘
#include<bits/stdc++.h>
using namespace std;
int n, m, k, i, j, ans, a[1001][1001], b[1001], nx, ny, x[1001], y[1001];
int main() {
cin >> n >> m >> k;
for (i = 1; i <= n; i++) {
for (j = 1; j <= m; j++) {
cin >> a[i][j];
b[(i - 1) * m + j] = a[i][j];
x[(i - 1) * m + j] = i;
y[(i - 1) * m + j] = j;
}
}
if (n == 1 && m == 1) {
cout << b[1]<<endl;
return 0;
}
for (i = 1; i <= n * m; i++) {
for (j = i + 1; j <= n * m; j++) {
if (b[i] < b[j]) {
swap(b[i], b[j]);
swap(x[i], x[j]);
swap(y[i], y[j]);
}
}
}
nx = 0, ny = y[1];
for (i = 1; i <= n * m; i++) {
if (k >= x[i] + abs(nx - x[i]) + abs(ny - y[i]) + 1) {
k -= (abs(nx - x[i]) + abs(ny - y[i]) + 1);
nx = x[i];
ny = y[i];
ans += b[i];
}
else {
cout << ans<<endl;
return 0;
}
}
}
480: Locker doors
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<(int)sqrt(n)<<endl;
}
536: The Josephus Problem
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
int f = 0;
cin >> n;
for(int i = 1; i <= n; i ++)
{
f = (f + 2) % i;
}
cout << f + 1 << endl;
return 0;
}
541: 排列的字典序问题
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int sum=0;
int b[n]={0};
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
b[i]++;
}
}
}
for(int i=0;i<n;i++){
int res=b[i];
for(int j=1;j<=n-1-i;j++){
res*=j;
}
sum+=res;
}
cout<<sum<<endl;
int left,right;
for(int i=n-1;i>=0;i--){
if(a[i-1]<a[i]){
left=i-1;
break;
}
}
for(int i=n-1;i>=0;i--){
if(a[i]>a[left]){
right=i;
break;
}
}
int t=a[left];
a[left]=a[right];
a[right]=t;
for(int i=left+1;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}