【A】
【C】
【D】
【E】
【F】
【G】
【H】
【I】
【J】
给出一些代码,供参考: 【J】
#include<cstdio>
#include<algorithm>
using namespace std;
int a[1000+10];
int main()
{
int n;
while(~scanf("%d",&n)){
for(int j=1;j<=n;j++){
scanf("%d",&a[j]);
}
sort(a+1,a+1+n);
int j;
int sum=0;
for(j=n;j>3;j-=2){
sum+=min(a[j]+a[1]+a[2]+a[2],a[j]+a[j-1]+a[1]+a[1]);
}
if(n==1){
printf("%d\n",a[1]);
}else if(j==2){
printf("%d\n",sum+a[2]);
}else if(j==3){
printf("%d\n",sum+a[1]+a[2]+a[3]);
}
}
return 0;
}
【I】
#include<cstdio>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
vector<ll> vecx,vecy;
ll a[30];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
a[0]=1;
for(ll i=1;i<=20;i++){
a[i]=i*a[i-1];
}
int T;
scanf("%d",&T);
int Case=1;
ll x,y;
while(T--){
scanf("%lld%lld",&x,&y);
ll n=x,m=y;
int flagx=0;
int flagy=0;
for(ll i=20;i>=1;i--){
if(x-a[i]>=0){
vecx.push_back(i);
x-=a[i];
if(x==0) flagx=1;
}
if(y-a[i]>=0){
vecy.push_back(i);
y-=a[i];
if(y==0) flagy=1;
}
}
printf("Case %d:",Case++);
if(flagx+flagy==2){
printf("SEYES\n");
if(vecx.size()==vecy.size()){
printf("%lld=%lld!",n,vecx[vecx.size()-1]);
for(ll i=vecx.size()-2;i>=0;i--)
printf("+%lld!",vecx[i]);
printf("\n");
printf("%lld=%lld!",m,vecy[vecy.size()-1]);
for(ll i=vecy.size()-2;i>=0;i--)
printf("+%lld!",vecy[i]);
printf("\n");
}else{
printf("dWvWb\n");
}
}else if(flagx+flagy==1){
printf("YNEOS\n");
printf("dWvWb\n");
}else{
printf("ONO\n");
printf("dWvWb\n");
}
vecx.clear();
vecy.clear();
}
return 0;
}
【H】
#include<cstdio>
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int main(){
int T,n,a,b;
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
while(~scanf("%d %d %d",&n,&a,&b))
{
int v=gcd(a,b);
if((n/v)%2)
puts("zzx");
else
puts("fk");
}
return 0;
}
【D】
#include <bits/stdc++.h>
using namespace std;
const int MAXN = (int)5e2+10;
const int mod = (int)1e9+7;
int dp[110][110];
int arr[110];
int main() {
freopen("in.txt", "r", stdin);
int n, k, T;
cin >> T;
while(T--) {
cin >> n >> k;
memset(dp, 0, sizeof dp);
for(int i = 1; i <= n; ++i) {
cin >> arr[i];
dp[i][1] = 1;
}
for(int i = 1; i <= n; ++i) {
for(int j = 2; j <= i; ++j) {
for(int z = 1; z < i; ++z) {
if(arr[z] < arr[i])
dp[i][j] = (dp[i][j]+dp[z][j-1]) % mod;
}
}
}
int ans = 0;
for(int i = 1; i <= n; ++i) {
ans = (ans + dp[i][k]) % mod;
}
cout << ans << endl;
}
return 0;
}
【C】
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 10;
double a[MAXN], b[MAXN];
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
int T, n;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
for(int i = 1; i <= n; ++i) scanf("%lf", &a[i]);
int p = 0;
for(int i = 3; i <= n - 1; ++i) {
double ans = 0.0;
for(int j = i + 1; j <= n; ++j) {
ans = max(ans, a[i] / a[j]);
}
b[i] = ans;
}
for(int i = n - 2; i >= 3; --i) {
b[i] = max(b[i], b[i + 1]);
}
double y = -1e20;
for(int i = 1; i <= n - 3; ++i) {
for(int j = i + 1; j <= n - 2; ++j) {
y = max(y, (a[j] * b[j + 1] - a[i]) / (a[i] + a[j]));
}
}
printf("%.3lf\n", y);
}
return 0;
}