蒟蒻的第一次参加天梯赛,也能也是最后一次参加天梯赛了,下半年打完icpc就要退役了,准备考研复习了
本人的第一次天梯赛,也是本校的第一次天梯赛,由于大家都缺少经验,痛失银奖,只拿了个铜奖回来(刚开始银牌区第二的,比赛结束变成铜牌第二了,哭唧唧),下次打应该会少踩写坑。
这届次的L1-8是“罪魁祸首”,我们几个队友头铁一直去莽这道题(我也花了不少时间),直到主办人员过来说进阶标准降到600分,我才写L2的,然后L2-4用stack写又出bug了,改了半天改不出来,浪费了
几十分钟,最后受不了了,直接用数组模拟一遍过(QAQ)。然后写完L2-3发现只剩20分钟了,L2-1看了下有点像前段时间广东工业大学校赛的1003,然而我并没看懂依附性是怎么算的(事后花了点时间看,不
难),只拿了个129分(一个5分题少了1分)
因为第一次参赛,几个队友不知道榜单怎么看,不会跟榜(主要是赛前被主办方吓唬住了,不敢乱点,怕被取消成绩),L2没写一道题,最后只差不到20分进银牌区,很可惜,只要随便有个人再写一道L2
就有银了。
最后贴一下补了的L2-1的代码吧。
#include<bits/stdc++.h> const int N=1e4+7; using namespace std;int vc[10005]; bool mp[10005][10005],sushu[10005],state[10005]; set<int> st1; set<int> ::iterator it; void init() {sushu[1]=1;for(int i=2;i<1005;i++){if(sushu[i]==0){for(int j=2;i*j<1005;j++){sushu[i*j]=1;}}}state[1]=1;mp[1][1]=1;for(int i=2;i<=1000;i++){int j=i;st1.clear();while(st1.find(j)==st1.end()){st1.insert(j);int num=0;while(j){int p=j%10;j/=10;p=p*p;num+=p;}j=num;if(j==1)break;}if(j==1){state[i]=1;//i是幸福数vc[i]=st1.size();for(it=st1.begin();it!=st1.end();it++){mp[i][*it]=1;//哪些数依赖i }}} } int main() {init();int i,j,a,b,val;scanf("%d%d",&a,&b);for(i=a;i<=b;i++){if(state[i]==0)//不是幸福数continue;for(j=a;j<=b;j++){if(j==i)continue;if(mp[j][i]==1)break;}if(j==b+1){val=vc[i];if(sushu[i]==0)val*=2;printf("%d %d\n",i,val);}} }