寒假的第一周训练

作为一个刚上大学的小白,第一次接触ACM,刚开始是比较迷茫的。

相比较而言,目前同时期的队友们已经比较厉害了,而我自己就比较菜一些。

第一次接触算法,对于庞大的算法体系,我对于这一切都是未知的,但是有了这次机会,我能够慢慢接触到了这些东西,还是有很大的收获。

比如第一周的四次比赛,像牛客小白月赛86,或者洛谷的团队内部比赛,我在十道题之中只能勉强的做出三、四道题。但在后面的反思中,才不断地学习算法等等。

像第二场的比赛中的一题——冶炼金属

#include<stdio.h>
#include<string.h>

int z(int a,int b){
    int l=1,r=1000000001,mid;
	while(l<r){
		mid=(l+r)/2;
		if(a/mid<=b){
			r=mid;
		}
		else{
			l=mid+1;
		}
	}
    return r;
}

int min(int a,int b){
     if(a<b) return a;
     else return b; 
}

int max(int a,int b){
	if(a>b) return a;
	else return b;
}

int main() 
{
	int n,a,b,x=1,y=1000000001;
	scanf("%d",&n);
	while(n--){
		scanf("%d %d",&a,&b);
		x=max(x,z(a,b));
		y=min(y,z(a,b-1)-1);
	}
	printf("%d %d",x,y);
	return 0;
}

虽然这道题本身没有什么难度,但是对于我这个小白来说,是学习二分这种常见算法才能做出来的,而且做的很复杂。

背包dp、树形dp、二分、树状数组、位运算、DP求LCS  和逆元这些算法也是比赛之后才有所了解,本人还在慢慢学习,就不一一展示了,就有点难堪了,hhh。

我还是会在比赛中以及比赛后沉淀和学习,慢慢努力,慢慢加油吧!

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值