A-不断减损的时间
A-不断减损的时间_2023牛客寒假算法基础集训营3 (nowcoder.com)
小红拿到了一个数组,她每次操作可以选择一个偶数除以2,可以操作任意次(也可以不操作)。求最终数组所有元素之和的最小值。
输入描述:
第一行输入一个正整数\(n\)。
第二行输入\(n\)个整数\(a_i\),代表小红拿到的数组。
\(1\le n\le 10^5\)
\(-10^9 \leq a_i \leq 10^9\)
输出描述
一个整数,代表最终数组所有元素的最小和。
in
4
1 2 -3 4
out
0
根据题意就是将大于0的偶数都除成奇数再加起来
输出求和就行
key code
int n,m;
int f(int x){
if(x&1||x<=0)return x;
while(x%2==0)x/=2;
return x;
}
void solve(){
//try it again.
int n;
cin>>n;
int sum=0;
up(1,n){
int x;
cin>>x;
sum+=f(x);
}
cout<<sum;
}
B-勉强拼凑的记忆
B-勉强拼凑的记忆_2023牛客寒假算法基础集训营3 (nowcoder.com)
小红希望用恰好\(n\)块矩形积木来搭建正方形,其中小红可以自由选择每块积木的大小,但必须是\(1*k\)的长和宽。其中\(1\leq k \leq \lceil \frac{n}{2} \rceil\)。小红想知道,自己最大可以搭建多大的正方形?请你帮小红计算正方形的边长。如果无法用恰好\(n\)块矩形拼成正方形,请输出\(-1\)。
输入描述:
第一行输入一个正整数\(t\),代表询问的次数。
接下来的\(t\)行,每行输入一个正整数\(n\),代表一次查询。
\(1\leq t \leq 200000\)
\(1\leq n \leq 10^{18}\)
输出描述
输出\(t\)行,每行输入一个正整数,代表可以拼成的正方形最大边长。
in
3
2
4
6
out
-1
2
4
cin>>n;
if(n==2)cout<<"-1"<<endl;
else cout<<(n-(n+1)/2)/3+(n+1)/2<<endl;
C-忽远忽近的距离
C-忽远忽近的距离_2023牛客寒假算法基础集训营3 (nowcoder.com)
小红希望你构造一个长度为nnn的排列,满足对于每个aia_iai,有\(2\le |a_i-i|\le 3\)。你能帮帮她吗?
注:数组下标从\(1\)到\(n\)。
排列是指长度为\(n\)的数组,\(1\)到\(n\)每个正整数恰好出现一次。
输入描述:
一个正整数 \(n\)
\(1≤n≤10^{5}\)
输出描述
如果无解,请输出-1。
否则输出任意合法解即可。
in
4
out
3 4 1 2
这个就是简单的构造,我是根据4来拆分的
如果是模4余0,就正常输出
如果是模4余1,就把一个4变成5
如果是模4余2,就把一个4变成6
如果是模4余3,就把一个4变成5,把一个4变成6
key code
void solve(){
//try it again.
cin>>n;
int cnt1=n/4;
int cnt2=n%4;
if(cnt2>cnt1*2){
puts(-1);
}
else{
if(cnt2==0){
up(1,cnt1){
cout<<o*4-1<<" "<<o*4<<" "<<o*4-3<<" "<<o*4-2<<" ";
}
}
else if(cnt2==1){
cout<<"4 5 1 2 3 ";
up(2,cnt1){
cout<<o*4<<" "<<o*4+1<<" "<<o*4-2<<" "<<o*4-1<<" ";
}
}
else if(cnt2==2){
cout<<"4 5 6 1 2 3 ";
up(2,cnt1){
cout<<o*4+1<<" "<<o*4+2<<" "<<o*4-1<<" "<<o*4<<" ";
}
}
else if(cnt2==3){
cout<<"4 5 1 2 3 9 10 11 6 7 8 ";
up(3,cnt1){
cout<<o*4+2<<" "<<o*4+3<<" "<<o*4<<" "<<o*4+1<<" ";
}
}
}
}
D-宿命之间的对决
D-宿命之间的对决_2023牛客寒假算法基础集训营3 (nowcoder.com)
小红和小紫正在玩一个游戏。现在给定一个正整数n,小红和小紫轮流操作,每次取n的一个因子x,使得n减去x。谁先将n减到0谁输。
小红先手操作,她想知道在双方足够聪明的情况下,谁会获得最终的胜利?
输入描述:
一个正整数 \(n\)
\(1≤n≤10^{18}\)
输出描述
如果小红获胜,则输出"kou"。
否则输出"yukari"
in
2
out
kou
显然最后谁是奇数谁就输掉了
奇数的人去掉一个因子必定会变成偶数
偶数的人可以通过减去1变成奇数
由此可知第一个收到奇数的人必败
注意!,别忘了开long long ,有个sb没开ll WA了九发
key code
cin>>n;
if(n&1)cout<<"yukari";
else cout<<"kou";
E-公平守望的灯塔
E-公平守望的灯塔_2023牛客寒假算法基础集训营3 (nowcoder.com)
小红在平面直角坐标系上选择了两个点\(A\)和\(B\)(保证两点不重合),它们的坐标分别为\((x_A,y_A)\)和\((x_B,y_B)\)。小红希望你选择一个整点\(C\),满足三角形\(ABC\)为以\(AB\)为斜边的等腰直角三角形。你能帮帮她吗?
整点的定义:横坐标和纵坐标均为整数。
输入描述:
四个整数\(x_A,y_A,x_B,y_B\),用空格隔开。
$ -10^9\leq x_A,y_A,x_B,y_B \leq 10^9$
输出描述
如果无解,请直接输出"No Answer!"
否则输出两个整数\(x_C,y_C\),代表\(C\)点的坐标。有多解时输出任意即可。
in
1 0 0 1
out
0 0
这个题可以套用一下板子
先求出对应的两个点,再看这两个点满不满足题意
因为我们知道double 的答案应该怎么求
然后再强转成int型
如果强转以后仍然满足条件
那么就是成立的
key code
using T = long long;
struct Point {
T x;
T y;
Point(T x = 0, T y = 0) : x(x), y(y) {}
Point &operator+=(const Point &p) {
x += p.x, y += p.y;
return *this;
}
Point &operator-=(const Point &p) {
x -= p.x, y -= p.y;
return *this;
}
Point &operator*=(const T &v) {
x *= v, y *= v;
return *this;
}
friend Point operator-(const Point &p) {
return Point(-p.x, -p.y);
}
friend Point operator+(Point lhs, const Point &rhs) {
return lhs += rhs;
}
friend Point operator-(Point lhs, const Point &rhs) {
return lhs -= rhs;
}
friend Point operator*(Point lhs, const T &rhs) {
return lhs *= rhs;
}
}p[4];
T dot(const Point &a, const Point &b) {
return a.x * b.x + a.y * b.y;
}
T cross(const Point &a, const Point &b) {
return a.x * b.y - a.y * b.x;
}
void solve(){
//try it again.
int A,B,C,D;
cin>>A>>B>>C>>D;
p[0].x=A;p[0].y=B;
p[2].x=C;p[2].y=D;
p[1].x =((p[0].x+p[2].x)+(p[2].y-p[0].y))/2;
p[1].y =((p[0].y+p[2].y)+(p[0].x-p[2].x))/2;
p[3].x =((p[0].x+p[2].x)-(p[2].y-p[0].y))/2;
p[3].y =((p[0].y+p[2].y)-(p[0].x-p[2].x))/2;
if(dot(p[1]-p[0],p[1]-p[3])==0){
cout<<p[1].x<<" "<<p[1].y<<endl;
}
else if(dot(p[3]-p[0],p[2]-p[3])==0){
cout<<p[3].x<<" "<<p[3].y<<endl;
}
else cout<<"No Answer!";
}
F-迎接终结的寂灭
F-迎接终结的寂灭_2023牛客寒假算法基础集训营3 (nowcoder.com)
宇宙的终极答案是42是怎么回事呢?宇宙的终极答案相信大家都很熟悉,但是宇宙的终极答案是42是怎么回事呢,下面就让小红带大家一起了解吧。
宇宙的终极答案是42,其实就是小红想知道,大家可能会很惊讶宇宙的终极答案怎么会是42呢?但事实就是这样,小红也感到非常惊讶。
这就是关于宇宙的终极答案是42的事情了,大家有什么想法呢,欢迎在评论区告诉小红一起讨论哦!小红拿到了一个计算式,请你帮她计算宇宙的终极答案。
in
5*8+2
out
42
in
(3↑↑2)-sqrt(4!-2^3)*3+(3↑↑2)
out
42
in
the true answer of universe
out
42
题意:输出42即可
key code
printf("42");
标签:输出,const,Point,leq,42,小红,牛客,寒假,2023
From: https://www.cnblogs.com/liangqianxing/p/17063226.html