「ZJOI2022模拟赛二 A」在樱花树下 题解
题目大意
给定两个正整数 ,你需要选出 中 个不同的正整数 。
在二维平面上有一个圆,求至少需要在圆上钦定多少个点,使得对于你选出的任意一个 ,都存在 个钦定的点能构成一个正 边形。
题目解析
首先我们发现,假设这个圆周长为 ,如果所有的点都在 处重合,那么对于任意的整数 ,圆上都存在点 。
通过反证法不难得出如果存在一个数字 被选中,那么所有的 的因数都被选中才是最优的。不难得出这是增加 个点,由于一个数的约数的欧拉函数肯定比它小,所以直接按照欧拉函数从小到大排序然后求和即可。
考虑到 , 不难发现 肯定会被选到,并且当 的时候 也会被选到。换句话说,当 的时候需要再加 ,否则再加 。
欧拉函数可以通过一次欧拉筛来求。复杂度 ,瓶颈在于排序。
#include<cstdio> #define db double #define gc getchar #define pc putchar #define U unsigned #define ll long long #define ld long double #define ull unsigned long long #define Tp template<typename _T> #define Me(a,b) memset(a,b,sizeof(a)) Tp _T mabs(_T a){ return a>0?a:-a; } Tp _T mmax(_T a,_T b){ return a>b?a:b; } Tp _T mmin(_T a,_T b){ return a<b?a:b; } Tp void mswap(_T &a,_T &b){ _T tmp=a; a=b; b=tmp; return; } Tp void print(_T x){ if(x<0) pc('-'),x=-x; if(x>9) print(x/10); pc((x%10)+48); return; } #define EPS (1e-7) #define INF (0x7fffffff) #define LL_INF (0x7fffffffffffffff) #define maxn 539 #define maxm #define MOD #define Type int #ifndef ONLINE_JUDGE //#define debug #endif using namespace std; Type read(){ char c=gc(); Type s=0; int flag=0; while((c<'0'||c>'9')&&c!='-') c=gc(); if(c=='-') c=gc(),flag=1; while('0'<=c&&c<='9'){ s=(s<<1)+(s<<3)+(c^48); c=gc(); } if(flag) return -s; return s; } int n,m,h[maxn][maxn]; int f[maxn][maxn],flag[maxn]; struct JTZ{ int l,r; }a[maxn]; int fx[4]={0,0,1,-1}; int fy[4]={-1,1,0,0}; void dfs(int x,int y){ int i,tx,ty; for(i=1;i<=4;i++){ tx=fx[i]+x; ty=fy[i]+y; if(tx<1||tx>n||ty<1||ty>m||f[tx][ty]) continue; f[tx][ty]=1; dfs(tx,ty); } return; } int main(){ //freopen(".in","r",stdin); //freopen(".out","w",stdout); n=read(); m=read(); int i,j,k; for(i=1;i<=n;i++) for(j=1;j<=m;j++) h[i][j]=read(); for(i=1;i<=n;i++){ for(j=1;j<=n;j++) for(k=1;k<=m;k++) f[j][k]=0; f[1][i]=1; dfs(1,i); for(i=1;i<=m;i++){ if(f[n][i]) flag[i]=1; if(!a[i].l&&f[n][i]) a[i].l=i; if(f[n][i]) a[i].r=i; } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具