考試題玄學解法

2022-05-12 09:08:12 字數 3507 閱讀 8346

以下是題目

「與」(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.在進行考試之前,請...