Codeforces Round #442 (Div. 2) C. Slava and tanks
题意:有n个格子,每个格子里有坦克,坦克有两滴血,你像格子里投掷炸弹,每次命中坦克他掉一滴血并随机像左或者右移动一个格子,问最少炸几次能把全部坦克炸完。
题解:先向偶数格子投掷炸弹,所以的坦克全跑到奇数格子里,然后再向奇数格子里投掷炸弹,消灭掉之前偶数格子里的坦克并且所以的坦克全跑到偶数格子里,再向偶数格子投掷炸弹,消灭所以坦克。
次数为n+(int)n/2;
1 #include <bits/stdc++.h> 2 using namespace std; 3 vector<int> v; 4 int main() 5 { 6 int n; 7 cin>>n; 8 for(int i=2;i<=n;i+=2) 9 v.push_back(i); 10 for(int i=1;i<=n;i+=2) 11 v.push_back(i); 12 for(int i=2;i<=n;i+=2) 13 v.push_back(i); 14 cout<<v.size()<<endl; 15 for(auto it=v.begin();it!=v.end();++it) 16 cout<<*it<<' '; 17 cout<<endl; 18 }