首页 > 其他分享 >10.7 模拟赛总结

10.7 模拟赛总结

时间:2024-10-17 22:12:05浏览次数:1  
标签:总结 12 10.7 int 18 times 枚举 六边形 模拟

T1 ZYB建围墙

题意

给你一个数 \(n\),求把这 \(n\) 个格子围起来所需的格子数的最小值。

思路

首先,我们尝试把图画出来枚举前面来找出规律。下面这张图里是 1~10 的距离。

好的,我们可以发现。在这个图中 7 这个图内部是六边形。外面一圈绿色的也是六边形。这个时候我们发现数据中有一部分是这么写的:

\[N = 6 \times \frac{k \times (k + 1)}{2} +1 \]

于是,我们考虑从这里入手。首先我们再次进行枚举可知,当 \(n = 7\) 时需要 \(12\) 个。当 \(n = 19\) 时需要 \(18\) 个。好的规律已经出来了。当 \(k\) 为整数的时候,我们可以得到当前的答案为 \(6 \times (k + 1)\)。

在这个基础上,我们考虑进行扩展。当现在是一个六边形的时候。设现在的边长为 \(edge\) 那么每扩展 6 层就有能多围出来的量就为:\(e - 1,e,e,e,e,e + 1\)。那么我们就直接枚举接近 \(n\) 的一个满足内外都为六边形的状态。暴力一层层加到 \(n\) 就可以了。这里需要枚举的量很小。所以时间复杂度大致就为:\(O(\sqrt{n})\)。

AC code

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
namespace WYL{
	const int INF=1e9;
	const int N=1e3+10;
	int n,opt=0;
	int now=1,y=1,sy,x=6;
	int f[N]={0,6,8,9,10,11,12,12,13,14,14,15,15,16,16,17,17,18,18,18,19};
	bool check(int k){
		for(int i=1;i*i<=INF;i++){
			if(n==6*(i*(i+1)/2)+1){
				opt=i;
				return true;
			}
		}
		return false;
	}
	signed main(){
		cin>>n;
		if(check(n)){
			cout<<6*(opt+1)<<endl;
			return 0;
		}else{
			while(now+x<=n){
				now+=x;
				y++;
				x+=6;
			}
			sy=n-now;
//			cout<<sy<<" "<<y<<endl;
			if(sy==0){
//				cout<<"***"<<endl;
				cout<<x<<endl;
			}else{
//				cout<<x<<endl;
				cout<<x+(sy/y)+1<<endl;
			}
		}
		return 0;
	}	
}
signed main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//	freopen("wall.in","r",stdin);
//	freopen("wall.out","w",stdout);
	WYL::main();
	return 0;	
}

标签:总结,12,10.7,int,18,times,枚举,六边形,模拟
From: https://www.cnblogs.com/olumel1210/p/18473229

相关文章

  • 多校A层冲刺NOIP2024模拟赛08 排列
    多校A层冲刺NOIP2024模拟赛08排列一种连续段dp的解法。题面小Y最近在研究组合数学,他学会了如何枚举排列。小Z最近在研究数论,他学会了求最大公约数。于是小Y和小Z联手出了一个有趣的题目:有多少个长度为\(n\)且任意相邻两个数的最大公约数都不为\(k\)的排列?......
  • [10.17]CSP模拟赛
    本场比赛中小L的std挂了样例,所以他需要唱歌~俗话说暴力要打满,但是暴力把数据范围打多了就一点不好了。赛前发现可以提前看题,但是昏昏欲睡的我决定先去睡觉。赛时睡醒了,开题。看到T1,一眼发现一种病毒要不把它所在的矩形全部删除,要不就不用管,所以很自然地想到预处理出每......
  • 1017模拟赛
    \(T1\)题面,由于是正方形,我们不需要枚举左上和右下两个端点,只需枚举左上端点和正方形边长,而正方形边长如果用二分枚举,常数大,过不了。这里考虑矩形中一个技巧,即在矩形中充分利用已经求过的信息,故可以想到递推,设\(l[i][j]\)表示\((i,j)\)为左端点最大正方形长度,则\(l[i][j]\)最少为\(......
  • 多校A层冲刺NOIP2024模拟赛08
    GGT1传送(teleport)签到题,但是你怎么知道我场上因为dis[j]=bi[i].w调了一个小时。就是这肯定是一张完全图,但是肯定不能把所有的边都连上然后去跑dij,那么就要考虑那些边是没用的。对于从$(1,2)$到$(5,4)$,最优的是直接通过$Y$轴转过去,但是也可以先到$(3,3)......
  • 1016模拟赛
    \(T1\)题面,首先我们先统计能放进自己的桶里的数量,然后我们注意到如果一些数不能放在自己的桶里,它放在其他哪个桶对答案无影响,所以我们看是否有需要放到别的桶里的数比别的所有桶的剩余容量之和,如果有,则\(ans-=\)这个数\(-\)别的桶的剩余容量之和,因为需要把别的桶里一些已经让我们......
  • 2024-2025-1 20241401 《计算机基础与程序设计》 第四周学习总结
    班级链接2024计算机基础与程序设计作业要求作业要求作业目标①门电路②组合电路,逻辑电路③冯诺依曼结构④CPU,内存,IO管理⑤嵌入式系统,并行结构⑥物理安全教材学习内容总结《计算机科学概论》第四章、第五章门:非(NOT)门、与(AND)门、或(OR)门、异或(XOR)......
  • 多校 A 层冲刺 NOIP2024 模拟赛 08
    多校A层冲刺NOIP2024模拟赛08T1传送(teleport)签到题性质题,注意到对于一个点而言有意义的传送的只有分别按\(x,y\)排序后与其相邻的点,证明考虑贪心手模即可。然后就能上最短路了,dj的时间复杂度为\(O((n+m)logn)\)。T2排列(permutation)签到题状压,注意到\(\dfrac......
  • 多校A层冲刺NOIP2024模拟赛08
    挂分了,垫底啦!!!rank8挂成rank27啦!!!rank27,T128,T20,T30,T40T2内存限制256MB,我打了一个257MB的,然后MLE了。T3暴力挂了9pts?T1传送(teleport)是简单题,但我不会对\(X,Y\)分开看,如果我们在最优解中⾛了某⼀步,可以看做是在对应维度上⾛了⼀段。那么这⼀段上的点可以看做是依......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛08
    前言光顾着想T2了,但是不知道哪儿假了,只有\(\dfrac{n}{k}\le5\)的点是对的,然后居然只有二十分,发现数据放错了,找喵喵改了成五十了。然后T1因为重边挂没了。T3没调出来,确切的说是省的时间不多了打不完,就写了个部分分。T4咕了。机房凳子没靠椅,一直坐着腰快折了肿么办。......
  • CSP 模拟 49
    A传送(teleport)暴力连边一定不行,寻找最优的连边。先说下我的连法,手玩一下发现,如果对横坐标排序,点\(u\)只连下一个横坐标中与它纵坐标最近的即可,这样对于下一个横坐标的点,\(u\)的连法都是最优的,纵坐标同理。题解连法也一样,考虑本质就是在一维上走,所以两维排序后都连一下就......