hdu6025-构造or线段树
来源:互联网 发布:淘宝企业店铺怎么发货 编辑:程序博客网 时间:2024/05/17 20:28
链接:点击打开链接
解题思路:这题可以线段树树可以直接记前驱,后继的GCD然后枚举就OK了。
构造代码:
#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<sstream>#include<iterator>#include<algorithm>const double eps = 1e-8;typedef long long LL;using namespace std;const int MAXN=100010; int a[MAXN];int prefix[MAXN];int suffix[MAXN];int gcd(int a, int b){ return !b ? a : gcd(b, a % b);}int main(){ int T; scanf("%d", &T); while(T--){ memset(prefix, 0, sizeof prefix); memset(suffix, 0, sizeof suffix); int n; scanf("%d", &n); for(int i = 0; i < n; ++i){ scanf("%d", &a[i]); } prefix[0] = a[0]; for(int i = 1; i < n; ++i){ prefix[i] = gcd(prefix[i - 1], a[i]); } suffix[n - 1] = a[n - 1]; for(int i = n - 2; i >= 0; --i){ suffix[i] = gcd(suffix[i + 1], a[i]); } int ans = max(suffix[1], prefix[n - 2]); for(int i = 1; i < n - 1; ++i){ ans = max(ans, gcd(prefix[i - 1], suffix[i + 1])); } printf("%d\n", ans); } return 0;}线段树:
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;typedef long long ll;const int mx=100010,mod=1e9+7;int n,m;int sum[mx<<2];int gcd(int a,int b){return b==0? a:gcd(b,a%b);}void build(int l,int r,int rt){if(l==r){scanf("%d",sum+rt);return ;}int m=(l+r)>>1;build(lson);build(rson);sum[rt]=gcd(sum[rt<<1],sum[rt<<1|1]);}int query(int L,int R,int l,int r,int rt){if(L<=l&&R>=r) return sum[rt];int m=(l+r)>>1;int ans=0;if(m>=L) ans=query(L,R,lson);if(m<R) ans= ans==0? query(L,R,rson): gcd(ans,query(L,R,rson));return ans;}int main(){int t;scanf("%d",&t);while(t--){cin>>n;build(1,n,1);int ans=query(2,n,1,n,1);ans=max(ans,query(1,n-1,1,n,1));for(int i=2;i<n;i++){int v=query(1,i-1,1,n,1),u=query(i+1,n,1,n,1);ans=max(ans,gcd(u,v));}cout<<ans<<endl;}return 0;}
0 0
- hdu6025-构造or线段树
- HDU6025
- Codeforces 284C Cows and sequence 构造 or 线段树
- 线段树构造
- 线段树的构造
- 线段树的构造
- Codeforces482B【线段树构造】
- hdu1484线段树or暴力
- hdu1394 分治 or 线段树
- 根据数组构造线段树
- LintCode:线段树的构造
- 线段树的构造 II
- lintcode -- 线段树的构造
- 线段树的构造-LintCode
- 序列操作 线段树or平衡树or贪心
- HDOJ1754(线段树or树状数组)
- POJ2823 线段树OR单调队列
- poj1456 并查集or线段树
- 正则表达式实例 网页爬虫抓取页面邮箱地址
- key:{"0":value}
- IOCP应用中,有关内存释放的几个需要注意的地方
- 5月10日c总结
- 漫谈JSTL
- hdu6025-构造or线段树
- java.util.Objects 源码学习
- 安装xampp后apache不能启动解决方法
- Hive的三种Join方式
- qsort简单解析
- QT之鼠标滑过按钮,按钮改变颜色,离开之后,按钮恢复原先颜色
- Android Studio真机测试中遇到的问题:Session 'app': Error Installing APKs
- AH00072: make_sock: could not bind to address [::]:443 Aphache启动报443端口占用
- 排序算法--选择排序算法