2022年4月天梯赛和蓝桥杯的个人总结(废话连篇)

蓝桥杯

大一下学期,第一次参加蓝桥杯,在网上看说这个赛事很水,而且前辈们也都说很简单,然后我就信了,没有太当回事儿,毕竟难的题我一时半会儿也写不出来,只要在考试时间内把能写的题都写出来就好了。平时也就没有好好训练,但是也不能说完全不学,基本上一天也有一两道题的做题量,周末还会有周赛或者网络赛什么的。就这样,时间一晃就到了 4.9 号,考试那天我还是满紧张的,毕竟第一次参加这么大型的赛事。

进入考场,找到位置,拿出装备,调试完毕。我呆呆的坐在那里等着比赛开始,其实当时也没那么紧张了,甚至在想中午该去吃什么。愣了一会儿神,比赛开始了,我解压好题目压缩包。上来直接硬气手撕第一题,啪一下!很快啊!然后我看第二题,当时我的内心活动:啥?顺序是啥意思?012算吗?321算吗?这个题出的有问题啊,没办法我只能直接糊上去 14 了。没关系,小问题,我继续往下看。欸?怎么直接到提交代码题了?但没啥关系,准备动手!第三题是简单的加减法,直接开long long,我连题目数据都不用看,就是自信。来到第四题,这什么玩意儿?修剪灌木?我直接暴力打表找规律,嗨嗨!被我发现了吧!第二题也没问题了。第三题!欸?啥意思?我怎么看不懂啊?没关系别紧张,慢慢看。然后二十分钟过去了,我依旧没看懂题目的意思。再往后就是深渊了,我没有一道题是完全写出来的,都打了暴力,其中有一个李白打酒,我是想到了递推式子,但是写挂了,一气之下糊了个暴力上去,还有叠积木的那个题,dp也写挂了,我直接转移思路,找规律!yyds!引爆炸弹那个题,我直接搜!暴力搜!怎么简单怎么来。最后一个题?我甚至都没有看懂题目。总之除了前面a的那两个题,后面的我全是暴力,当然有一些是优化的暴力,其他的就是纯粹的暴力了。

比赛结束,我默默伸了个懒腰,没关系,寄也要寄的漂亮。收拾好东西,背起书包直接径直走向食堂,在路上遇到了算法组另一个巨佬,他跟我谈论了一下题目,我发现我动态规划确实有很大问题,但没办法已经比完赛了,只能吸取教训了。我感觉这次比赛我太被动了,答题也没有很舒服的感觉,总是被压力和时间推着走。之后就是天梯赛了。

天梯赛

经过蓝桥杯的洗礼,我沉下心来,更多的投入到算法中去。我想连蓝桥杯都提升了难度,那天梯赛难道不得上上难度?我在比赛前几周,打往年的天梯赛,三个小时内能达到将近200分,我自己都不太敢相信,原来我这么强的吗。但是回想起来蓝桥杯的洗礼,我想比赛时的环境会影响我的发挥吧。没办法,只能多练习了。

到了比赛的当天,相比蓝桥杯的时候,我放松了很多。调试好设备,直接罚坐了一个小时。到点了,我直接点进去题目集,跟蓝桥杯一样,啪一下就 A 了第一题,这里插一句天梯赛是可以一直提交的,而且有部分分,很像acm赛制和oi赛制的结合体。L1 还是很顺利的,除了一些题目理解比较花时间,我大概一个小时写完了,然后就到了恶梦,插松针,一道题花费了我一个小时的模拟,当时怎么调都调不过去,一直16分,在这期间我把2-2写了,当时只剩不到一个小时了,我必须做出抉择,是2-3送外卖还是2-4大众情人,然后我做了一个违背族宗的决定,我竟然选了2-4,一道我甚至连题目都没看懂的题,当时我以为我看懂了,结果花了半个小时打完,样例都过不去。只剩十几分钟了,好像没希望175了,与个人国三无缘了,于是我默默的回去调松针了,结果我发现我有一个地方的输出是有问题的,少输出了,我直接怒改一发,对了。

比赛结束,我带着151分滚出了考场,这就是命啊,如果我选择看2-3说不定就有了,当时想多了,以为要求最近公共祖先,甚至还想糊个并查集上去。结果耽误了25分。我们小组也无缘国三。没关系,就当长见识了,能与来自全国各地的优秀选手同台竞技,是我的荣幸。很期待来年能和他们再来一次比赛。

总结

在四月快结束的时候,也就是今天,蓝桥杯成绩下来了,我拿到了省一,也算是个好消息了,最起码我拿到了全国赛的入场券,能够跟全国的高手同台竞技了,接下来的路不好走,因为六月不止有国赛,还有六级和期末。此刻外面阴雨绵绵,我对接下来的比赛充满了期待。


代码和上文无关

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;

const long long INF=1000000000000;
const int maxn=1000100;
int t;
int tot;
int n,m;
int x,y,w;
int head[maxn];
int point[maxn];
long long dis[maxn];
bool vis[maxn];
bool ok;

struct edge{
	int from;
	int to;
	int val;
	int nxt;
}e[maxn];

void add(int x,int y,int w){
	e[tot].to=y;
	e[tot].from=x;
	e[tot].val=w;
	e[tot].nxt=head[x];
	head[x]=tot;
	tot++;
}

int dij(int x){
	priority_queue<pair<int,int> > q;
	for(int i=0;i<n;i++) dis[i]=INF;
	dis[x]=0;
	q.push(make_pair(0,x));
	while(!q.empty()){
		int u=q.top().second;
		q.pop();
		if(vis[u]) continue;
		vis[u]=1;
		for(int i=head[u];i!=-1;i=e[i].nxt){
			int v=e[i].to;
			if(!vis[v]&&dis[v]>dis[u]+e[i].val){
				dis[v]=dis[u]+e[i].val;
				q.push(make_pair(-dis[v],v));
			}
		}
	}
	for(int i=1;i<=n;i++) if(dis[i]==INF) return 0;
	return 1;
}

int main(){
	scanf("%d",&t);
	while(t--){
		memset(head,-1,sizeof(head));
		memset(point,0,sizeof(point));
		memset(vis,0,sizeof(vis));
		memset(dis,INF,sizeof(dis));			
		tot=0;
		ok=0;
		scanf("%d%d",&n,&m);
		for(int i=0;i<n;i++) scanf("%d",&point[i]);
		for(int i=1;i<=m;i++){
			scanf("%d%d%d",&x,&y,&w);
			x--,y--;
			add(x,y,w);
			add(y,x,w);
		}

		if(dij(0)==0) printf("No Answer\n");
		else{
			long long ans=0;
			for(int i=0;i<n;i++) ans+=(point[i]*dis[i]);
			printf("%lld\n",ans);	
		}
	}
}

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值