E - Coprime
First,judging the g c d ( a 1 , a 2 , . . . , a n ) gcd(a_1,a_2,...,a_n) gcd(a1​,a2​,...,an​) whether equal to 1 1 1.
Then,if not equal to 1 1 1,output “not coprime”,else we judging whether is multiply number’s factory for every < = 1 e 6 <=1e6 <=1e6’ prime。
The problem can be solved in O ( n l o g n ) O(nlogn) O(nlogn).

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,a[N],tot,head[N],nex[N*10],to[N*10];
void add(int u,int v){to[++tot]=v;nex[tot]=head[u];head[u]=tot;}
bool vis[N];
int main()
{for(int i=2;i<=1000000;i++)if(!vis[i]){for(int j=i;j<=1000000;j+=i)vis[j]=true,add(j,i);}scanf("%d",&n);int ans=0;for(int i=1;i<=n;i++) scanf("%d",&a[i]),ans=__gcd(a[i],ans);if(ans!=1) printf("not coprime\n");else{memset(vis,false,sizeof(vis));bool flag=false;for(int i=1;i<=n&&!flag;i++)for(int j=head[a[i]];j&&!flag;j=nex[j]){if(vis[to[j]]) flag=true;vis[to[j]]=true;}if(flag) printf("setwise coprime\n");else printf("pairwise coprime\n");}
}

F I hate Shortest Path Problem

A bad idea

Depart from evey coordinate ( 1 , i ) (1,i) (1,i),move row by row and column by column for each row。
Eevery time move from coordinate ( i , j ) (i,j) (i,j) to somewhere,if not a i < = j < = b i a_i<=j<=b_i ai​<=j<=bi​ then find the minimize k k k so that k > i k>i k>i and a k < = j < = b k a_k<=j<=b_k ak​<=j<=bk​(But this just find a way so that once query spend O ( l o g 2 n ) O(log^2n) O(log2n) time),then update the answer in section [ i , k − 1 ] [i,k-1] [i,k−1] maintained by segment tree and in k-th row build a new coordinate ( k , j ) (k,j) (k,j),else move to coordinate ( i , b i + 1 ) (i,b_i+1) (i,bi​+1) and record the optimal distance cost。
The method is bad because I find not a way maintain once query in O ( l o g n ) O(logn) O(logn) is step 2,total need O ( n l o g 2 n ) O(nlog^2n) O(nlog2n) times,is get TLE.

A good idea

We don’t need consider the cost in row move because we just can move to down or right,so that for a row the row moves step is fixed.
We just maintain arrived the i-th row,for each column,we arrive the column least need cost how many column moves.
We maintained by segment tree.We regard one row’s pair a i , b i a_i,b_i ai​,bi​ as a operation:query the cost move to the a i − 1 a_i-1 ai​−1 needed column moves d d d,update the cost for every column j j j( a i < = j < = b i a_i<=j<=b_i ai​<=j<=bi​) to j − ( a i − 1 ) + d j-(a_i-1)+d j−(ai​−1)+d.
Every time we arrived a row,we just query the minmum value moved to column j needed cost.
So that the problem can solved in O ( n l o g n ) O(nlogn) O(nlogn)。

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,m,t[N<<2],t1[N<<2],t2[N<<2];
void update(int l,int r,int k)
{t1[k]=t[k]+r-l;t2[k]=t[k];if(l!=r){int m=l+r>>1;t[k<<1]=t[k];t[k<<1|1]=t[k]+m+1-l;}t[k]=0;
}
int query(int l,int r,int k,int x)
{if(t[k]) update(l,r,k);if(l>x) return m+1;if(r<=x) return t1[k];int m=l+r>>1;int a=query(l,m,k<<1,x),b=query(m+1,r,k<<1|1,x);if(x<=r) a+=x>=m?x-m:0;else a+=r-m;t2[k]=min(t2[k<<1],t2[k<<1|1]);t1[k]=min(t1[k<<1]+r-m,t1[k<<1|1]);return min(a,b);
}
void update(int l,int r,int k,int x,int y,int d)
{if(t[k]) update(l,r,k);if(r<x||l>y) return;if(l>=x&&r<=y){t[k]=d+l-x;update(l,r,k);return;}int m=l+r>>1;update(l,m,k<<1,x,y,d);update(m+1,r,k<<1|1,x,y,d);t2[k]=min(t2[k<<1],t2[k<<1|1]);t1[k]=min(t1[k<<1]+r-m,t1[k<<1|1]);
}
int main()
{scanf("%d%d",&n,&m);for(int i=1,a,b,d;i<=n;i++){scanf("%d%d",&a,&b);d=min(m+1,query(1,m,1,a-1)+1);update(1,m,1,a,b,d);printf("%d\n",t2[1]>=m?-1:t2[1]+i);}
}

AtCoder Beginner Contest 177(E,F)相关推荐

  1. AtCoder Beginner Contest 177 D.Friends

    AtCoder Beginner Contest 177 D.Friends 题目链接 典型的并查集,不难发现答案就是最大的并查集的元素个数,AC代码如下: #include<bits/stdc ...

  2. AtCoder Beginner Contest 177总结

    回学校第一次打AtCoder,感觉晚上在寝室打不在状态~~ A - Don't be late 数学题签到 #define IO ios::sync_with_stdio(false);cin.tie ...

  3. AtCoder Beginner Contest 260 A~F 题解

    ABC260 A~F [A - A Unique Letter](https://atcoder.jp/contests/abc260/tasks/abc260_a) 题目大意 输入格式 输出格式 样 ...

  4. AtCoder Beginner Contest 244 D~F 题解

    ABC244 D~F [D - Swap Hats](https://atcoder.jp/contests/abc244/tasks/abc244_d) 题目大意 输入格式 输出格式 样例 样例输入 ...

  5. AtCoder Beginner Contest 177 A~D 题解

    ABC177 A~D [A - Don't be late](https://atcoder.jp/contests/abc177/tasks/abc177_a) 题目大意 输入格式 输出格式 样例 ...

  6. AtCoder Beginner Contest 177 题解

    希望更好的阅读体验?点这里 一.题解 A.Don't be late 题目大意: 高桥君计划在 TTT 分钟内于离家 DDD 米的地方与青木君碰面,已知高桥君速度为 SSS,问他能否在 TTT 分钟内 ...

  7. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  8. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  9. 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 ...

最新文章

  1. R语言ggplot2可视化:ggplot2可视化分组散点图并使用geom_smooth函数在散点图图中为不同的散点簇添加对应的回归曲线
  2. java script怎么用_如何在HTML中使用javascript?
  3. 工作组环境下WPAD部署的另类解决--WINS解析
  4. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之13.Form表单处理(1)
  5. linux下安装boost
  6. python函数定义与使用
  7. python分析股票数据_Python数据可视化——股票数据分析
  8. [转]Android Service Test——简单测试例子
  9. 拓端tecdat|R语言和Stan,JAGS:用rstan,rjags建立贝叶斯多元线性回归预测选举数据
  10. linux 查找mysql rpm包位置_linux如何查看rpm包的安装路径办法
  11. Basic Operators (基本运算符)
  12. 机器学习这10年我们能在各自的领域做点什么?
  13. 5分钟之内,让你轻松掌握面试流程
  14. Unity直线轨迹导弹预判
  15. 11.监视属性——watch
  16. Android密码管理器app
  17. jones 的 C语言复习
  18. 记一次阿里云木马排查过程
  19. C++--struct的用法
  20. 再接再厉mms 资源 转

热门文章

  1. ikbc c104恢复出厂设置
  2. HTML-a锚链接-00
  3. Ajv JSON数据格式校验 使用
  4. 移动**21*设置无法接通_正常手机号被呼叫时变空号,已停机,无法接通的方法?...
  5. ASP.NET超大文件上传与下载
  6. 李居明风水人人都懂版之九~厨房与风水
  7. 第一次使用HbuilderX运行微信小程序项目
  8. 笔记本解决触摸板手势失效的办法
  9. 互联网快讯:猿辅导推出教育科技新品牌“飞象星球”;披头士乐队入驻TikTok;阿里平头哥发布自研CPU芯片倚天710
  10. 2020开源界的一大清流(最好的U盘启功制作工具) - Ventoy