计蒜之道2018

今年第一年参加计蒜之道,作为一名菜鸡,我连签到题都没刚掉,真的是太弱了。

第一题


题目十分简单,我看到的第一眼就知道是贪心,于是信心满满地写了一波,交上去一遍过,美滋滋,看了一下排名,还不错75名。

 讲讲这题我的做法吧,首先它是一个增函数(其实说了等于白说),我们可以采取这样一种做法,把两个二元组交换前和交换后进行比较,如果交换后大就交换,这里我是用快排的,注意,函数满足子问题最优性质,所以可以贪心。好了下面附上我的代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 1000005;
int n,m,t,ans;
struct A{
	int a,b;
}a[N];
bool cmp(A a,A b){
	int fa_1=a.a*m+a.b;
	int ans1=fa_1*b.a+b.b;
	int fa_2=b.a*m+b.b;
	int ans2=fa_2*a.a+a.b;
	return ans1>ans2;
}
int main()
{
 	scanf("%d",&t);
 	while(t--){
 		scanf("%d%d",&n,&m);
 		for(int i=1;i<=n;i++) scanf("%d",&a[i].a);
 		for(int i=1;i<=n;i++) scanf("%d",&a[i].b);
 		sort(a+1,a+1+n,cmp);
 		ans=m;
 		for(int i=1;i<=n;i++){
 			ans=(a[i].a*ans+a[i].b)%10;
		 }
		 printf("%d\n",ans);
	 }
   return 0;
}
是不是很短……嗯。

赶快继续刚下一题,看大家都在做最后一题,我也开始做了。

然而到比赛结束还没做出来,我的心情……(-_-)算了,不说了。

然而考后看了题解,发现题解和我想的方法一模一样,只是实现的问题,太可惜了……

当时想用一种新的方法做出来,但没考虑到,这是比赛,要稳为主,还是经验不够啊……

这一次比赛还是比较遗憾的,没有进入400名,我可爱的T-shirt没了。

唉,加油吧,不能再颓废了,数学要跟上不然信息学也会落下的。

扫描二维码关注公众号,回复: 1633219 查看本文章

我学的知识并不少,但掌握得不够牢,不能再这样了,加油,I never die!

猜你喜欢

转载自blog.csdn.net/qq_38944163/article/details/80719877
今日推荐