- chenshixian 的博客
陈室先的国庆模拟赛DAY02
- @ 2024-10-3 15:28:43
题目传送门
神秘金币
思路
这里因为消失时间不同所以不用考虑时间,所以直接求第一大到第大的金币,记得开
代码
#include<bits/stdc++.h>
using namespace std;
long long n,k;
struct P{
long long sj,jz;
}a[100010];
bool cmp(P a,P b){
return a.jz>b.jz;
}
int main(){
freopen("coin.in","r",stdin);
freopen("coin.out","w",stdout);
cin>>n>>k;
for(long long i=1;i<=n;i++)cin>>a[i].sj;
for(long long i=1;i<=n;i++)cin>>a[i].jz;
sort(a+1,a+1+n,cmp);
long long s=0,j=0,z=0;
for(long long i=1;i<=k;i++){
z+=a[i].jz;
}
cout<<z;
return 0;
}
错的点
考虑了时间,以后要多读题
T2学习乘法
思路
直接索索每一位的可能即可
代码
#include<bits/stdc++.h>
using namespace std;
long long ma=-100;
string a,b;
long long n;
void dfs(long long aa,long long bb,long long c){
if(c==n){ma=max(ma,aa*bb);return;}
long long aaa,bbb;
aaa=aa*10+a[c]-'0';
bbb=bb*10+b[c]-'0';
dfs(aaa,bbb,c+1);
aaa=aa*10+b[c]-'0';
bbb=bb*10+a[c]-'0';
dfs(aaa,bbb,c+1);
return;
}
int main(){
freopen("mul.in","r",stdin);
freopen("mul.out","w",stdout);
cin>>a>>b;
n=a.size();
dfs(0,0,0);
cout<<ma;
return 0;
}
错的点
用贪心写还策略想错了,以后做贪心要多想想
T3 饮料难题
思路
能喝几瓶饮料呢? k空瓶=1饮料+1空瓶 k-1空瓶=1饮料 所以能喝瓶饮料,要用高精度,记得开
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<int> add(vector<int>a,int k){
int y=0;
vector<int>s;
for(int i=0;i<a.size();i++){
int sz=y*10+a[i];
s.push_back(sz/k);
y=sz%k;
}
return s;
}
signed main(){
freopen("drink.in","r",stdin);
freopen("drink.out","w",stdout);
vector<int>n;
int k;
string ss;
cin>>ss>>k;
for(int i=0;i<ss.size();i++)n.push_back(ss[i]-'0');
k--;
vector<int>s=add(n,k);
int j=0;
while(s[j]==0&&j<s.size()-1)j++;
for(int i=j;i<s.size();i++)cout<<s[i];
return 0;
}
错的点
不开见祖宗,以后要开