今年第一年参加计蒜之道,作为一名菜鸡,我连签到题都没刚掉,真的是太弱了。
第一题
题目十分简单,我看到的第一眼就知道是贪心,于是信心满满地写了一波,交上去一遍过,美滋滋,看了一下排名,还不错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没了。
唉,加油吧,不能再颓废了,数学要跟上不然信息学也会落下的。
我学的知识并不少,但掌握得不够牢,不能再这样了,加油,I never die!