AtCoder Beginner Contest 254(D-E)
Tasks - AtCoder Beginner Contest 254
D - Together Square
题意: 给定一个N,找出所有不超过N的 ( i , j ),使得( i * j )是一个平方数。
题解: 首先要知道一个数学只是,如果i*j是平方数,那么i*j /(f(i)*f(j))也是平方数 (f(j)表示的是j的不超过j的最大平方数因子),然后因为i/f(i)一定可以被质数 p分割两次或更多,所以得到 i/f(i)=j/f(j))
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=2e5+10;
const ll mod=1e9+7;
vector<ll> p,q;
ll n,t,cnt[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n;
for(ll i=1;i*i<=n;i++){
p.push_back(i*i);
}
for(ll i=1;i<=n;i++){
ll f=*(upper_bound(p.begin(),p.end(),i)-1);//找到不超过i的最大的平方数
if(i%f!=0){
ll d=(ll)sqrt(f);
while(i%f!=0){//判断是不是i的因子,不是就减
d--;
f=d*d;
}
}
cnt[i/f]++;
}
ll ans=0;
for(ll i=1;i<=n;i++) ans+=cnt[i]*cnt[i];
cout<<ans;
}
E - Small d and k
题意: 一个无向图,每次询问一个点,与这个点距离不超过k的所有点的权值之和
题解: 暴力即可,注意每次vis的清零,不要用memset全部清零,会tle,可以存储一下所有走过的点,然后最后只将他们清空。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=3e5+5;
const ll mod=998244353;
const ll inf=1e18;
ll n,dp[N],m;
ll cnt,head[N*2],ans,vis[N];
struct ss{
ll next,to;
}e[N*2];
void add(ll x,ll y){
e[++cnt].to=y;
e[cnt].next=head[x];
head[x]=cnt;
}
void bfs(ll beg,ll maxn){
queue<pll> q;
q.push({beg,0});
vis[beg]=1;
vector<ll> sum;
sum.push_back(beg);
while(!q.empty()){
ll l=q.front().first;
ll r=q.front().second;
q.pop();
if(r<=maxn) ans+=l;
else continue;
for(ll i=head[l];i;i=e[i].next){
ll j=e[i].to;
if(!vis[j]) vis[j]=1,sum.push_back(j),q.push({j,r+1});
}
}
for(ll i=0;i<sum.size();i++) vis[sum[i]]=0;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
for(ll i=1;i<=m;i++){
ll x,y;cin>>x>>y;
add(x,y); add(y,x);
}
ll t;cin>>t;
while(t--){
ll x,y;cin>>x>>y;
ans=0;
bfs(x,y);
cout<<ans<<endl;
}
}
AtCoder Beginner Contest 254(D-E)的更多相关文章
- Atcoder Beginner Contest 147C(状态压缩)
最多15个人,用N个二进制的数字表示每个人的状态,然后检验.这串数字相当于已经把这些人的状态定了下来,如果和输入的情况不符则这串数字不正确,直接忽略,因为枚举了所有的情况,所以总有正确的,不必在错误的 ...
- AtCoder Beginner Contest 086 (ABCD)
A - Product 题目链接:https://abc086.contest.atcoder.jp/tasks/abc086_a Time limit : 2sec / Memory limit : ...
- AtCoder Beginner Contest 085(ABCD)
A - Already 2018 题目链接:https://abc085.contest.atcoder.jp/tasks/abc085_a Time limit : 2sec / Memory li ...
- AtCoder Beginner Contest 084(AB)
A - New Year 题目链接:https://abc084.contest.atcoder.jp/tasks/abc084_a Time limit : 2sec / Memory limit ...
- AtCoder Beginner Contest 083 (AB)
A - Libra 题目链接:https://abc083.contest.atcoder.jp/tasks/abc083_a Time limit : 2sec / Memory limit : 2 ...
- AtCoder Beginner Contest 264(D-E)
D - "redocta".swap(i,i+1) 题意: 给一个字符串,每次交换相邻两个字符,问最少多少次变成"atcoder" 题解: 从左到右依次模拟 # ...
- Atcoder Beginner Contest 121D(异或公式)
#include<bits/stdc++.h>using namespace std;int main(){ long long a,b; cin>>a>&g ...
- Atcoder Beginner Contest 156E(隔板法,组合数学)
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ; ; long long fac[N] ...
- Atcoder Beginner Contest 155E(DP)
#definde HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; int main(){ ios: ...
随机推荐
- 【python基础】第10回 周总结
路径 可以简单的理解为路径就是某个事物所在的具体位置(坐标) 1.相对路径:必须有一个参考系,就是相对于自己的目标文件的位置. 2.绝对路劲:不需要有参考系,是指文件在硬盘上真正存在的路径. 计算机五 ...
- Linux for CentOS 下的 keepalived 安装与卸载以及相关命令操作之详细教程
百度百科解释: keepalived 是一个类似于 layer3, 4 & 7 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 7 层交换.Keepalived 的作用是检测 w ...
- Django定时任务Django-crontab的使用
在使用的django做测试平台时,,多多少少都会遇到需要定时任务的功能,比如定时执行任务,检查订单之类 的.可能是一段时间,比如每隔 10分钟执行一次,也可能是定点时间,比如 14:00 执行,也可能 ...
- Tomcat深入浅出——最终章(六)
前言 利用了六天的时间,对Tomcat的内容进行了整理. 学习不易.整理也不易,自己坚持的更了下来,很不错. 希望每一位在努力前行的小伙伴,都要相信坚持就会有收获. 本次Tomcat就探寻到这里,明年 ...
- C#/VB.NET 添加多行文本水印到Word文档
一般情况下,在Word中添加文字水印仅支持添加一个文本字样的水印,但在复杂的办公环境中,由于对不同文档的设计要求,需要在Word文档中添加平铺水印效果,即文档中的水印文字以多行多列分布的形式存在.本文 ...
- 字符串的操作和MAth工具类
字符串的操作 常用方法 判断功能方法 equals(String s)判断两个字符串是否相同,区分大小写 equsalsignorecase(String s) 判断两个字符串是否相同,不区分大小写 ...
- LGV 引理
(其实是贺的:https://www.luogu.com.cn/paste/whl2joo4) 目录 LGV 引理 不相交路径计数 例题 Luogu6657. [模板]LGV 引理 CF348D Tu ...
- gitlab root密码重置
版本:Gitlab Ruby Gem 4.16.1 root密码在gitlab第一次运行的时候,如果你没有配置root用户的密码文件,它就会生成一个随机密码,并保存在固定的文件中,然后输出在屏幕上.但 ...
- cache2go-源码阅读
简介 cache2go 是非常简短的 go 开源项目了,很适合作为第一个读源码项目. 如果你有一定的 go 开发经验,读起来会感觉到比较容易. 如果你刚刚接触 go 语音,基础知识还不完全了解,希望阅 ...
- 正则表达式实战:最新豆瓣top250爬虫超详细教程
检查网页源代码 首先让我们来检查豆瓣top250的源代码,一切网页爬虫都需要从这里开始.F12打开开发者模式,在元素(element)页面通过Ctrl+F直接搜索你想要爬取的内容,然后就可以开始编写正 ...