关注
(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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
29481次浏览 336人参与
# 一份好的简历长什么样? #
24287次浏览 442人参与
# 春节前,你还在投简历吗? #
1381次浏览 27人参与
# 春节提前走,你用什么理由请假? #
766次浏览 19人参与
# 春招什么时候投? #
488次浏览 12人参与
# 材料专业就业可以去哪些企业岗位 #
55184次浏览 379人参与
# 一上班就想____,这正常吗? #
17529次浏览 147人参与
# 刚入职就____,这样正常吗? #
127698次浏览 670人参与
# 校招入职后的感受 #
479379次浏览 3664人参与
# 现在还是0offer,延毕还是备考 #
1284030次浏览 7925人参与
# 设计人秋招体验最好的公司 #
81115次浏览 735人参与
# 招聘要求与实际实习内容不符怎么办 #
166620次浏览 922人参与
# 你觉得机械有必要实习吗 #
73648次浏览 487人参与
# 携程求职进展汇总 #
867262次浏览 5664人参与
# 找实习多的是你不知道的事 #
1790948次浏览 20673人参与
# 机械人选offer,最看重什么? #
158684次浏览 798人参与
# 设计人的面试记录 #
187730次浏览 1607人参与
# 我的秋招总结 #
280772次浏览 4334人参与
# 聊聊你的职场新体验 #
319654次浏览 1862人参与
# 为了减少AI幻觉,你注入过哪些设定? #
9306次浏览 230人参与

