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 }

 

posted @ 2017-10-24 20:57  Kearon  阅读(172)  评论(0编辑  收藏  举报