找规律专题
https://www.luogu.com.cn/problem/P1984
当时一直在推 发现根本就推不出来 发现别人都是直接上OEIS 学到了
#include
using namespace std;
#define rep(i,a,b) for(int i=a;i>=1;
}
return ans%mod;
}
ll F[maxn*2],inv[maxn];
void init(){
rep(i,1,maxn)inv[i]=pow_mod(i,mod-2,mod);
F[0]=1;for(int i=1;i
直觉告诉我们 这道题和奇偶性有关
首先发现 答案只有可能是n×m 或者n×m+1 并且只要n和m有一个为偶数 就一定只是n×m
再找可以跨越的点 首先想到和(1,1)产生联系的点 这个相对好找一些 真的得耐下性子来找 比的就是谁更耐性
最后发现
这些点与(1,1)连接的话 可以使得答案减一 但是要是其他点相连呢 大胆猜测 只要是这些点就行 不然真心没法模拟
大胆猜测!!!!
#include
using namespace std;
int main()
{
int n, m, k;
int t;
cin >> t;
while (t--)
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
int flag=0;
for(int i=0; i
这是一道训练比赛技巧的很好的一道题
如果一个点的值是一个质数 那么只要其他点和该点连接一定是价值最小的 n-1
但是怎么才能确保至少含有一个素数呢?
小数据我们肯定是可以暴力的 这个题典型可以打表 !!!
发现n大于1000的 一定都只会出现n-1
n小于1000的 为了更大的缩小可能出现的差错 可以取5000 直接暴力克鲁斯卡尔
但是有一种情况 !!!L=R时 每条边都是L 答案就是L×(n-1)
证明的话我觉得很牵强 不过还是有道理