根据解析写代码1:
#include <bits/stdc++.h>
using namespace std;
long long a[101010];
long long b[101010];
int main(){
bool flag=0;
long long t;
cin>>t;
while(t--){
long long n,k;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<n;j++){
if(a[j]>a[j+1]){
swap(a[j],a[j+1]);
swap(b[j],b[j+1]);
}
}
}
long long ans=0;
bool flag=0;
for(int i=1;i<=n;i++){
ans+=b[i];
if(k*a[i]<ans){
cout<<"NO\n";
flag=1;
break;
}
}
if(flag==0){
cout<<"YES\n";
}
}
return 0;
}
根据解析写代码2:
#include <bits/stdc++.h>
using namespace std;
int a[101010];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int x=0,y=0;
for(int i=1;i<=n;i++){
if(a[i]==1){
x++;
}else{
y++;
}
}
int t=0;
int ans=min(x,y);
if(x>y){
t=(x-ans)/3;
}
cout<<ans+t;
return 0;
}
此题太简单,不做解析,但是给两种方法
无解析写代码3:
第一种:
#include <bits/stdc++.h>
using namespace std;
double a[101010];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
double maxn=a[1];
sort(a+1,a+n+1);
printf("%.3lf",a[n-1]);
return 0;
}
第二种:
#include <bits/stdc++.h>
using namespace std;
double a[101010];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int t=0;
double maxn=a[1];
for(int i=2;i<=n;i++){
if(a[i]>=maxn){
maxn=a[i];
t=i;
}
}
for(int i=1;i<=n;i++){
if(i==t){
a[i]=0;
}
}
maxn=a[1];
for(int i=2;i<=n;i++){
if(a[i]>maxn){
maxn=a[i];
}
}
printf("%.3lf",maxn);
return 0;
}
提示:此答案为正解,但样例2会过不去,结果是100分哦!
那么就是算a[i]和a[i+1]的最大值
根据解析写代码4:
#include <bits/stdc++.h>
using namespace std;
long long a[101010];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
long long cnt=0;
for(int i=1;i<n;i++){
cnt+=max(a[i],a[i+1]);
}
cout<<cnt;
return 0;
}