杭电女生赛1003

题意:给一个序列,删除一个数,令这个序列的gcd最大

思路:求出原始序列的gcd=g,然后从左边跑一遍gcd,如果gcd==c 标记 r,那么a[r] 肯定和前面某个数的gcd为 c , 再从r开始完前跑一遍求gcd,直到gcd==c,标记l,那么a[l]一定与后面(l到r区间)某个数的gcd为 c,所以可得 gcd(a[l],a[r])==c ,分别删除a[l] a[r] 求gcd 输出较大的

PS:给的是任意序列,但是题目第一句话告诉我什么是互质序列是什么鬼,wa了一天以为给的是互质序列,要不是我狗哥提醒我这是中国人出题,不是cf,前面讲的互质序列可能没软用,我可能一辈子也想不到。。。。mdzz

PPS:代码改得乱七八糟随便看看就好了。。。当然大佬都是前缀后缀搞出来的不用考虑互质不互质的问题

AC代码:

#include "iostream"
#include "string.h"
#include "string"
#include "stack"
#include "queue"
#include "string"
#include "vector"
#include "set"
#include "map"
#include "algorithm"
#include "stdio.h"
#include "math.h"
#define ll long long
#define bug(x) cout<<x<<" "<<"UUUUU"<<endl;
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int N=1e5+100;
int n,t,a[N],b[N];
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        for(int i=1; i<=n; ++i){
            scanf("%d",a+i);
            b[i]=a[i];
        }
        int c=a[1];
        for(int i=2; i<=n; ++i){
            c=__gcd(c,a[i]);
        }
        int g=a[1],l=1,r=n;
        for(int i=2; i<=n; ++i){
            if(g==c){
                r=i-1;
                break;
            }
            g=__gcd(g,a[i]);
        }
        g=a[r];
        for(int i=r-1; i>=1; --i){
            if(g==c){
                l=i+1;
                break;
            }
            g=__gcd(g,a[i]);
        }
        //cout<<l<<" "<<r<<endl;
        if(l==1) a[l]=a[l+1];
        else a[l]=a[l-1];
        if(r==1) b[r]=b[r+1];
        else b[r]=b[r-1];
        int ans1=a[1],ans2=b[1];
        for(int i=2; i<=n; ++i){
            ans1=__gcd(ans1,a[i]);
            ans2=__gcd(ans2,b[i]);
        }
        cout<<max(ans1,ans2)<<endl;
    }
    return 0;
}
时间: 2024-10-13 18:21:31

杭电女生赛1003的相关文章

杭电女生赛1001 1002 1003 1005 1008 hdu6023 6024 6025 6027 6030

代码先贴这里 #include "iostream" #include "string.h" #include "stack" #include "queue" #include "string" #include "vector" #include "set" #include "map" #include "algorithm&quo

油菜花王国——杭电校赛(并查集)

油菜花王国 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1609    Accepted Submission(s): 411 Problem Description 程序设计竞赛即将到来,作为学校ACM集训队主力,小明训练一直很努力.今天天气不错,教练也心情大好,破例给各位队员放假一天,小明就骑着自己的小电驴到郊外踏青去了. 出城不

逆袭指数---杭电校赛(暴力搜索)

Problem Description 这依然是关于高富帅小明曾经的故事—— 尽管身处逆境,但小明一直没有放弃努力,除了搬砖,小明还研究过东方的八卦以及西方的星座,一直试图在命理上找到自己能够逆袭的依据. 当这些都失败以后,小明转向了数学研究,希望从中得到一些信息.一天,小明在研究<BestCoder逆袭的数理基础>这本书时,发现了宝贵的信息,其中写道:  每个人都存在一个逆袭指数,对于这个逆袭指数,可能存在连续的因子,如果这个连续因子足够长的话,那么这个人逆袭的概率就很大! 小明已知自己的逆

逆袭指数-——杭电校赛(dfs)

逆袭指数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 626    Accepted Submission(s): 94 Problem Description 这依然是关于高富帅小明曾经的故事—— 尽管身处逆境,但小明一直没有放弃努力,除了搬砖,小明还研究过东方的八卦以及西方的星座,一直试图在命理上找到自己能够逆袭的依据. 当这些都

搬砖--杭电校赛(dfs)

搬砖 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 4646    Accepted Submission(s): 1060 Problem Description 小明现在是人见人爱,花见花开的高富帅,整天沉浸在美女环绕的笙歌妙舞当中.但是人们有所不知,春风得意的小明也曾有着一段艰苦的奋斗史. 那时的小明还没剪去长发,没有信用卡没有她

(2015 杭电校赛 暴力) 逆袭指数

逆袭指数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 626    Accepted Submission(s): 94 Problem Description 这依然是关于高富帅小明曾经的故事—— 尽管身处逆境,但小明一直没有放弃努力,除了搬砖,小明还研究过东方的八卦以及西方的星座,一直试图在命理上找到自己能够逆袭的依据. 当这些都

杭电校赛(虐哭。。。)

写了半天写三道水题...虐哭.... The Country List Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 0    Accepted Submission(s): 0 Problem Description As the 2010 World Expo hosted by Shanghai is coming, CC is

HDU 5705 Clock(2016杭电女生专场1004)——角度追及问题

题意是给出一个当前的时间和角度a,问从现在开始的下一个时针和分针形成角度a的时间是多少,时间向下取整. 分析:时针3600s走30°,故120s走1°,分针3600s走360°,故10s走1°,那么每过120s它们就会相差11°,即每过120/11s相差1°,因此设tar是从0:00:00到当前的时间所经过的秒数,cnt也是一样,但是cnt的初始值是a°乘以120/11s,也就是说它是从0:00:00开始的第一个所能形成角度a的时间,然后不断地变更到下一个角度为a的时间即可(所有的时间都先用秒来

杭电 HDU ACM 1003 Max Sum

 Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 164592    Accepted Submission(s): 38540 Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the ma