[Codeforces]1005 C. Summarize to the Power of Two
題目URL: http://codeforces.com/contest/1005/problem/C
嘛......這題原本最initial的想法是兩兩去湊,但看了看範圍......絕對吃TLE,所以換個思路,反正他只是想找不為2的次方的兩兩和之一數,所以以防CE,我習慣陣列使用map,好習慣(? 然後出現過的數字標一標,掃過去再用*2的迴圈去找2的次方......等小細節判斷,就亮綠燈啦~!
嘛......這題原本最initial的想法是兩兩去湊,但看了看範圍......絕對吃TLE,所以換個思路,反正他只是想找不為2的次方的兩兩和之一數,所以以防CE,我習慣陣列使用map
#include<bits/stdc++.h> using namespace std; int str[200005]; map <long long , long long> pt; main() {
int num; cin >> num; for(int i=0;i<num;i++)
{
cin >> str[i];
pt[str[i]]++;
}
int com,tot=0;
for(int i=0;i<num;i++)
{
int deter=0;
com=str[i];
pt[str[i]]--;
for(long long j=1;j<2000000000;j*=2)
{
if(j<=com)
continue;
if(pt[j-com]>0)
deter=1;
}
pt[com]++;
if(deter==0)
tot++;
} cout << tot << endl;
return 0;
}
留言
張貼留言