以下是題目
「與」(and.pas/.c/.cpp)
【題目描述】
數學大神hyy又開始發威了,他隨口給出一道題:有乙個長度為n的序列a,請你求出一對ai,aj(1<=i5,0<=ai<=109
玄學貪心跑過正解,一直被人卡,從未被卡掉
要ac只需要貪心前三個高位1即可
同學的毒瘤資料逼著我貪到了第9個.......
#include#include#define n 300005
#define inf 0x7f7f7f7f
//ðþñ§ëã·¨µèäãà´¿¨
using namespace std;
inline int read()
while(c>='0'&&c<='9')
return e*ch;
}int n,cnt,minn=inf,minn2=inf,minn3=inf,minn4=inf,minn5=inf,minn6=inf,minn7=inf,minn8=inf,minn9=inf,ans;
int a[n],c[n],d[n];
bool key=0;
inline int max(int x,int y)
inline void uper4(int x)
if(l>minn) return;
k<<=1;int l2=0;
if(k==0) l2=100000;
while(k>0)
k<<=1;int l3=0;
if(k==0) l3=100000;
while(k>0)
k<<=1;int l4=0;
if(k==0) l4=100000;
while(k>0)
if(lminn2) return;
if(l2==minn2)
else
}else if(l30)
if(l>minn) return;
k<<=1;int l2=0;
if(k==0) l2=100000;
while(k>0)
k<<=1;int l3=0;
if(k==0) l3=100000;
while(k>0)
k<<=1;int l4=0;
if(k==0) l4=100000;
while(k>0)
k<<=1;int l5=0;
if(k==0) l5=100000;
while(k>0)
k<<=1;int l6=0;
if(k==0) l6=100000;
while(k>0)
if(lminn2) return;
if(l2==minn2)
else
}else
}else
}else if(l30)
if(l>minn) return;
k<<=1;int l2=0;
if(k==0) l2=100000;
while(k>0)
k<<=1;int l3=0;
if(k==0) l3=100000;
while(k>0)
k<<=1;int l4=0;
if(k==0) l4=100000;
while(k>0)
k<<=1;int l5=0;
if(k==0) l5=100000;
while(k>0)
k<<=1;int l6=0;
if(k==0) l6=100000;
while(k>0)
k<<=1;int l7=0;
if(k==0) l7=100000;
while(k>0)
k<<=1;int l8=0;
if(k==0) l8=100000;
while(k>0)
k<<=1;int l9=0;
if(k==0) l9=100000;
while(k>0)
if(lminn2) return;
if(l2==minn2)
else
}minn8=l8;
minn9=l9;
cnt=1;
c[cnt]=a[x];
d[cnt]=x;
}else
}else
}else
}else
}else
} else
return; }}
int main()
if(!key)
if(n<=100005) for(register int i=1;i<=n;++i) uper4(i);//根據不同資料級別選擇不同貪心精度,否則會t
else if(n<=2750001) for(register int i=1;i<=n;++i) uper6(i);
else for(register int i=1;i<=n;++i) uper9(i);
if(cnt==1)}}
else}}
printf("%d",ans);
return 0;
}
以下是當晚改進的版本
#include#include#define n 300005
#define inf 0x7f7f7f7f
using namespace std;
inline int read()
while(c>='0'&&c<='9')
return e*ch;
}int n,cnt,ans,jie;
int minn[n],l[n];
int a[n],c[n],d[n];
bool key=0;
inline int max(int x,int y)
inline void uper(int x)
while(k>0)
if(l[num]>minn[num]) return;
k<<=1;
num++;
} num=1;
while(num<=jie)
cnt=1;
c[cnt]=a[x];
d[cnt]=x;
return;
} num++;
} c[++cnt]=a[x];
d[cnt]=x;
}void init()
int main()
if(!key)
if(n<=1000) jie=0;
if(n<=100000) jie=3;
else if(n<=275001) jie=4;
else jie=5;
init();
if(jie^0) for(int i=1;i<=n;++i) uper(i);
if(cnt==1||jie==0)}}
else}}
printf("%d",ans);
return 0;
}
考試題題解
主講人igl albl 試題t2 t3 t1 t4 t5 暴力 dfs所有路徑,在使用clock的情況下預計 text 題意 給你一張有向圖,距離為 text 的正整數次冪的兩點間可以重新連一條長為 text 邊,求在此情況下的從起點到終點最短路。我們用 text 表示點 text 到點 text ...
C程式考試題
1 構成乙個c程式的是 a 若干個主函式和最多乙個非主函式 b 若干個主函式和若干個非主函式 c 乙個主函式和最多乙個非主函式 d 乙個主函式和若干個非主函式 2 合法的 語言識別符號是 a a1 b a b c 3abc d ab,cd 3 表示式a c b 的值是 其中 a 4,b 5,c 6 ...
linux入門考試題
rhcsa模擬測試 考試時間為2小時 共18題 考試資訊 ipaddr 172.25.254.x x 在這裡指您的工作站編號加100 netmask 255.255.255.0 gateway 172.25.254.250 dns 172.25.254.250 yum源位址為 1.在進行考試之前,請...