- 高士渠 的博客
七月day3
- @ 2025-7-17 19:58:12
T1
错因:未熟练运用sort函数; 思路:从大到小加一起,是否超过x||y; 代码:
#include <bits/stdc++.h>
using namespace std;
long long a[200010];
long long b[200010];
int main(){
freopen("eat.in","r",stdin);
freopen("eat.out","w",stdout);
long long n,x,y,suma=0,sumb=0;
cin>>n>>x>>y;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)cin>>b[i];
sort(a+1,a+n+1);
sort(b+1,b+n+1);
for(int i=n;i>=1;i--){
suma=suma+a[i];
sumb=sumb+b[i];
if(suma>x){
cout<<n-i+1;
return 0;
}
if(sumb>y){
cout<<n-i+1;
return 0;
}
}
cout<<n;
return 0;
}
T2
无思路 思路:从小到大试,到第n个停;
#include <bits/stdc++.h>
using namespace std;
long long a[100]={0,1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,11111111111,111111111111};
int main(){
freopen("three.in","r",stdin);
freopen("three.out","w",stdout);
int n;
cin>>n;
for(int i=1;i<=13;i++){
for(int j=1;j<=i;j++){
for(int g=1;g<=j;g++){
n--;
if(n==0)cout<<a[i]+a[j]+a[g];
}
}
}
return 0;
}
T3
思路:统计所有位置; 代码:
#include <bits/stdc++.h>
using namespace std;
long long cnt[10][10]={0};
int main(){
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
int n,sum=0;
cin>>n;
for(int i=1;i<=n;i++){
int x=i;
while(x>=10)x=x/10;
cnt[x][i%10]++;
}
for(int i=1;i<10;i++){
for(int j=1;j<10;j++){
sum=sum+cnt[i][j]*cnt[j][i];
}
}
cout<<sum;
return 0;
}