题意:给出一个数组,分别从1和N开始数k,m,然后将选中的数删除,继续直到数组长度为0

思路:主要是用stl中的list

代码如下:

#include <iostream>
#include <fstream>
#include <list>
#include <iomanip>using namespace std;void solve(int n, int k, int m);int main()
{
#ifndef ONLINE_JUDGEifstream fin("F:\\OJ\\uva_in.txt");streambuf *old = cin.rdbuf(fin.rdbuf());
#endifint n, k, m;while (cin >> n >> k >> m){if (n == 0 && k == 0 && m == 0) break;solve(n, k, m);}#ifndef ONLINE_JUDGEcin.rdbuf(old);
#endifreturn 0;
}void solve(int n, int k, int m)
{list<int> l;for (int i = 1; i <= n; i++){l.push_back(i);}list<int>::iterator kit = l.begin(), mit = --l.end();while (l.size() != 0){for (int i = 1; i < k; i++){kit++;if (kit == l.end()) kit = l.begin();}for (int i = 1; i < m; i++){mit--;if (mit == l.end()) mit = --l.end();}if (*kit == *mit){cout << setw(3) << right << *kit;kit = l.erase(kit);if (kit == l.end()) kit = l.begin();mit = kit;mit--;if (mit == l.end()) mit = --l.end();if (l.size() != 0) cout << ",";}else{cout << setw(3) << right << *kit << setw(3) << right << *mit;list<int>::iterator it = kit;it++; if (it == l.end()) it = l.begin();if (it == mit){mit = l.erase(mit);if (mit == l.end()) mit = --l.end();kit = l.erase(kit);if (kit == l.end()) kit = l.begin();mit--;if (mit == l.end()) mit = --l.end();}else{kit = l.erase(kit);if (kit == l.end()) kit = l.begin();mit = l.erase(mit);if (mit == l.end()) mit = --l.end();else{mit--;if (mit == l.end()) mit = --l.end();}}if (l.size() != 0) cout << ",";}}cout << endl;
}

UVa133 - The Dole Queue相关推荐

  1. UVA-133 The Dole Queue 救济金发放

    一.题目 In a serious attempt to downsize (reduce) the dole queue, The New National Green Labour Rhinoce ...

  2. 算法竞赛入门经典(第二版) | 例题4-3 救济金发放 (UVa133,The Dole Queue)

    提目(提交)链接→UVa-133 百度翻译→百度翻译 没使用过该网站的同学请猛戳这里→vJudge教程 分析: 最开始的固有思维是循环就用循环链表,其实完全可以把它看成一个大一点的周期类型题(一个大周 ...

  3. UVA - 133 ​​​​​​​The Dole Queue

    The Dole Queue UVA - 133 题目传送门 模拟一遍过程,注:可能会选中同一个人 AC代码: #include <cstdio> #include <iostrea ...

  4. 【UVA】 133 --- The Dole Queue

    [UVA] 133 --- The Dole Queue In a serious attempt to downsize (reduce) the dole queue, The New Natio ...

  5. 救济金发放(The Dole Queue)

    n(n<20)个人站成一圈,逆时针编号为1~n.有两个官员,A从1开始逆时针数,B从n开始顺时针数.每一轮中A数到k个就停下来,B数到m个就停下来(注意有可能两个官员停在同一个人身上).接下来被 ...

  6. ACM题解系列之一:刘汝佳:《算法竞赛入门经典》(第2版)

    题是书中的题,解法参照了书中的解法,不少解法都做了简化和改进. 做程序,就要努力做到自己的程序是最好的! 第3章例题 POJ1488 UVA272 UVALive5381 TEX Quote[输入输出 ...

  7. TYUT-A专题题解(一)

    TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...

  8. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  9. Competitive Programming专题题解(1)

    Competitive Programming题解 AOAPC I: Beginning Algorithm Contests 题解 CP2-1.1.1 Easy(Ad Hoc Problems) P ...

最新文章

  1. 数学公式太晦涩,不如用代码写出来:这是程序员学数学的独特方式
  2. 苏黎世联邦理工学院SML课题组招收统计机器学习全奖博士生
  3. 转载:谢谢原作者:块设备驱动实战基础篇一 (170行代码构建一个逻辑块设备驱动)
  4. 织梦 css里的图片标签,织梦{dede:field.body /}中用CSS的expression参数控制图片大小
  5. java各map中存放null值
  6. Python入门--列表,字典,元组,集合总结
  7. 查看各浏览器各版本的兼容情况
  8. 子过程或函数未定义_Power Pivotamp;Power BI DAX函数说明速查
  9. 华为鸿蒙系统老手机能用吗_华为发布鸿蒙2.0手机开发者测试版!华为老手机可申请公测...
  10. 数字化医院网络终端安全管理
  11. 电驴(easyMule)自动关机工具
  12. r5驱动 索尼exmor_索尼Exmor APS HD CMOS弱光测试
  13. oracle 文本日期相减,日期相减等于整数的问题
  14. 应对风险和机会的措施讲解
  15. TTime::FormatL 详解
  16. C. Removing Smallest Multiples codeforces 1734C
  17. python语言下同一个类下有多个函数,其中一个函数想调用另外一个函数里面的变量怎么调用
  18. 移动设备管理软件优劣,南京烽火星空来判别
  19. zabbix 5.0中自定义监控单个IP的最大流量
  20. 海伦公式已知三边求面积

热门文章

  1. 机器学习笔记(二)逻辑回归和正则化
  2. 一个关于异步的纠结问题
  3. excel调用python编程-用Python如何开发Excel宏脚本?新手必学
  4. python科学计算基础教程pdf下载-Python科学计算基础教程_PDF电子书
  5. 机器人编程语言python-入门篇丨使用EV3机器人,趣味学习Python编程语言~
  6. python读取文件多行内容-使用python读取.text文件特定行的数据方法
  7. python 调用linux命令-四种执行python系统命令的方法
  8. 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?
  9. python编程入门经典实例-终于明了python入门经典实例
  10. python上海培训哪里比较好-上海python培训哪家好 Python需要多久学会