【LGR-200-Div.4】洛谷入门赛 #27 A - H题解,包含(C++, Go语言)

前言:

        本文为【LGR-200-Div.4】洛谷入门赛 #27 A - H题解

        我只是一个只会各种暴力法的蒟蒻,这场比赛没有参加,是比赛完去写的,但是那个题目昨天晚上才能提交,导致拖久了一点

        最后面贴一个Go语言的,反正也没人看

        觉得有帮助或者写的不错可以点个赞

目录

题A:

题目大意和解题思路:

代码(C++):

题B:

题目大意和解题思路:

代码(C++):

题C:

题目大意和解题思路:

代码(C++):

题D:

题目大意和解题思路:

代码(C++):

题E:

题目大意和解题思路:

代码(C++):

题F:

题目大意和解题思路:

代码(C++):

题G1, G2:

题目大意和解题思路:

代码(C++):

题H:

题目大意和解题思路:​编辑

代码(C++):

A - H Go语言题解:


题A:

B4026 [语言月赛 202409] 灵感 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

如果迅风在下午写下的文章的字数之和严格大于他在上午写下的文章的字数之和

简单的判断,注意仔细读题即可

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int a, b, c, d;
    std::cin >> a >> b >> c >> d;
    if (c + d > a + b) {
        std::cout << "Yes\n";
    } else {
        std::cout << "No\n";
    }
}

题B:

B4027 [语言月赛 202409] 重聚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

  • 小紫在分离时间 ≥t1​ 分钟时开启感应,如果她和小蓝距离不超过 d1​,那么可以感应到小蓝的位置。
  • 小蓝在分离时间 ≥t2​ 分钟时开启感应,如果她和小紫距离不超过 d2​,那么可以感应到小紫的位置。

当双胞胎的一个人能感应到另一个人的位置,就可以行动使得两人重聚。

现在小紫和小蓝已经分离了 t 分钟,当前距离为 d。她们都在原地等候。

请判断至少还需要几分钟,才能让双胞胎中的一个人感应到另一个人的位置?

首先可以判断d1,d2是否都不满足

然后可以定义两个最大值time1, time2,当d1满足,time1就赋值成t1 - t
注意如果t1 - t < 0 的话,那就只需要0分钟

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int t, d, t1, d1, t2, d2;
    std::cin >> t >> d >> t1 >> d1 >> t2 >> d2;
    int res = 0;
    if (d > d1 && d > d2) {
        res = -1;
    } else {
        int time1 = 101, time2 = 101;
        if (d <= d1) {
            time1 = t1 - t;
            if (time1 < 0) {
                time1 = 0;
            }
        }
        if (d <= d2) {
            time2 = t2 - t;
            if (time2 < 0) {
                time2 = 0;
            }
        }
        res = std::min(time1, time2);
    }
    std::cout << res << "\n";
}

题C:

B4028 [语言月赛 202409] 转盘 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

阅读理解,从1开始遍历到n,表示1到n等奖,算出每一个奖的中奖概率i / sum跟m比较即可

注意题目n的范围,要算出总和sum的话,sum需要是long long类型

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    long long n, sum = 0;
    double m;
    std::cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        sum += i;
    }
    int res = -1;
    for (int i = 1; i <= n; i++) {
        double v = double(i) / double(sum) * 100;
        if (v >= m) {
            res = i;
            break;
        }
    }
    std::cout << res << "\n";
}

题D:

B4029 [语言月赛 202409] 种子 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

x天开始每天额外增加y
使用一个while循环,当成长值大于k的时候退出循环即可

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int x, y, w, k;
    std::cin >> x >> y >> w >> k;
    int day = 0, len = 0;
    while (true) {
        day++;
        if (day < x) {
            len += day / w;
        } else {
            len += day / w + y;
        }
        if (len >= k) {
            break;
        }
    }
    std::cout << day << "\n";
}

题E:

B4030 [语言月赛 202409] 距离 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

由于是从下标1开始的,所以可以使用一个长度为n + 1的二维数组来记录每一个情况
然后循环,每次变换之后,都找出当前二维数组的最大值即可

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int n, m;
    std::cin >> n >> m;
    std::vector<std::vector<int>> A(n + 1, std::vector<int> (n + 1, 0));
    while (m--) {
        int op, a, b, c;
        std::cin >> op >> a >> b >> c;

        if (op == 1) {
            A[a][b] += c;
        } else {
            A[a][b] -= c;
        }

        int res = A[0][0];
        for (auto row : A) {
            for (int x : row) {
                res = std::max(x, res);
            }
        }
        std::cout << res << "\n";
    }
}

题F:

B4031 [语言月赛 202409] 始终 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

遍历两次,当前的字符相等计数器加1即可

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    std::string s;
    std::cin >> s;
    int cnt = 0, n = s.size();
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            if (s[i] == s[j]) {
                cnt++;
            }
        }
    }
    std::cout << cnt << "\n";
}

题G1, G2:

B4032 [语言月赛 202409] 数字 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

简单的贪心加数学

这题当然可以暴力模拟写,创建一个长度为n的数组,要保证x尽可能小,数组第一位为1,然后最后一位不断+1
在模拟的过程中我们可以发现:

要使得除以p的余数尽可能小,那么可以尽可能让余数为0,也就是各个位数之和刚好等于p,但是根据给出的p和n的范围,存在即使全是9,余数也不会是0

此时,n * 9 < p
那么可以让此时的余数为1,也就是10^(n -1)次方

由上面的模拟可以得出:

当n * 9 < p的时候,答案就为10 ^ (n - 1)次方

否则,开始暴力模拟,我这里用数学方法优化,首先让p - 1(也就是第一位)
如果p大于等于9,就从最后一位(各位)开始补充9,并且p -= 9
然后从十位数...依次进行操作
当p 不足9的时候,剩余的p加到当前位置即可

 

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int n, p;
    std::cin >> n >> p;
    if (n * 9 < p) {
        //数据量大的话,这里可以用字符串
        std::cout <<  static_cast<long long>(std::pow(10, n - 1)) << "\n";
    } else {
        std::vector<int> A(n);
        A[0] = 1;
        int idx = n - 1;
        p--;
        while (p) {
            if (p >= 9) {
                A[idx] = 9;
                p -= 9;
                idx--;
            } else {
                A[idx] += p;
                p = 0;
            }
        }
        std::string res = "";
        for (auto x : A) {
            res += std::to_string(x);
        }
        std::cout << res << "\n";
    }
}

题H:

B4033 [语言月赛 202409] 考试 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目大意和解题思路:

我觉得这一题没有上一题难度高

先求出一个差值数组,然后对数组进行排序,然后遍历数组

如果当前为0,那么答案加1,x++, y不变
如果当前不为0,那么答案加上当前的的值加1,然后x++, y--

注意,当x 与 y的差值为1的时候,只需让当前平局即可,答案只需要加上当前的值,然后就是 y --
 

代码(C++):

int main() {
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    
    int n;
    std::cin >> n;
    std::vector<int> A(n);
    std::vector<int> B(n);
    for (int i = 0; i < n; i++) {
        std::cin >> A[i];
    }
    for (int i = 0; i < n; i++) {
        std::cin >> B[i];
    }
    std::vector<int> imp;
    int x = 0, y = 0;
    for (int i = 0; i < n; i++) {
        int v = A[i] - B[i];
        if (v > 0) {
            x++;
        } else if (v < 0) {
            y++;
            imp.push_back(-v);
        } else {
            imp.push_back(0);
        }
    }
    if (x > y) {
        std::cout << "0\n";
        return 0;
    }
    int res = 0, idx = 0;
    std::sort(imp.begin(), imp.end());
    while (x <= y) {
        if (imp[idx] == 0) {
            res++; x++; idx++;
        } else {
            if (x == y) {
                res += imp[idx]; idx++; y--;
            } else {
                res += imp[idx] + 1; idx++; y--; x++;
            }
        }
    }
    std::cout << res << "\n";
}

A - H Go语言题解:

package main

import (
	"bufio"
	. "fmt"
	"math"
	"os"
	"sort"
	"strconv"
)

var (
	in  *bufio.Reader
	out *bufio.Writer
)

func main() {
	in = bufio.NewReader(os.Stdin)
	out = bufio.NewWriter(os.Stdout)
	defer out.Flush()
	solve_G1_G2()
}

func solve_A() {
	var a, b, c, d int
	Fscan(in, &a, &b, &c, &d)
	var res string
	if a+b < c+d {
		res = "Yes"
	} else {
		res = "No"
	}
	Fprintln(out, res)
}

func solve_B() {
	var t, d, t1, d1, t2, d2 int
	Fscan(in, &t, &d, &t1, &d1, &t2, &d2)
	res := 0
	if d > d1 && d > d2 {
		res = -1
	} else {
		time1, time2 := 101, 101
		if d1 >= d {
			time1 = t1 - t
			if time1 < 0 {
				time1 = 0
			}
		}
		if d2 >= d {
			time2 = t2 - t
			if time2 < 0 {
				time2 = 0
			}
		}
		res = min(time1, time2)
	}
	Fprintln(out, res)
}

func solve_C() {
	n, m := 0, float64(0)
	Fscan(in, &n, &m)
	m /= 100
	sum := 0
	for i := 1; i <= n; i++ {
		sum += i
	}
	res := -1
	for i := 1; i <= n; i++ {
		p := float64(i) / float64(sum)
		if p >= m {
			res = i
			break
		}
	}
	Fprintln(out, res)
}

func solve_D() {
	var x, y, w, k int
	Fscan(in, &x, &y, &w, &k)
	l, day := 0, 0
	for true {
		day++
		if day < x {
			l += day / w
		} else {
			l += (day / w) + y
		}
		if l >= k {
			break
		}
	}
	Fprintln(out, day)
}

func solve_E() {
	n, m := 0, 0
	Fscan(in, &n, &m)
	A := make([][]int, n+1)
	for i := range A {
		A[i] = make([]int, n+1)
	}
	for ; m > 0; m-- {
		var op, a, b, c int
		Fscan(in, &op, &a, &b, &c)
		if op == 1 {
			A[a][b] += c
		} else {
			A[a][b] -= c
		}
		res := 0
		for _, row := range A {
			for _, x := range row {
				res = max(res, x)
			}
		}
		Fprintln(out, res)
	}
}

func solve_F() {
	s := ""
	Fscan(in, &s)
	n := len(s)
	res := 0
	for i := 0; i < n; i++ {
		c := s[i]
		for j := i; j < n; j++ {
			if c == s[j] {
				res++
			}
		}
	}
	Fprintln(out, res)
}

func solve_G1_G2() {
	n, p := 0, 0
	Fscan(in, &n, &p)
	if n*9 < p {
		//数据量大的话,这里可以用字符串
		Fprintln(out, int64(math.Pow(10, float64(n)-1)))
		return
	} else {
		A := make([]int, n)
		A[0] = 1
		p--
		idx := n - 1
		for p > 0 {
			if p >= 9 {
				A[idx] = 9
				p -= 9
				idx--
			} else {
				A[idx] += p
				p = 0
			}
		}
		res := ""
		for _, x := range A {
			res += strconv.Itoa(x)
		}
		Fprintln(out, res)
	}
}

func solveH() {
	n := 0
	Fscan(in, &n)
	A := make([]int, n)
	B := make([]int, n)
	for i := range A {
		Fscan(in, &A[i])
	}
	for i := range B {
		Fscan(in, &B[i])
	}
	diff := make([]int, n)
	for i := 0; i < n; i++ {
		diff[i] = A[i] - B[i]
	}
	x, y := 0, 0
	imp := make([]int, 0)
	for _, val := range diff {
		if val > 0 {
			x++
		} else if val < 0 {
			y++
			imp = append(imp, -val)
		} else {
			imp = append(imp, 0)
		}
	}
	if x > y {
		Fprintln(out, 0)
		return
	}
	res, idx := 0, 0
	sort.Ints(imp)
	for true {
		if imp[idx] == 0 {
			res++
			x++
			idx++
		} else {
			if x == y {
				res += imp[idx]
				idx++
				y--
			} else {
				res += imp[idx] + 1
				idx++
				x++
				y--
			}
		}
		if x > y {
			break
		}
	}
	Fprintln(out, res)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/879225.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英文ai写作怎么写?5个软件帮助你轻松进行ai写作

英文ai写作怎么写&#xff1f;5个软件帮助你轻松进行ai写作 AI写作工具正在改变内容创作方式&#xff0c;尤其是英文写作。以下是5款优秀的AI写作工具&#xff0c;它们可以帮助你快速、高效地完成各种英文写作任务&#xff0c;无论是博客、文章、社交媒体文案还是电子邮件。 聪…

Internet选项检查所存网页的较新版本的设置

每次访问此页时检查代表着,你无论打开任何网页时,都不用IE缓存,直接刷新浏览每次启动IE时检查,代表着,只要你IE浏览器不关闭,,那么他在访问相当网站,网页时,就会调用IE缓存(你会感觉打开非常快),这时候,他并没有下载网页,,只是调用缓存而已。。但是如果你关闭IE浏览器,再重新打…

AI问答-HTTP:理解 Content-Disposition

本文背景 在下载arraybuffer文件时&#xff0c;想要获取文件名&#xff0c;这时引入本文内容Content-Disposition&#xff0c;我们在Content-Disposition获取到文件名就可以在下载后的文件以该文件名命名了。 一、简介 Content-Disposition是HTTP协议中的一个响应头字段&…

跨平台开发新视角:利用Android WebView实现Web内容的原生体验

在移动应用开发领域&#xff0c;跨平台解决方案一直是一个热门话题。开发者们不断寻求能够同时在iOS和Android平台上提供一致用户体验的方法。而Android的WebView组件&#xff0c;作为一个强大的工具&#xff0c;允许开发者在Android应用中嵌入Web内容&#xff0c;为用户提供接…

第R3/4周:天气预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、前言 这周的任务添加了探索式数据分析&#xff08;EDA&#xff09;&#xff0c;什么是探索式数据分析呢&#xff1f; 探索性数据分析&#xff08;Explor…

linux 双网卡服务器突然断电后网卡单通故障解决

某台linux 双网卡服务器突然断电后网卡单通故障解决 故障现象&#xff1a;断电后重启服务器&#xff0c;主用网卡IP只能同网段访问&#xff0c;其他网段无法访问&#xff0c;备用网卡则正常&#xff1b; 解决方案&#xff1a;route -n查询路由信息&#xff0c;发现主网卡路由…

第二期: 第11节, uboot 命令的使用

问题&#xff1a;如果你只想控制一个led 灯&#xff0c;并且不想去写驱动。 那么可以直接 使用uboot 的命令&#xff0c;去改写内存。 uboot 命令的解析&#xff1a; 读命令&#xff0c; md[.b, .w. .l] address 注意&#xff1a; 这里的 .w 指的是两个字节&#xff0c;…

探索Python的Excel世界:openpyxl的魔法之旅

文章目录 探索Python的Excel世界&#xff1a;openpyxl的魔法之旅背景&#xff1a;为什么选择openpyxl&#xff1f;什么是openpyxl&#xff1f;如何安装openpyxl&#xff1f;简单的库函数使用方法场景应用&#xff1a;openpyxl在实际工作中的应用常见bug及解决方案总结 探索Pyth…

Spring高手之路23——AOP触发机制与代理逻辑的执行

文章目录 1. 从整体视角学习Bean是如何被AOP代理的2. AOP代理的触发机制2.1 postProcessAfterInitialization方法源码分析2.2 wrapIfNecessary方法源码分析2.3 时序图演示触发机制 3. AOP代理逻辑的执行3.1 AOP代理如何使用拦截器3.2 proceed方法源码分析3.3 时序图 1. 从整体视…

特价电影票对接接口平台推荐?微客云影票

特价电影票对接接口平台推荐 一、常见的较好平台 微客云影票与全国 12000 多家影院建立了合作&#xff0c;覆盖范围广&#xff0c;其提供的电影票价格普遍低于市场价&#xff0c;平均每张票能省下不少钱&#xff0c;在万达、CGV 等大型影院优惠更为显著。 二、判断平台好坏的…

【Qt】Qt C++ Widget中嵌入qml

1. 效果 2. 方法 使用QQuickWidget方式 QQuickWidget *view new QQuickWidget;view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));view->show();除了QQuickWidget方式还可以使用QQuickView方式&#xff0c;请自行查阅资料 3. 代码 3.1 工程目录 3.2 …

Weblogic部署

要安装weblogic&#xff0c;首先要有java环境&#xff0c;因此需要先安装jdk。 这里需要注意&#xff0c;weblogic版本不同&#xff0c;对应的jdk版本也不同&#xff0c;我在这里就踩了很多坑&#xff0c;我这里下载的是fmw_12.2.1.4.0_wls_lite_generic.jar对应的是jdk-8u333…

visual prompt tuning和visual instruction tuning

visual prompt tuning&#xff1a;作为一种微调手段&#xff0c;其目的是节省参数量&#xff0c;训练时需要优化的参数量小。 输入&#xff1a;视觉信息image token可学习的prompt token 处理任务&#xff1a;比如常见的分类任务 visual prompt tuning visual instruction tu…

唯徳知识产权管理系统 DownloadFileWordTemplate 文件读取漏洞复现

0x01 产品简介 唯徳知识产权管理系统,由深圳市唯德科创信息有限公司精心打造,旨在为企业及代理机构提供全方位、高效、安全的知识产权管理解决方案。该系统集成了专利、商标、版权等知识产权的全面管理功能,并通过云平台实现远程在线办公,提升工作效率。是一款集知识产权申…

客户说了算!精益产品开发,让中小企业精准触达用户需求!——张驰咨询

随着全球经济环境的波动&#xff0c;特别是疫情后经济复苏进程的反复&#xff0c;很多中小制造企业面临产品滞销、同质化严重和内卷竞争加剧的困境。市场饱和、利润微薄&#xff0c;还在新产品开发上遇到了研发人才不足、资金短缺等问题。许多企业在这场市场博弈中徘徊在生死边…

IP协议及相关特性

IP协议负责地址管理和路由选择。它的组成为&#xff1a; 接下来我们将对其中较重要的部分进行介绍。 4位版本&#xff1a;这里的四位版本只有两个取值 分别为IPv4和IPv6&#xff0c;这两个额分别为不同的IP协议&#xff0c;但是现在主流的还是IPv4但是近年来IPv6在中国的普及率…

关于报表新入职及进阶培训入口教程

关于报表新入职及进阶培训入口教程 一、网站二、登陆三、报名入口四、缴费及注意事项1. 报名2. 注意事项 五、学习1.在首页时&#xff0c;可以点个人中心进入学习。2.进入后&#xff0c;可以进入如下步骤。 六、完 一、网站 教育事业统计在线培训 二、登陆 注&#xff1a;如果…

C++速通LeetCode简单第17题-爬楼梯(全网最简单)

思路要点&#xff1a;将问题转化为求斐波那契数列的第n项&#xff0c;然后迭代。 思路分析&#xff1a;最后一次爬的阶数不是1就是2&#xff0c;假设爬n阶的方法数是f(n)&#xff0c;假设最后一次爬1阶&#xff0c;那么爬前面的 n-1阶的方法数是f(n-1)&#xff1b;假设最后一次…

20240911泰山杯初赛--temp

Wireshark打开temp.pcap流量包&#xff0c;发现有很多ICMP协议包。 一些ICMP数据包较大&#xff0c;且可发现&#xff0c;明显在传输HTTP协议数据内容&#xff1a; 右键&#xff0c;【显示分组字节】&#xff0c;进一步分析这些HTTP数据&#xff1a; GET /test.html HTTP/1.…

C盘清理不能偷懒!用这方法快速清理10G以上垃圾 操作简单又安全

C盘清理不能偷懒&#xff01;用这方法快速清理10G以上垃圾 操作简单又安全。到现在为止&#xff0c;还有很多的人不知道怎么清理C盘&#xff0c;主要是因为Windows操作系统相对复杂&#xff0c;其文件管理和存储结构对于非专业人士来说可能难以理解。许多用户可能不清楚哪些文件…