当前位置:网站首页>AtCoder Beginner Contest 254
AtCoder Beginner Contest 254
2022-07-02 11:55:00 【不是张胖胖】
D - Together Square
题意:
计算有对少对小于等于 n ( 1 ≤ n ≤ 2 × 1 0 5 ) n(1 \leq n \leq 2×10^5) n(1≤n≤2×105)的 i , j i,j i,j,满足 i × j i×j i×j是平方数
思路:
如果 i i i是平方数,那么 j j j也是平方数才行。
否则, j j j应该是平方数乘以 i i i中出现次数为奇数的质因子
#include<bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
typedef pair<int,int> PII;
const int maxn=2e5+7;
int n,vis[maxn];
int main()
{
scanf("%d",&n);
vector<int>v;
for(int i=1;;i++)
{
if(i*i>n) break;
vis[i*i]=1;v.pb(i*i);
}
ll ans=0;
for(int i=1;i<=n;i++)
{
if(vis[i]) ans+=v.size();
else
{
int nn=i;
for(int j=1;j<v.size();j++)
{
while(nn%v[j]==0)
{
nn/=v[j];
}
}
for(int j=0;j<v.size();j++)
{
if(v[j]*nn>n) break;
ans++;
}
}
}
printf("%lld\n",ans);
}
F - Rectangle GCD
题意:
有长度为 n ( 1 ≤ n ≤ 2 × 1 0 5 ) n(1≤n≤2×10^5) n(1≤n≤2×105)的数组 A , B ( 1 ≤ A i , B i ≤ 1 0 9 ) A,B(1≤A _i,B_i≤10^9) A,B(1≤Ai,Bi≤109),以及一个 n × n n×n n×n的正方形,第 i i i行第 j j j列的数为 A i + B j A_i+B_j Ai+Bj
有 q ( 1 ≤ q ≤ 2 × 1 0 5 ) q(1≤q≤2×10^5) q(1≤q≤2×105)次询问,每次询问一个矩形区域内所有数字的 gcd \gcd gcd
思路:
矩形内数字为
a i + b j a i + b j + 1 a i + b j + 2 a i + b j + 3 . . . a i + 1 + b j a i + 1 + b j + 1 a i + 1 + b j + 3 a i + 1 + b j + 2 . . . . . . . . . a_i+b_j \quad a_{i}+b_{j+1} \quad a_{i}+b_{j+2} \quad a_{i}+b_{j+3} \quad ...\\ a_{i+1}+b_{j} \quad a_{i+1}+b_{j+1} \quad a_{i+1}+b_{j+3} \quad a_{i+1}+b_{j+2} \quad ...\\ ...... ai+bjai+bj+1ai+bj+2ai+bj+3...ai+1+bjai+1+bj+1ai+1+bj+3ai+1+bj+2.........
已知性质
gcd ( a , b , c , d ) = gcd ( a , b − a , c − b , d − c ) \gcd(a,b,c,d)=\gcd(a,b-a,c-b,d-c) gcd(a,b,c,d)=gcd(a,b−a,c−b,d−c)
所以问题转化为 gcd \gcd gcd数组 B , A B,A B,A的差分数组
用线段树维护即可
#include<bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
typedef pair<int,int> PII;
const int maxn=2e5+7;
struct gcd_tree
{
int nums[maxn];
struct tree
{
int l,r,sum;
int mid()
{
return (l+r)/2;
}
}tre[maxn<<2];
void pushup(int num)
{
tre[num].sum=__gcd(tre[2*num].sum,tre[2*num+1].sum);
}
void build(int num,int l,int r)
{
tre[num].l=l,tre[num].r=r;
if(l==r)
{
tre[num].sum=nums[l];return;
}
int mid=tre[num].mid();
build(2*num,l,mid);
build(2*num+1,mid+1,r);
pushup(num);
}
int query(int num,int l,int r)
{
if(tre[num].l==l && tre[num].r==r)
return tre[num].sum;
int mid=tre[num].mid();
if(l>mid)
return query(2*num+1,l,r);
else if(r<=mid)
return query(2*num,l,r);
else
return __gcd(query(2*num,l,mid),query(2*num+1,mid+1,r));
}
}da,db;
int n,m;
int a[maxn],b[maxn];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++) da.nums[i]=abs(a[i]-a[i-1]);
da.build(1,1,n);
for(int i=1;i<=n;i++) db.nums[i]=abs(b[i]-b[i-1]);
db.build(1,1,n);
while(m--)
{
int h1,h2,w1,w2;scanf("%d%d%d%d",&h1,&h2,&w1,&w2);
int ans=a[h1]+b[w1];
if(h2>h1) ans=__gcd(ans,da.query(1,h1+1,h2));
if(w2>w1) ans=__gcd(ans,db.query(1,w1+1,w2));
printf("%d\n",ans);
}
}
边栏推荐
- YoloV6训练:训练自己数据集遇到的各种问题
- Mfc a dialog calls B dialog function and passes parameters
- Makefile separates file names and suffixes
- threejs的控制器 立方体空间 基本控制器+惯性控制+飞行控制
- 【NOI模拟赛】伊莉斯elis(贪心,模拟)
- Li Chuang EDA learning notes 15: draw border or import border (DXF file)
- A white hole formed by antineutrons produced by particle accelerators
- Implement a server with multi process concurrency
- MFC console printing, pop-up dialog box
- MFC timer usage
猜你喜欢

MathML to latex

复用和分用

Xilinx Vivado set *. svh as SystemVerilog Header

为什么只会编程的程序员无法成为优秀的开发者?

Li Chuang EDA learning notes 15: draw border or import border (DXF file)

报错:npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

【C语言】详解指针的初阶和进阶以及注意点(1)

About text selection in web pages and counting the length of selected text

Tujia muniao meituan has a discount match in summer. Will it be fragrant if the threshold is low?

C#代码审计实战+前置知识
随机推荐
Introduction to C language -- array
kityformula-editor 配置字号和间距
About text selection in web pages and counting the length of selected text
Makefile separates file names and suffixes
871. 最低加油次数 : 简单优先队列(堆)贪心题
STM32库函数进行GPIO初始化
btrace-(字节码)动态跟踪工具
Stm32-dac Experiment & high frequency DAC output test
C thread transfer parameters
socket(套接字)与socket地址
【NOI模拟赛】刮痧(动态规划)
Edit the formula with MathType, and set it to include only mathjax syntax when copying and pasting
Fabric. JS free draw circle
CTO如何帮助业务?
buuctf-pwn write-ups (7)
Fundamentals of software testing
[apipost] tutorial
MFC 控制台打印,弹出对话框
Threejs controller cube space basic controller + inertia control + flight control
一张图彻底掌握prototype、__proto__、constructor之前的关系(JS原型、原型链)