[Codeforces] 1013B. And
題目URL: http://codeforces.com/contest/1013/problem/B
我在練習賽時,這題爛在把 '&' 寫成 '&&' 浪費了30分鐘......恨啊~~
我的寫法很耗空間,先用兩個陣列記數,其一去掃過判斷,只要等於2就break***,pretest AC,但最後在main test時又爛掉一次,因為要注意的地方是掃過判斷時,先別急著break(依我的寫法而論)。
(更改敘述接在***後面)把break打掉,改成全部取min,因為特測就是前面有兩個重複,其實後面只要換一個即可,這樣就main test AC了。
我在練習賽時,這題爛在把 '&' 寫成 '&&' 浪費了30分鐘......恨啊~~
我的寫法很耗空間,先用兩個陣列記數,其一去掃過判斷,只要等於2就break***,pretest AC,但最後在main test時又爛掉一次,因為要注意的地方是掃過判斷時,先別急著break(依我的寫法而論)。
(更改敘述接在***後面)把break打掉,改成全部取min,因為特測就是前面有兩個重複,其實後面只要換一個即可,這樣就main test AC了。
#include<bits/stdc++.h> using namespace std; map<int,int> str,boo,coo; main() { int a,b,len=0,ans=2,deter=0,nans; cin >> a >> b; for(int i=0;i<a;i++) { cin >> str[i];
len=max(len,str[i]);
boo[str[i]]++;
coo[str[i]]++;
if(boo[str[i]]>=2)
{
deter=1;
}
}
int de;
if(deter==1)
cout << 0 << endl;
else
{
for(int i=0;i<=len;i++)
{
de=str[i]&b;
if(de!=str[i])
{
boo[de]++;
if(boo[de]==2)
{
deter=1;
nans=boo[de]-coo[de];
ans=min(ans,nans);
}
}
}
if(deter==1)
cout << ans << endl;
else
cout << -1 << endl;
}
return 0;
}
留言
張貼留言