Tinkoff Challenge - Final Round (ABC)
2024-08-28 16:05:14
A题:从两个保安中间那钞票
#include <bits/stdc++.h> using namespace std; int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int n;
scanf("%d",&n);
int pos;
int ans = ;
for(int i=;i<n;i++) {
scanf("%d",&pos);
if(pos>b&&pos<c)
ans++;
}
printf("%d\n",ans);
return ;
}
B题:切胡萝卜,每个面积相等;公式化简到最简试,否则精度会损失
#include <bits/stdc++.h> using namespace std; int main()
{
int n;
double h;
scanf("%d%lf",&n,&h);
/*
double s = h/n;
double S = h;
for(int i=0;i<n-1;i++) {
printf("%.12lf ",h*sqrt(s/S));
s +=s;
}
*/ for(int i=;i<n;i++) {
printf("%.12lf ",sqrt(i*1.0/n)*h);
} return ;
}
C题:两个绝顶聪明的人,第一个人要字典序最小,第二个人字典序最大;
贪心:
第一个人从小到大排,第二个人从大到小排,
当第一个人的最小的都大于第二个人的,那么他只能放到字符后面(否则第二个人就得逞了,他把他的放到后面),但是这样还不够,因为他反正还要继续放,那么他后面的操作将大于这次的,为何不交换一下呢? 这时,他应该从他的最大的那一个放到后面;
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn=+; char A[maxn],B[maxn],ans[maxn]; bool cmp(char a,char b) {
return a>b;
} int main() { scanf("%s%s",A,B);
int len=strlen(A);
int l1=,l2=;
int r1,r2;
int L=,R=len-;
r1=(len+)/-;
r2=len/-;
sort(A,A+len);
sort(B,B+len,cmp);
for(int i=; i<len; i++) {
if(i%==) {
if(A[l1]<B[l2])
ans[L++]=A[l1++];
else ans[R--]=A[r1--];
} else {
if(A[l1]<B[l2])
ans[L++]=B[l2++];
else ans[R--]=B[r2--];
}
} printf("%s\n",ans); return ; }
最新文章
- 【javascript进阶】异常
- 获取sim卡序列号
- QtInternal 之 高效使用QString
- I.MX6 busybox set hosname and login with root
- XX cannot be resolved to a type
- Vmware Tools 下载及安装方法
- SpringMVC(四)-- 文件下载、自定义拦截器、异常处理
- socket error:10053
- Maven基础入门与核心知识
- 10_常见的get和post请求_路由器_ejs服务器渲染模板引擎
- vue 无限递归级联组件实现方案
- CentOS7.5安装nodejs 转
- 『TensorFlow』批处理类
- mongodb与mysql命令详细对比
- Jquery——hover与toggle
- virtualbox+vagrant学习-4-Vagrantfile-6-SSH Settings
- Linux学习笔记-Linux系统简介
- mOByDiC E90C2600 EOBD/OBDII to RS232 gateway
- dubbo示例
- Servlet response原理