专栏文章
题解:P9788 [ROIR 2020] 区域规划 (Day2)
P9788题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minkbnxl
- 此快照首次捕获于
- 2025/12/02 03:49 3 个月前
- 此快照最后确认于
- 2025/12/02 03:49 3 个月前
-
主要算法:枚举(剪枝)。
-
分析:
先倒序枚举 和 。
由于 都是正整数,所以 ,, 那么就有:
剪枝①:如果当前 ,直接退出。
再枚举 。
剪枝②:
题目条件 可转化为 ,由于 ,所以 的最大值为 ,所以 的最小值为 。又因为 ,所以 的枚举范围是从 到 。
最后 ,再判断 是否满足条件即可。
参考代码
CPP//Author: mairuisheng
//#pragma GCC optimize(3)
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
inline int read()
{
int x=0,f=1;
char s;
s=getchar();
while(s<48||s>57)
{
if(s=='-')f=-f;
s=getchar();
}
while(s>47&&s<58)
{
x=(x<<3)+(x<<1)+s-48;
s=getchar();
}
return x*f;
}
int n,x;
int ans;
int main()
{
n=read();
x=read();
int i,j,k,l;
for(i=n;i>0;--i)
{
if(i==x)continue;
for(j=n;j>=i;--j)
{
if(j==x)continue;
if(i*j<=n)break;
l=i*j-n;
for(k=max(1,l/(j-1));k<i;++k)
{
if(l%k!=0||l/k>=j)continue;
++ans;
if(i!=j)++ans;
}
}
}
printf("%d",ans);
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...