本文主要是介绍蓝桥杯day9刷题日记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
P8649 [蓝桥杯 2017 省 B] k 倍区间
思路:前缀和的题,对k取余相同的数就可以得到k的倍数
#include <iostream>
#include <string>
using namespace std;
long long ans;
int n,k;
long long q[100010];
long long sum[100010];int main()
{cin>>n>>k;for(int i=1;i<=n;i++){cin>>sum[i];sum[i]+=sum[i-1];}for(int i=0;i<=n;i++){ans+=q[sum[i]%k]++;}cout<<ans;return 0;
}
P8654 [蓝桥杯 2017 国 C] 合根植物
思路:并查集的题目,找祖先,并集
#include <iostream>
using namespace std;
int m,n,k;
int a,b;
int f[1000010];
int q[1000010];
int ans;int find(int x)
{if(f[x]==x) return x;return f[x]=find(f[x]);
}void unity(int x,int y)
{f[find(x)]=find(y);
}int main()
{cin>>m>>n>>k;for(int i=1;i<=m*n;i++) f[i]=i;for(int i=1;i<=k;i++){cin>>a>>b;unity(a,b);}for(int i=1;i<=m*n;i++){if(!q[find(i)]) ans++,q[find(i)]++;}cout<<ans<<endl;return 0;
}
这篇关于蓝桥杯day9刷题日记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!