AtCoder Beginner Contest 177总结
回学校第一次打AtCoder,感觉晚上在寝室打不在状态~~
A - Don’t be late
数学题签到
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
ll a[N];
int n;
int main()
{IO;int d,t,s;cin>>d>>t>>s;int x=(d+s-1)/s;if(t>=x) cout<<"Yes"<<endl;else cout<<"No"<<endl;return 0;
}
B - Substring
直接暴力即可
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mkp(a,b) make_pair(a,b)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int main()
{IO;string s,t;cin>>s>>t;int res=1e9;for(int i=0;i+t.size()<=s.size();i++){int cnt=0;for(int j=0;j<t.size();j++) if(s[j+i]!=t[j]) cnt++;res=min(cnt,res);}cout<<res<<endl;return 0;
}
C - Sum of product of pairs
预处理前缀和即可
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=200010,mod=1e9+7;
ll a[N],s[N];
int n;
int main()
{IO;cin>>n;for(int i=1;i<=n;i++) {cin>>a[i];s[i]=s[i-1]+a[i];}ll res=0;for(int i=1;i<=n;i++)res=(res+(s[n]-s[i])%mod*a[i]%mod)%mod;cout<<res<<endl;return 0;
}
D - Friends
并查集维护sz[]
找个最大的即可
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=200010,mod=1e9+7;
int p[N],sz[N];
int n,m;
int find(int x)
{if(x!=p[x]) p[x]=find(p[x]);return p[x];
}
int main()
{IO;cin>>n>>m;for(int i=1;i<=n;i++) p[i]=i,sz[i]=1;while(m--){int a,b;cin>>a>>b;int pa=find(a),pb=find(b);if(pa!=pb){p[pa]=pb;sz[pb]+=sz[pa];}}int res=0;for(int i=1;i<=n;i++) if(i==p[i]) res=max(res,sz[i]);cout<<res<<endl;return 0;
}
E - Coprime
太久没做过数论题目了,筛法啥的都忘完了,回头刷kuangbin复习复习吧
方法一
如果两个数最大公约数不为1,那么对两个数进行分解质因数后一定有相同的质因子。——O(nai)O(n\sqrt{a_i})O(nai) 1040ms
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1000010;
int a[N],cnt[N];
int n;
int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}
void divide(int x)
{for(int i=2;i<=x/i;i++){if(x%i==0) {cnt[i]++;while(x%i==0) x/=i;}}if(x>1) cnt[x]++;
}
int main()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) divide(a[i]);int d=a[1];for(int i=2;i<=n;i++) d=gcd(d,a[i]);bool ok=1;for(int i=1;i<N;i++)if(cnt[i]>1) {ok=0;break;}if(ok) cout<<"pairwise coprime"<<endl;else if(d==1) cout<<"setwise coprime"<<endl;else cout<<"not coprime"<<endl;return 0;
}
方法二
方法一反着做,将原数分解质因数,方法二是正着做,考虑两个数最大公约数是d那么两个数一定是d的倍数,直接暴力筛原数组中一个数的倍数的个数。如果个数大于1就不是pairwise coprime
——O(NlogN)O(NlogN)O(NlogN) 248ms
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1000010;
int a[N],mp[N];
int n;
int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}
int main()
{cin>>n;for(int i=1;i<=n;i++) {cin>>a[i];mp[a[i]]++;}bool ok=1;for(int i=2;i<N;i++){int cnt=0;for(int j=i;j<N;j+=i) cnt+=mp[j];if(cnt>1){ok=0;break;}}int d=a[1];for(int i=2;i<=n;i++) d=gcd(d,a[i]);if(ok) cout<<"pairwise coprime"<<endl;else if(d==1) cout<<"setwise coprime"<<endl;else cout<<"not coprime"<<endl;return 0;
}
F - I hate Shortest Path Problem
线段树 留个坑回来补一下?
要加油哦~
AtCoder Beginner Contest 177总结相关推荐
- AtCoder Beginner Contest 177 D.Friends
AtCoder Beginner Contest 177 D.Friends 题目链接 典型的并查集,不难发现答案就是最大的并查集的元素个数,AC代码如下: #include<bits/stdc ...
- AtCoder Beginner Contest 177 A~D 题解
ABC177 A~D [A - Don't be late](https://atcoder.jp/contests/abc177/tasks/abc177_a) 题目大意 输入格式 输出格式 样例 ...
- AtCoder Beginner Contest 177 题解
希望更好的阅读体验?点这里 一.题解 A.Don't be late 题目大意: 高桥君计划在 TTT 分钟内于离家 DDD 米的地方与青木君碰面,已知高桥君速度为 SSS,问他能否在 TTT 分钟内 ...
- AtCoder Beginner Contest 177(E,F)
E - Coprime First,judging the g c d ( a 1 , a 2 , . . . , a n ) gcd(a_1,a_2,...,a_n) gcd(a1,a2,... ...
- AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...
- AtCoder Beginner Contest 197 题解(A ~ F)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...
- AtCoder Beginner Contest 198 (A ~ F)题解
目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...
- AtCoder Beginner Contest 215 G - Colorful Candies 2
AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...
- AtCoder Beginner Contest 215 F - Dist Max 2
AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi,yi),定义两点(xi,yi),(xj,yj)(x ...
最新文章
- 科学家发现大脑动态评估信息重要性机制
- 复习javascript中call,apply,bind的用法
- 用ARM DS-5进行android linux开发
- IE浏览器怎么清理缓存
- 为什么 ++[[]][+[]]+[+[]] = 10 ?
- SQL注入之Mysql报错注入
- python中把输出结果写到一个文件中_如何将脚本输出写入文件和命令行?
- Confluence 6 为一个空间应用一个主题
- dnsever 邮件记录
- ffmpeg详细安装教程,亲测有效!
- ssm+教务信息管理 毕业设计-附源码161124
- linux结合阿里云企业邮箱配置mailx
- pandas进阶 期中练习
- sql server复习 练习
- 编译器处理虚函数的原理
- AtCoder Beginner Contest 224题解 A-G
- RocketMQ原理剖析
- 2月书讯 | 读新书,过新年。
- 二十三 HDP搭建大数据环境
- 中兴EPON OLT-C300开局配置
热门文章
- winform 统计大量数据重复的元素个数_面试系列:十个海量数据处理方法大总结...
- php 如何生成exe文件怎么打开,如何把PHP转成EXE文件
- 二分法查找是基于有序_201,查找顺序查找
- 模块化妙用!用vue3实现一个鼠标追踪器和异步加载组件
- 《C++ Primer》2.1.2节练习
- MySQL错误1264和1366_Mysql错误1366 - Incorrect integer value解决方法
- background图片不显示_一种解决Retina屏幕1px边框显示问题的方案
- 动态规划 0-1背包问题 二维数组
- 邻值查找—算法进阶指南
- P3804 【模板】后缀自动机 (SAM)