2024.11.25 NOIP2024模拟赛

挂了若干分。

赛时

T1

赛时开了 T1,最开始都没有往正解去想,当时想着 Δy 是可以枚举的范围,于是我就先枚举了公差,之后再把处于同一个系中的数绑一块,然后我加了个所谓的 n2 优化,但其实根本没用,应为肯定会覆盖 [0,(m1)/(n1)],可以省掉一个 n2。然后(没删反向优化),我把 nm 的部分优化成了 m,然后一看时间过了一个小时,然后就润了。

其实当时我没判断上界,所以暴力分一分没拿,挂了 50pts

T2

当时慌了,先写了 T3,写了个逆天的代码又耗了我 2hT4 的线段树又写了我 1h,见到 T2 时只剩下了 5min,连最低档的暴力多打不出来,急了,写了给显然没分的全排列做法,只能说自己的码力还需提高,不像Hthntd,五分钟一颗线段树。

T3

首先一眼 dp,这也是我先写它的原因,首先感觉显然有一个性质是我要尽可能得多跳,这个是 dp,但转移为 O(n2),然后我又写了个反向优化,自认为较对的转移,如下。

	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
//			if(!flag[i][j])continue;
//			if(dp[pre[i][j].x1][pre[i][j].y1]>dp[pre[i][j].x2][pre[i][j].y2]){
//				fa[i][j].x=pre[i][j].x1;
//				fa[i][j].y=pre[i][j].y1;
//				dp[i][j]=dp[pre[i][j].x1][pre[i][j].y1]+1;
//				dis[i][j]=dis[pre[i][j].x1][pre[i][j].y1]+(i-pre[i][j].x1)*(i-pre[i][j].x1)+(j-pre[i][j].y1)*(j-pre[i][j].y1);
//			}
//			else{
//				if(dp[pre[i][j].x1][pre[i][j].y1]<dp[pre[i][j].x2][pre[i][j].y2]){
//					fa[i][j].x=pre[i][j].x2;
//					fa[i][j].y=pre[i][j].y2;
//					dp[i][j]=dp[pre[i][j].x2][pre[i][j].y2]+1;	
//					dis[i][j]=dis[pre[i][j].x2][pre[i][j].y2]+(i-pre[i][j].x2)*(i-pre[i][j].x2)+(j-pre[i][j].y2)*(j-pre[i][j].y2);				
//				}
//				else{
					if(dis[pre[i][j].x1][pre[i][j].y1]+(i-pre[i][j].x1)*(i-pre[i][j].x1)+(j-pre[i][j].y1)*(j-pre[i][j].y1)<dis[pre[i][j].x2][pre[i][j].y2]+(i-pre[i][j].x2)*(i-pre[i][j].x2)+(j-pre[i][j].y2)*(j-pre[i][j].y2)){
						fa[i][j].x=pre[i][j].x1;
						fa[i][j].y=pre[i][j].y1;
						dp[i][j]=dp[pre[i][j].x1][pre[i][j].y1]+1;
						dis[i][j]=minn[i-1][j-1]+(i-pre[i][j].x1)*(i-pre[i][j].x1)+(j-pre[i][j].y1)*(j-pre[i][j].y1);
					}
					else{
						fa[i][j].x=pre[i][j].x2;
						fa[i][j].y=pre[i][j].y2;
						dp[i][j]=dp[pre[i][j].x2][pre[i][j].y2]+1;	
						dis[i][j]=dis[pre[i][j].x2][pre[i][j].y2]+(i-pre[i][j].x2)*(i-pre[i][j].x2)+(j-pre[i][j].y2)*(j-pre[i][j].y2);		
					}
//				}
//			}
		}
	}

但它假了,RE了,不太理解。

upd  on:2024.11.25

当时赛时想到了一个可以做 O(n3) 的一个性质,我是期望跳得步数尽量多,然后把它转移到平面直角坐标系上,尽可能从右或上转移,但是不一定最靠右或最靠上才最小,只能说自己时间规划不合理,不要死磕题目。

T4

线段树常数太大了,直接 T 飞了。

总结

  • 不要太过自信,加上一堆反向优化。
  • 要注意常数的问题。
  • 注意好自己的时间规划,不要上头一道题写 2h
  • 不要死磕正解,想出来的假正解可能还没暴力分高。
  • 一定要对拍!!!
posted @   Air2011  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示