题解 | #部分题解(A、E、L、M)#2023牛客寒假算法基础集训营4

清楚姐姐学信息论

https://ac.nowcoder.com/acm/contest/46812/A

部分题解(A、E、L、M)

A 清楚姐姐学信息论

思路:

比较pow(x, y)和pow(y, x)大小就行,非常朴实无华

优化:
比较ylogx和xlogy

alt

数学思想:

3>2>其他数(具体逻辑可以找资料看看)

代码:

#include <bits/stdc++.h>
using namespace std;
 
int main() {
    long long int x, y, rx, ry;
    cin >> x >> y;
    if (x == y) {
        cout << x;
    } else {
        rx = y*log(x);
        ry = x*log(y);
        if (rx > ry) {
            cout << x;
        } else if (rx < ry) {
            cout << y;
        } else {
            cout << min(x, y);
        }
    }
}

E 清楚姐姐打怪升级

思路:
怪物血量>伤害&&攻击间隔*恢复>=伤害 => 杀不死
注意一下第一次攻击的时间记得加上

代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
	long long int n, t, a, rr, rrr, res = 0, flag = 0, h, v;
	cin >> n >> t >> a;
	for (int i = 0; i < n; i++) {
		cin >> h >> v;
		res += t, h -= a;
		if (h <= 0) {
			continue;
		}
		if (t * v >= a) {
			cout << "-1";
			return 0;
		} else {
			res += (h  / (a - t * v))* t;
			if (h % (a - t * v)) {
				res += t;
			}
		}
	}
	cout << res-t+1;
}

L 清楚姐姐的三角形I

思路:
推导出一些公式就好解了

还有一点要注意

计算任意两边之差小于第三边时要套上绝对值

abs(la - lb) < lc 这样就行

看一下就懂了,感觉几乎全推导了出来,选些用就行

va=   lb+lc
vb=la   +lc
vc=la+lb

va+vb+vc=2*(la+lb+lc)
zhouchang=la+lb+lc=(va+vb+vc)/2

la=zhouchang-lb-lc
lb=zhouchang-la-lc
lc=zhouchang-la-lb

或者这样求

va-vb=lb-la
va-vc=lc-la
vb-vc=lc-lb

va-vb-vc=-2*la
va-vb+vc=2*lb
va-vc+vb=2*lc

代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
	long long int t, m, va, vb, vc, la, lb, lc, zhouchang;
	cin >> t;
	while (t--) {
		cin >> va >> vb >> vc;
		zhouchang = (va + vb + vc) / 2;
		if (zhouchang < 3) {
			cout << "No";
		} else {
			la = (vb + vc - va) / 2;
			lb = (va - vb + vc) / 2;
			lc = (va - vc + vb) / 2;
			if (la + lb > lc && la + lc > lb && lb + lc > la && abs(la - lb) < lc && abs(la - lc) < lb && abs(lb - lc) < la&& va == lb + lc&& vc == la + lb) {
				cout << "YES" << endl;
				cout << la << " " << lb << " " << lc;
			}else{
				cout << "No";
			}
		}
		if (t) {
			cout << endl;
		}
	}
}

M 清楚姐姐的三角形II

思路:
随意,咋样都行
我的想法是循环112...
要不然就 a[i]=a[i-1]+a[i-2]

代码:

#include <iostream>
using namespace std;

int main() {
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        if((i+1)%3!=0){
            cout<<"1";
        }else{
            cout<<"2";
        }
        if(i!=n-1){
            cout<<" ";
        }
    }
}
编程题解集 文章被收录于专栏

编程比赛的题目集的题解

全部评论
m直接 a[i]=a[i-1]+a[i-2]会爆掉的
点赞 回复 分享
发布于 2023-01-30 19:57 黑龙江

相关推荐

05-12 13:14
已编辑
中山大学 算法工程师
点赞 评论 收藏
分享
头像
昨天 12:47
已编辑
中国地质大学(武汉) Java
你出生在农村,与其它农村小孩子无异小学时你对成绩没有概念,只感觉上课不听课也是无聊,只知道不写完作业会被老师罚站一到考试,自己成绩总是名列靠前,即使偶尔落后,你也从不在意中学时你觉得课本的东西很简单,随便学学就会了,并没有大量刷题你总是想不通,那些所谓的数学物理中难题,明明是在送分,为什么你的同学总是想不出解题方法高中时这三年你过的不容易,晚睡早起,给了自己很多压力.但是你也发现自己是有些小聪明的,你感觉班里有些同学很刻苦,但成绩比你差远了。那些数学题和物理题的陷阱,同学一遍遍踩坑,但是你总能发现并避开它们.“为了父母的期盼,为了恩师的厚望,为了天赐的智慧,为了青春的理想......”“天行健...
创作助手_刘北:其实,这种已经是神童级别的了,不费吹灰之力就能拿到自己想要的东西,就像机器按照程序走了一遍,就像我小时候看爱情公寓,觉得他们都很惨,几个人只能挤在一个房间里合租,但是好在他们有一群非常好的朋友,随着时间的推移,慢慢长大了,在看爱情公寓的时候,觉得他们都很厉害,博士、留学生、***、电台公子,数学天才,任何一个都是我可望而不可即的,更别说可以在异地认识一群更好的朋友了,所以呢,人还是要自给自足,满足当下,不要攀比,意气风发的且有理想的18岁少年永远都存在,只不过随着时间的推移他被你包裹在了洋葱的最深处。
点赞 评论 收藏
分享
程序员鼓励师阿欢:哈哈哈哈哈笑死我了😂
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-29 08:32
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务