首页 > 其他分享 >2023牛客寒假集训3

2023牛客寒假集训3

时间:2023-01-20 20:44:06浏览次数:55  
标签:输出 const Point leq 42 小红 牛客 寒假 2023

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

img

	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

相关文章

  • 力扣每日一题2023.1.20---1817. 查找用户活跃分钟数
    给你用户在LeetCode的操作日志,和一个整数k。日志用一个二维整数数组logs表示,其中每个logs[i]=[IDi,timei]表示ID为IDi的用户在timei分钟时执行了某个操作......
  • .NET周报【1月第3期 2023-01-20】
    这应该是2023年农历新年前的最后一篇.NET周报,再次预祝大家新年快乐!国内文章看我是如何用C#编写一个小于8KB的贪吃蛇游戏的https://www.cnblogs.com/InCerry/p/building-......
  • 2023WinterHoliday刷题总结第一弹
    \(2023WinterHoliday\)刷题总结第一弹\(CTF\)\(Web\)1.\(json格式:\)$json['x']=="wllm"\(JSON\)(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式,采......
  • SQL260 牛客每个人最近的登录日期(一)
    题目描述请你统计一下牛客每个用户最近登录是哪一天。有一个登录(login)记录表,请你写出一个sql语句查询每个用户最近一天登录的日子,并且按照user_id升序排序思路每个......
  • [2023 SICTF]兔年大吉
    首先先上pop链构造基础__construct()//当对象创建时触发__destruct()//当对象销毁时触发__wakeup()//当使用unserialize时触发__sleep()//当使用serial......
  • 2023.3 春节假期
    虎年马上再有一天就要过去了,迎来是三年疫情后第一个春节,自己计划要做下面的事:1、回老家,走亲访友。因为疫情很长时间没回去了,趁着春节假期回去看看,虽然有点物是人非,但回到小......
  • WC2023 解题报告
    WC2023解题报告stairs考虑阶梯的右下折线,称竖线为0,横线为1,从上到下形成一个01序列。原题要求的子楼梯边界格数转化成01序列里靠前的0和靠后的1的位置差。我......
  • 算法--2023.1.20
    1.acwing842--排列数字importjava.util.Deque;importjava.util.LinkedList;importjava.util.List;importjava.util.Scanner;publicclassMain{publicst......
  • 2023-1-20 #29 “不会有全世界陪你沉睡的童话”
    昨天vp:ICPC2022Nanjing。K题比较弱智,但是后面摆了,懒得写。本来录屏了,后来感觉打的不太行就删掉了。160EColortheTree很难的啊!没想到大家都会做。可以发现不同......
  • 20230120 常用动词
    Ifyoulookcarefullyyoucanseethatthepaintingrepresentsahumanfigure.如果仔细看,就会看出画上是一个人形。Ginacoveredhereyes,afraidtolook.吉娜......