题解:P10688 Buy Tickets
YWJ20140130 · · 题解
题目:P10688 Buy Tickets
思路
这道题主要就是在第
样例解读
数据一:
| 第一个人 | 第二个人 | 第三个人 | 第四个人 | |
|---|---|---|---|---|
| 第一次 | 77 | - | - | - |
| 第二次 | 77 | 51 | - | - |
| 第三次 | 77 | 33 | 51 | - |
| 第四次 | 77 | 33 | 69 | 51 |
所以数据一输出77 33 69 51。
数据二:
| 第一个人 | 第二个人 | 第三个人 | 第四个人 | |
|---|---|---|---|---|
| 第一次 | 20523 | - | - | - |
| 第二次 | 20523 | 19243 | - | - |
| 第三次 | 20523 | 38900 | 19243 | - |
| 第四次 | 31492 | 20523 | 38900 | 19243 |
所以数据二输出31492 20523 38900 19243。
Code
#include<bits/stdc++.h>
#define io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int main(){
io
int n;
while(cin>>n){
vector<int> Q;
for(int i=1;i<=n;i++){
int a,b;
cin>>a>>b;
Q.insert(Q.begin()+a,b);
}
for(int i=0;i<n;i++){
cout<<Q[i]<<' ';
}
cout<<"\n";
}
return 0;
}
分析
第 2 行,定义输入输出宏。(用cin,cout的一定一定要加,不然有的题要 TLE ,用printf,scanf的不需要加,这个加速管不到他们,也不用管他们)
第 5 行,调用宏。(你写了不调用当空气,宏不是自动执行的,新手注意)
第 8 行,输入。(详见知识点)
第 8 行,建立一个容器。(存队伍)(详见知识点)
第 9 行,输入+插队循环 。
第 12 行,在容器里模拟“插队操作” 。
第 14 行,输出循环。(注意: vector 容器可以像数组访问一样随机访问,但是下标从 0 开始)
第 15 行,输出整个 Q 。
第 17 行,在每一组数据点后换行。(新手不要再用endl了,慢的很,加速都加不了;用"\n"更快还方便)
知识点
1.
while(cin>>n)代表输入
n ,一直输入到结尾(换行)。2.
vector一种容器,详细介绍。
begin()即返回这个序列的起始位置。
insert(i,j)在本题中模拟“插队”动作,
意思是“在序列(vector)的第i 项后插入j 。
这里就是在a 后面“插”一个人,序号是b 。c++模板
有些新手才入门,我分享一下模板代码。(带加速,
printf,scanf的不需要加)#include<bits/stdc++.h>//万能库 #define io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//加速 using namespace std;//用命名空间 int main(){//主函数 io//加速
return 0;//要返回0,不然有点平台要RE
}
------------------------------完------------------------------