A - Round One
直接按题意模拟,没出现过的就是答案.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
bool f[4];
memset(f,false,sizeof f);
cin>>a>>b;f[a]=true,f[b]=true;
for(int i=1;i<=3;i++)
if(!f[i]) cout<<i<<'\n';
return 0;
}B - Strings with the Same Length
直接拿string,模拟加即可.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;cin>>n;
string s,t,ans="";cin>>s>>t;
int len=s.size();
for(int i=0;i<len;i++)
{
ans+=s[i];
ans+=t[i];
}cout<<ans<<'\n';
return 0;
}C - Snack
最小公倍数就是答案.
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a,b;
cin>>a>>b;
cout<<a*b/__gcd(a,b)<<'\n';
return 0;
}D - Brick Break
算出序列1,2,3,4,5...,n的最长重合即可.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int x,ans=1,n,q;
cin>>n;q=n;
while(q--)
{
cin>>x;
if(x==ans) ans++;
}ans==1?puts("-1"):printf("%d\n",n-ans+1);
return 0;
}E - Double Factorial
因为式子中奇数一定没解,不存在会有末尾0的情况,然后一定输出0.
偶数中质因子2的数量一定大于5的数量,所以问你有多少个末尾0,就是问你这个式子有多少个质因子5,然后相乘用加法,我们会发现只有10,20,30,40,而到了50又多了一个5的质因子,所以我们按5的倍数进行模拟+ans即可.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Ans(ll n)
{
if(n==0) return 0;
else return n/5+Ans(n/5);
}
int main()
{
ll n;cin>>n;
if(n&1) puts("0");
else cout<<Ans(n/2)<<'\n';
return 0;
} F - Playing Tag on Tree
树上路径是唯一的,很显然的一个结论就是第一个人肯定会被第二个人逼到叶子节点,然后我们奇偶模拟一下,答案一定是第二个人到叶子节点的上一个节点的距离.然后我们存下叶子节点,假如第二个人比第一个人去的慢,说明可以作为答案,更新ans.这里我们需要提前存储所有点到这两个点的距离,做两次bfs即可.
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
vector<int>g[N];
vector<int>cnt;
int deg[N],disv[N],disu[N];
bool vis[N];
void bfs(int u,int dis[])
{
memset(vis,false,sizeof vis);
queue<int>q;q.push(u);
while(q.size())
{
int T=q.front();q.pop();
vis[T]=true;
for(int v:g[T])
if(vis[v]) continue;
else dis[v]=dis[T]+1,q.push(v);
}
}
int main()
{
int n,u,v;
cin>>n>>u>>v;
for(int i=1;i<n;i++)
{
int a,b;cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
deg[a]++,deg[b]++;
}bfs(u,disu);bfs(v,disv);
for(int i=1;i<=n;i++)
if(deg[i]==1) cnt.push_back(i);
int ans=0;
for(int pos:cnt)
if(disu[pos]<disv[pos]) ans=max(ans,disv[pos]-1);
cout<<ans<<'\n';
return 0;
}
京公网安备 11010502036488号