
模拟
WildKid1024
骐骥一跃,不能十步。驽马十驾,功在不舍!
展开
-
UVA 10588—— Queuing at the doctors
题意:给定n个工人和m个医生,然后进行体检,每个医生每秒接待一个工人,每个人都有一个体检项目顺序和时间,问最后一个员工完成体检的时间。思路:优先队列模拟,建立m个项目的优先队列,当某个工人满足体检时间时,给该工人体检,然后push到下一个项目中去。code:#include using namespace std;const int N=1005;in原创 2016-03-20 21:11:37 · 452 阅读 · 0 评论 -
UVA 10895——Matrix Transpose
题意:给定一个矩阵(每一行有几个非0的数据,对应的位置以及数值),输出这个矩阵的转置矩阵。思路:直接模拟,用两个vector,一个维护数值,另外一个维护行号。注意长度为0时输出空行。code:#include using namespace std;const int N=10005;vectorv1[N],v2[N];int n,m,v[N];int m原创 2016-03-20 21:48:21 · 502 阅读 · 0 评论 -
UVA 10410——Tree Reconstruction
题意:给定一颗树的BFS和DFS,求这棵的每个节点。思路:用栈模拟维护。对应的BFS为每个节点到根节点的距离,然后比较当前节点和栈顶节点与根的距离,如果当前节点大,则为栈顶节点的孩子,否则弹出继续比较。code:#include #include #include #include #include #include #include #include原创 2016-03-20 21:26:58 · 511 阅读 · 0 评论 -
UVA 514——Rails
题意:给定两个序列A和一到n的排列B,问能否通过一个栈的push和pop操作使得A变成B。思路:直接构造一个栈模拟即可,注意换行。code:#include using namespace std;int v[1005],n;int main(){ while (~scanf("%d",&n)&&n) { while (~sc原创 2016-03-20 22:35:31 · 344 阅读 · 0 评论 -
uva 1203—— Argus
题意:给定一个阿格斯系统,每个period周期都会产生一次编号为Q_num的事件,任务是模拟前k个事件。思路:直接按照优先队列的方法来模拟和构造即可。code:#include using namespace std;struct node{ int qnum,period,time; bool operator <(const node &a)原创 2016-03-14 20:54:34 · 466 阅读 · 0 评论 -
UVA 11991——Easy Problem from Rujia Liu?
题意:给定一个数组,然后有若干组询问,每次询问求第k个v出现的位置。思路:用vector构造模拟,吧相同的数的位置放在同一个vector里,对于每次查询输出mp[v][x-1];code:#include using namespace std;map >mp;int main(){ int n,m,k,v; while (~scanf("%d%d",&原创 2016-03-21 09:35:45 · 445 阅读 · 0 评论 -
UVA 11988——Broken Keyboard (a.k.a. Beiju Text)
题意:给定一个字符串,然后【会将光标跳转到头,】会将光标调到尾,问最后正确的输入。思路:直接用list来模拟即可,【的时候就在头插,】就在尾插,也可根据递归顺序解。code:#include using namespace std;char s[100001];void dfs(int lt,int rt){ int st=rt; while原创 2016-03-21 16:49:41 · 434 阅读 · 0 评论 -
UVA 11136——Hoax or what
题意:超市搞促销,每天都从箱子里拿出最大和最小的差作为促销金额,给出n天的促销情况,问最后总的促销金额。思路:set构造,当有小票的时候放入set,每天结束的时候取出头和尾即可。code:#include using namespace std;typedef long long ll;const int N=1e5+5;ll ans;multisets;原创 2016-03-21 16:56:24 · 558 阅读 · 0 评论