牛客2023年情人节比赛 (c/c++题解)
比赛链接:https://ac.nowcoder.com/acm/contest/51663
咳咳~~我突然发现牛客比赛里面,可能打的人最少的就是情人节专场了~~
因为都去陪女朋友啦~~~,只有我们单身狗才会来做吧,呜呜呜呜!
不多说,上题:
A 回眸
链接:https://ac.nowcoder.com/acm/contest/51663/A
题目描述:
已知走廊的长度是a。小红和小紫分别从走廊的两端相向而行(小红从左到右,小紫从右到左),小红初始速度为v1,小紫的初始速度为v2。当小红和小紫相遇的时刻,小红会让自己的速度下降至v1’。求小红从左端走到右端一共需要花的时间。
输入描述:
四个正整数a,v1,v2,v1’,用空格隔开。
1≤a,v1,v2,v1’,≤100
v1’,<v1
输出描述:
一个浮点数,用来表示小红总共需要花费的时间。如果你的答案和标准答案的相对误差不超过10^-6,则认为你的答案正确。
示例1
输入
复制
4 2 2 1
输出
复制
3.00
说明:
小红和小紫花费1秒时间在走廊中点相遇,之后小红的速度降为1,花费2秒走到终点。
题目思路:
①首先输入各种未知数a,v1,v2,v1’。
②然后的话其实就是做物理数学题了,解方程啥的
③就是先求出相遇时间t1=a/(v1+v2);
④找到剩余路程s1=a-v1*t1;
⑤然后就是求出剩余时间t2=s1/va,最后就是求总的时间t1+t2了;
#include<bits/stdc++.h>
using namespace std;
int main()
{long long a,v1,v2,va;cin>>a>>v1>>v2>>va;double t;double t1,t2;double s1,s2;t1=a*1.0/(v1+v2);s1=a*1.0-v1*1.0*t1;t2=s1/(va*1.0);cout<<t1+t2;return 0;
}
B 暧昧
链接:https://ac.nowcoder.com/acm/contest/51663/B
题目描述 :
定义一个01串的权值为:任选一个'0'和一个'1',选择不同下标的方案数。例如,"0100"的权值为3:{1,2}、{3,2}和{4,2}共三种方案。
小红想知道,长度为n的所有01串的权值之和为多少?答案请对10^9+7取模。
提示:长度为n的01串共有2^n个。
输入描述:
一个正整数n 1≤n≤10^9
输出描述:
所有长度为n的01串的权值之和,答案对10^9+77取模。
示例1
输入
复制
2
输出
复制
2
说明:
"00"和"11"的权值为0,"10"和"01"的权值为1,所以总权值为2。
题目思路:
这个类似于排列组合吧
#include<bits/stdc++.h>
using namespace std;
int main()
{long long n,s,a,t=2,mod=1e9+7;cin>>n;s=n*(n-1)/2%mod;a=n-1;while(a){if(a%2)s=s*t%mod;t=t*t%mod;a=a/2;}cout<<s;return 0;
}
C 悸动的距离
链接:https://ac.nowcoder.com/acm/contest/51663/C
题目描述:
平面直角坐标系中,小红站在A点,坐标是(xA,yA);小紫站在B点,坐标是(xB,yB)。小红想知道,若她和小紫之间连一条线段,线段和坐标轴共有多少个交点?
输入描述:
四个整数xA,yA,xB,yB,用空格隔开。
−100≤xA,yA,xB,yB≤100
保证线段AB不在坐标轴上。保证A点和B点不重合。
输出描述:
线段AB和坐标轴的交点数量
示例1
输入
复制
1 1 -1 -1
输出
复制
1
说明
线段AB和两个坐标轴的交点重合了,因此只有一个交点。
示例2
输入
复制
3 0 0 3
输出
复制
2
说明
端点在坐标轴上也视为有交点
示例3
输入
复制
2 -1 2 3
输出
复制
1
示例4
输入
复制
-9 2 -2 9
输出
复制
0
题目思路:
①首先输入xa,ya,xb,yb,并定义一个cnt初值为0来计数(与坐标轴相交的个数)
②其实要判断是否与坐标轴相交很简单,就是一个在坐标轴上一个在坐标轴下就好啦
③因此就有xa*xb<=0或者ya*yb<=0,就让计数cnt加1
④但是这个地方要非常注意的就是,这个可能会有重复,即是通过坐标原点,因此这个地点我们需要判断一下。
⑤于是有,当xa*yb==xb*ya时,cnt减去一个1,最后就是输出cnt就结束啦
#include<bits/stdc++.h>
using namespace std;
int main()
{int xa,ya,xb,yb;cin>>xa>>ya>>xb>>yb;int cnt=0;if(xa*xb<=0){cnt++;}if(ya*yb<=0){cnt++;}if(cnt==2){if(xa*yb==xb*ya){cnt--;}}cout<<cnt;return 0;
}
E 暖色记忆
链接:https://ac.nowcoder.com/acm/contest/51663/E
题目描述:
小红拿到了一个长度为n的数组(保证n为偶数),她将进行如下操作:
1. 选择一个元素,将其染红。
2. 选择一个未被染红的元素,将其删除。
3. 使得所有被染红的元素除以2,向下取整。
小红将进行n/2次操作,操作后数组将剩下n/2个染红的元素。小红希望这n/2个数的和尽可能大,你能帮帮她吗?
输入描述:
第一行输入一个正整数n,代表数组的大小。
第二行输入n个正整数aii,代表数组的元素。
1≤n≤10^5
1≤ai≤10^9
输出描述:
小红操作结束后,最后元素之和的最大值。
示例1
输入
复制4 1 2 3 4
1 2 3 4
输出
复制
2
说明
先选择第二个数染红,删除第一个数,然后将染红的数除以2,数组变成 [1,3,4] 然后选择将4染红,删除3,然后将染红的数除以2,数组变成 [0,2]
题目思路:
这个题目就是用排列,将从大到小把数排列出来,然后再用二进制右移运算符。将一个数的各二进制位全部右移1位,正数左补0,负数左补1,右边丢弃。然后判断是否小于n/2,满足就可以加到sum里面,然后输出sum。
#include<bits/stdc++.h>
using namespace std;
int main()
{long long n;long long a[10001000];cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1,greater<int>());long long sum = 0;for(int i = 1;i <= n;i++){for(int j = 1;j <= i;j++){a[i]=a[i]>>1;if(a[i]==0) break;}if(i<=n/2) sum += a[i];}cout << sum << endl;
}
这就是单身狗的比赛了,总的来说大部分题目是简单滴。但是有几个题目还是难度的,这次写了A,B,C,E的题解,剩下的有时间再补题吧,我是大菜鸟,勿喷!
干就完了呗!大学牲们冲鸭,2023年第一个比赛题解!!!
嘿嘿,run润。
牛客2023年情人节比赛 (c/c++题解)相关推荐
- 牛客2023年情人节比赛
链接 A-回眸 先计算开始到相遇的时间 t1,然后计算这段时间他走过的距离 x1,用 a - x1得到x2:剩下的路程,然后除以减速后的速度即可. 参考代码: #include <bits/st ...
- 牛客题霸 [矩阵元素查找] C++题解/答案
牛客题霸 [矩阵元素查找] C++题解/答案 题目描述 已知int一个有序矩阵mat,同时给定矩阵的大小n和m以及需要查找的元素x,且矩阵的行和列都是从小到大有序的.设计查找算法返回所查找元素的二元数 ...
- 牛客题霸 [栈和排序] C++题解/答案
牛客题霸 [栈和排序] C++题解/答案 题目描述 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序 ...
- 牛客题霸 [字符串的排列] C++题解/答案
牛客题霸 [字符串的排列] C++题解/答案 题解: stl真好用,emmm... 代码: class Solution {public:vector<string> Permutatio ...
- 牛客题霸 [ 验证IP地址] C++题解/答案
牛客题霸 [ 验证IP地址] C++题解/答案 题目描述 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址 IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围 ...
- 牛客题霸 [表达式求值] C++题解/答案
牛客题霸 [表达式求值] C++题解/答案 题目描述 请写一个整数计算器,支持加减乘三种运算和括号. 题解: 没有除法emmm 我们从头开始依次判断每个字符 如果是左括号,我们就找右括号,并截取括号内 ...
- 牛客题霸 [判断回文] C++题解/答案
牛客题霸 [判断回文] C++题解/答案 题目描述 给定一个字符串,请编写一个函数判断该字符串是否回文.如果回文请返回true,否则返回false. 题解: 左右两端同时向中间缩 代码: class ...
- 牛客题霸 [分糖果问题] C++题解/答案
牛客题霸 [分糖果问题] C++题解/答案 题目描述 一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起码分到一个糖果. 任意两个相邻的孩子之间,得分较多的孩子必须拿多 ...
- 牛客题霸 [合并有序链表] C++题解/答案
牛客题霸 [合并有序链表] C++题解/答案 题目描述 将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的. 题解: 首先判断l1和l2是否为空 然后依次比较l1和l2的值 ...
最新文章
- 浅析网络营销外包中如何实现网络营销外包中的图片推广?
- php和java之间rsa加密互通
- Android项目实战(十五):自定义不可滑动的ListView和GridView
- java 方法 示例_Java ArrayDeque offerFirst()方法与示例
- springboot pom 依赖
- MySQL事务ACID实现原理
- (87)FPGA读文件激励(readmemb)
- 大动作!今日头条、西瓜视频并入抖音,字节梁汝波正式接任CEO
- Python自动控制鼠标中键滚动并截屏保存图像
- Sql Full-Text Filter
- 使用Statistic统计代码行数
- 局域网共享问题解决方案----日常经验总结
- 定时刷新页面 html,js实现定时刷新页面的代码
- html粘贴excel表格,如何将网页中的表格快速复制到EXCEL中|
- 粒子群算法(PSO)基本原理
- python 针对二分类问题画roc曲线
- Redis高级项目实战!mysql和java的管理系统源码
- 测试部门KPI考核指标(绩效考核)
- Tkinter Cursors
- 《位置大数据隐私管理》—— 1.3 LBS中的个人隐私与挑战