码迷,mamicode.com
首页 > 其他好文 > 详细

wwbt3

时间:2019-08-04 10:22:33      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:back   sed   src   display   define   show   clu   put   isp   

技术图片
#include<bits/stdc++.h>
using namespace std;
#define ll int
#define A 3000000
ll n,K,pf[A],a[A],last[A],pos[A],colo[A];
bool arkn[A];
vector<ll> son[350000];
bool color(ll x,ll r,ll l,ll col,ll pre){
    colo[x]=col;
    for(ll i=0;i<son[x].size();i++){
        ll y=son[x][i];
        if(y>r||y<l||y==pre) {
            continue;
        }
        if(!colo[y]){
            colo[y]=colo[x]^1;
            if(!color(y,r,l,3-col,x))
                return 0;
        }
        if(colo[y]==colo[x])
            return 0;
    }
    return 1;
}
ll main()
{
    scanf("%d%d",&n,&K);
    for(ll i=1;i<=512;i++)
         pf[i]=i*i,arkn[i*i]=1;
    for(ll i=1;i<=n;i++) 
        scanf("%d",&a[i]);
    if(K==1){
        ll ans=1,p=n;
        for(ll i=n;i>=1;i--){
            for(ll j=512;j>=1;j--){
                if(pf[j]<=a[i]) break;
                if(last[pf[j]-a[i]]){
                    for(ll k=p;k>i;k--) 
                        last[a[k]]=0;
                    pos[ans]=i,p=i,ans++;
                    break;
                }
            }
            last[a[i]]++;
        }
        printf("%d\n",ans);
        for(ll i=ans-1;i>0;i--) 
            printf("%d ",pos[i]);
        puts("");
        return 0;
    }
    else{
        ll ans=1,p=n;
        for(ll i=1;i<=512;i++){
            arkn[i*i]=1;
        }
        for(ll i=n;i>=1;i--){
            for(ll j=p;j>i;j--){
                if(arkn[a[i]+a[j]]){
                    son[i].push_back(j);
                    son[j].push_back(i);
                }
            }
            if(!color(i,p,i,1,0)){
                pos[ans]=i,p=i,ans++;
                son[i].clear();
            }
            for(ll j=p;j>=i;j--){
                colo[j]=0;
            }
        }
        printf("%d\n",ans);
        for(ll i=ans-1;i>0;i--)
            printf("%d ",pos[i]);
        puts("");
        return 0;
    }
}
View Code

 

wwbt3

标签:back   sed   src   display   define   show   clu   put   isp   

原文地址:https://www.cnblogs.com/znsbc-13/p/11297350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!