牛客白月赛15题解
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客白月赛15题解相关的知识,希望对你有一定的参考价值。
https://ac.nowcoder.com/acm/contest/917#question
目录
诡异的因数
#include<bits/stdc++.h>
using namespace std;
void solve()
int n; cin>>n;
int cnt=0;
for(int i=1;i<=n/i;i++)
if(n%i==0)
cnt++;
if(n/i!=i) cnt++;
cout<<cnt<<endl;
int main(void)
int t; cin>>t;
while(t--) solve();
return 0;
表单
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m;
int a[N],cnt;
map<string,int>mp;
char s[100005];
int main(void)
cin>>n>>m;
for(int i=0;i<n;i++)
scanf("%s",s);
if(mp[s]) cnt++;
mp[s]++;
while(m--)
int op; scanf("%d",&op);
if(op==1)
scanf("%s",s);
if(mp[s]) cnt++;
mp[s]++;
else
cout<<cnt<<endl;
cnt=0;
return 0;
分数的运算
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL xx1,yy1,xx2,yy2;
LL gcd(LL a,LL b) return b?gcd(b,a%b):a;
void f1()
LL a=xx1*yy2+xx2*yy1;
LL b=yy1*yy2;
int flag=1;
if(a<0) flag=flag*(-1);
if(b<0) flag=flag*(-1);
a=labs(a),b=labs(b);
LL temp=gcd(a,b);
if(a==0||b==0)
printf("0 0\\n");
else printf("%lld %lld\\n",flag*a/temp,b/temp);
void f2()
LL a=xx1*yy2-xx2*yy1;
LL b=yy1*yy2;
int flag=1;
if(a<0) flag=flag*(-1);
if(b<0) flag=flag*(-1);
a=labs(a),b=labs(b);
LL temp=gcd(a,b);
if(a==0||b==0)
printf("0 0\\n");
else printf("%lld %lld\\n",flag*a/temp,b/temp);
void f3()
LL a=xx1*xx2;
LL b=yy1*yy2;
int flag=1;
if(a<0) flag=flag*(-1);
if(b<0) flag=flag*(-1);
a=labs(a),b=labs(b);
LL temp=gcd(a,b);
if(a==0||b==0)
printf("0 0\\n");
else printf("%lld %lld\\n",flag*a/temp,b/temp);
void f4()
LL a=xx1*yy2;
LL b=yy1*xx2;
int flag=1;
if(a<0) flag=flag*(-1);
if(b<0) flag=flag*(-1);
a=labs(a),b=labs(b);
LL temp=gcd(a,b);
if(a==0||b==0)
printf("0 0\\n");
else printf("%lld %lld\\n",flag*a/temp,b/temp);
int main(void)
cin>>xx1>>yy1>>xx2>>yy2;
f1(),f2(),f3(),f4();
return 0;
数据结构题【分块】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int mod=20180623;
typedef long long int LL;
LL a[N],id[N],n,m,len;
vector<LL>ve[N];
void init()
len=sqrt(n);
for(int i=1;i<=n;i++)
id[i]=(i-1)/len+1;
ve[id[i]].push_back(a[i]);
for(int i=1;i<=id[n];i++) sort(ve[i].begin(),ve[i].end());
LL query(LL l,LL r,LL x)
LL cnt=0;
for(int i=l;i<=min(r,id[l]*len);i++) if(a[i]==x) cnt++;
if(id[l]==id[r]) return cnt;
for(int i=id[l]+1;i<=id[r]-1;i++)
int index1=lower_bound(ve[i].begin(),ve[i].end(),x)-ve[i].begin();
int index2=upper_bound(ve[i].begin(),ve[i].end(),x)-ve[i].begin();
cnt+=index2-index1;
for(int i=(id[r]-1)*len+1;i<=r;i++) if(a[i]==x) cnt++;
return cnt;
int main(void)
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
init();
while(m--)
int l1,r1,l2,r2,x; cin>>l1>>r1>>l2>>r2>>x;
if(l1>r1) swap(l1,r1);
if(l2>r2) swap(l2,r2);
cout<<query(l1,r1,x)<<'\\n';
cout<<query(l2,r2,x)<<'\\n';
cout<<query(l1,r1,x)*query(l2,r2,x)%mod<<'\\n';
return 0;
以上是关于牛客白月赛15题解的主要内容,如果未能解决你的问题,请参考以下文章