2024.09.14 京东
1. 切割序列乘积
有一个序列a1,a2,...,an,牛牛将对这个序列切一刀,使其分为两个不相交的非空子序列,一个序列为a1,a2,...ap,
另一个序列为ap+1,...,an。牛牛切割的代价为两个字序列元素和的乘积,牛牛想知道切割代价最小是多少?
遍历即可
int main(int argc, char *argv[]) {
int n;
cin>>n;
vector<int> nums(n);
int res = INT_MAX;
int sum = 0;
for(int i=0;i<n;i++){
cin>>nums[i];
sum+=nums[i];
}
int cursum = 0;
for(int i=0;i<n-1;i++){
cursum+=nums[i];
res = min(res,cursum*(sum-cursum));
}
cout<<res;
return 0;
}
2. 字符串排序
给定n个字符串,并且给定一个长为26的字符串rank,代表每个字母处的位置,请你根据这个rank对这n个字符串进行排序。
自定义排序
int main(int argc, char *argv[]) {
string rank;
cin>>rank;
unordered_map<char,int> m;
for(int i=0;i<rank.size();i++)
m[rank[i]] = i;
int n;
cin>>n;
vector<string> strs(n);
for(int i=0;i<n;i++)
cin>>strs[i];
sort(strs.begin(),strs.end(),[&](auto a,auto b){
int len = min(a.size(),b.size());
for(int i=0;i<len;i++){
if(a[i]==b[i]) continue;
return m[a[i]]<m[b[i]];
}
return a.size()<b.size();
});
for(auto s:strs)
cout<<s<<endl;
return 0;
}
3. 牛牛国王
给定n个城市的位置,求最早连通时间,这里用最小生成树算法,因为是边稠密,采用kruskal算法,以及使用并查集
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2023-09-15 光谱数据预处理
2023-09-15 高光谱和压缩感知
2022-09-15 LeetCode/灯泡开关