关注
(1) #include <bits/stdc++.h>
using namespace std;
inline int cal_step(int a, int b){
return int(a/10 == b/10 ? 0 : 1) + int(a%10 == b%10 ? 0 : 1);
}
int modify(int num, int range){
int res = 0, step = cal_step(num, 0);
for(int cand = 1; cand < range; cand++){
int step_tmp = cal_step(num, cand);
if(step_tmp < step){
res = cand;
step = step_tmp;
} else if(step_tmp == step && cand < res)
res = cand;
}
return res;
}
int main(){
int T, h, m, s;
scanf("%d", &T);
while(T--){
scanf("%d:%d:%d", &h, &m, &s);
printf("%02d:%02d:%02d\n", modify(h, 24), modify(m, 60), modify(s, 60));
}
return 0;
}
(2) #include<bits/stdc++.h>
using namespace std;
const int maxn = 110;
int T, m, n;
char maze[maxn][maxn];
char goal[maxn];
int goallen;
int nxt[maxn];
int search(int sx, int sy, int dx, int dy){
int x = sx, y = sy;
int curmat = 0;
int res = 0;
while(x < m && y < n){
while(maze[x][y] != goal[curmat] && curmat)
curmat = nxt[curmat];
if(maze[x][y] == goal[curmat]){
curmat = curmat + 1;
if(curmat == goallen){
res++;
curmat = nxt[curmat];
}
}
x += dx;
y += dy;
}
return res;
}
void build_next(){
nxt[0] = nxt[1] = 0;
for(int i = 2; i <= goallen; i++){
int j = i - 1;
while(j){
if( goal[i-1] == goal[nxt[j]] ){
nxt[i] = nxt[j] + 1;
break;
} else
j = nxt[j];
}
if(goal[i-1] != goal[nxt[j]])
nxt[i] = 0;
}
}
int main(){
scanf("%d", &T);
while(T--){
scanf("%d%d", &m, &n);
for(int i = 0; i < m; i++)
scanf("%s", maze[i]);
scanf("%s", goal);
goallen = strlen(goal);
build_next();
int res = 0;
for(int i = 0; i < m; i++)
res += search(i, 0, 0, 1);
for(int i = 0; i < n; i++)
res += search(0, i, 1, 0);
for(int i = 0; i < m; i++)
res += search(i, 0, 1, 1);
for(int i = 1; i < n; i++)
res += search(0, i, 1, 1);
printf("%d\n", res);
}
return 0;
}
(3) #include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
int T, m, n;
int nums[maxn];
inline bool legal(int step, int start, int choice){
if(choice == 2)
return (nums[n - 1] - nums[start]) >= step;
if(n - start < choice) return false;
if(nums[start + 1] - nums[start] >= step)
return legal(step, start + 1, choice - 1);
int left = start + 1;
int right = n - 1;
while(right - left > 1){
int mid = (left + right) / 2;
if(nums[mid] - nums[start] >= step)
right = mid;
else
left = mid;
}
return legal(step, right, choice - 1);
}
int main(){
scanf("%d", &T);
while(T--){
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++)
scanf("%d", nums + i);
sort(nums, nums + n);
int step_legal = 0;
int step_illegal = nums[n-1] - nums[0] + 1;
while(step_illegal - step_legal > 1){
int mid = (step_illegal + step_legal) / 2;
if(legal(mid, 0, m))
step_legal = mid;
else
step_illegal = mid;
}
printf("%d\n", step_legal);
}
return 0;
}
查看原帖
点赞 2
相关推荐
02-05 22:43
武汉大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用
2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的
3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单
4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价 点赞 评论 收藏
分享
投票
圆规学java:如果不是对钱有很大执念的话,个人不喜欢压力的话,还是建议2,实际上没少多少钱,单休的压力会很大,995对比965,薪资可能都不差什么了。如果确实喜欢不确定的人生,想年轻搏一搏,那就选1
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春节前,你还在投简历吗? #
1606次浏览 31人参与
# 春节提前走,你用什么理由请假? #
867次浏览 21人参与
# 牛客吐槽大会 #
29757次浏览 336人参与
# 距离春招还有一个月,你现在是什么开局? #
963次浏览 22人参与
# 春招什么时候投? #
607次浏览 16人参与
# 聊聊Agent开发 #
2586次浏览 75人参与
# 暑期实习什么时候投? #
1303次浏览 29人参与
# 推荐一个值得做的AI项目 #
1064次浏览 34人参与
# 硬件人的简历怎么写 #
325896次浏览 3079人参与
# 一份好的简历长什么样? #
24389次浏览 442人参与
# 如果重来一次你还会读研吗 #
220430次浏览 1994人参与
# 面试常问题系列 #
272792次浏览 4692人参与
# 职场破防瞬间 #
362187次浏览 2837人参与
# 你的mentor是什么样的人? #
52029次浏览 745人参与
# 机械人避雷的岗位/公司 #
45643次浏览 321人参与
# 简历无回复,你会继续海投还是优化再投? #
139532次浏览 876人参与
# 用一句话形容你的团队氛围 #
38040次浏览 283人参与
# 苦尽甘来时,再讲来时路 #
70872次浏览 954人参与
# 校招入职后的感受 #
479536次浏览 3666人参与
# 实习工作,你找得还顺利吗? #
566791次浏览 6668人参与
查看8道真题和解析