UVALive 6493 - Round Robin

2024-06-14 03:48
文章标签 round robin uvalive 6493

本文主要是介绍UVALive 6493 - Round Robin,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:题目链接

就是初学编程的经典例子:

N个小孩围成一个圈,给出一个数T,每次数到一个小孩,该小孩就得一分;

数到T的小孩退出。。。

但这里不同的是结束条件不再是只剩最后一个小孩,而是当剩余所有小孩的分数都相同时结束,并输出剩余的小孩数,和他们的得分

组队做题,我在这道题上坑了很久。。。

原因不是我不知道怎么做,而是想着优化模拟,比如N=5,T=17时,第一次可以判断每个小孩肯定可以得(17/5==3)分,然后再考虑(17%5==2)分给哪几个孩子

这样写虽然比较麻烦,但是也写出来了(100多行的代码),但是我忽略了T<N的情况

后来把代码全删了,重新写,不要20分钟就写出来了尴尬

代码如下:

#include <map>
#include <cmath>
#include <vector>
#include <string>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define esp 1e-9
#define MAXN 110
#define ll long long
#define INF 0x7FFFFFFF
#define BUG system("pause")
#define SW(a,b) a^=b;b^=a;a^=b;
using namespace std;
int a[MAXN];
int flag[MAXN];
bool judge(int a[], int flag[], int n){int temp;for(int i=1; i<=n; ++i){if(flag[i] == 0){temp = a[i];break;}}for(int i=1; i<=n; ++i){if(flag[i] == 0){if(temp != a[i]){return false;}}}return true;
}
int main(void){int n, t;while(cin >> n, n){cin >> t;memset(a, 0, sizeof(a));memset(flag, 0, sizeof(flag));int front = 1;int rear = n;int tcp = t;do{int count = 0;int i = front;while(1){if(flag[i] == 0){count++;a[i]++;if(front > n){front = 1;}if(count == t){flag[i] = 1;rear = i;front = i+1;break;}}++i;if(i > n){i = 1;}}}while(!judge(a, flag, n));int p = 0;int c = 0;for(int i=1; i<=n; ++i){if(flag[i] == 0){++p;c = a[i];}}cout << p << " " << c << endl;}return 0;
}


这篇关于UVALive 6493 - Round Robin的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059289

相关文章

力扣SQL50 项目员工 I ROUND AVG

Problem: 1075. 项目员工 I 👨‍🏫 参考题解 Code select project_id,ROUND(AVG(e.experience_years),2) as average_yearsFROMproject as pLEFT JOINemployee as eONp.employee_id = e.employee_idGROUP BYp.proje

Codeforces Round 953 (Div. 2 ABCDEF题) 视频讲解

A. Alice and Books Problem Statement Alice has n n n books. The 1 1 1-st book contains a 1 a_1 a1​ pages, the 2 2 2-nd book contains a 2 a_2 a2​ pages, … \ldots …, the n n n-th book contains

Codeforces Round 923 (Div. 3)(A~D题解)

目录 A. Make it White B. Following the String C. Choose the Different Ones! D. Find the Different Ones! A. Make it White Problem - A - Codeforces 题意:问在一个只含有'W'和'B'元素的字符串中,选择一个L到R范围,

Codeforces Round 946 (Div. 3) E. Money Buys Happiness

m m m个月,每个月月底发 x x x的薪水,也就是第 i i i个月只能用前 i − 1 i-1 i−1个月挣的钱,而不能用这个月挣的钱。第 i i i个月花费 c [ i ] c[i] c[i]的薪水能获得 h [ i ] h[i] h[i]的快乐度,问最多能获取的快乐度是多少。 m m m和 h [ i ] h[i] h[i]都较小 考虑01背包,设 d p [ i ] dp[i] d

Codeforces Round 953 (Div. 2)(A~D题解)

这次比赛是我最顺利的一次比赛,也是成功在中途打进前1500,写完第三道题的时候也是保持在1600左右,但是后面就啥都不会了,还吃了点罚时,虽说如此也算是看到进步了,D题学长说很简单,但是我当时分析错了,出了一点小问题,不然最后也能定格在2000左右,下次加油。 A. Alice and Books   题意:就是说给你n本书,让你从中间分开,阅读边编号最大的那本书,然后问你最多能读多少页

Codeforces Global Round 26 A~E

A.Strange Splitting(思维) 题意: 将非空数组的范围定义为最大值减去最小值。例如, [ 1 , 4 , 2 ] [1,4,2] [1,4,2]的范围是 4 − 1 = 3 4-1=3 4−1=3。 给你一个长度为 n ≥ 3 n\geq 3 n≥3的数组 a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1​,a2​,…,an​。保证 a a

CSU 1623 Inspectors(二分图最大权匹配 KM算法)(UVAlive 6879)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1623 选用一些边 覆盖所有的点 使得这些边的权值和最小 比赛时的想法是用一般图最大权匹配 样例也过了 但是提交总是WA 看kuangbin模版中写的是点的个数必须是偶数。。是不是有可能是这个原因 改用二分图最大权匹配之后就过了。。。。 #include <cstdio>

Math.round()什么作用?

题目大概是问Math.Round(11.5);和Math.Round(-11.5);返回值是多少? 原来不是四舍五入这么简单,其实是四舍六入,但是五是很有讲究的。要是遇到五则取离前一位最近的偶数。比如,这条题目,11.5返回值就是12.0;-11.5返回值就是-11.0; 但是这里其实也不是这么简单: 看下面的例子:Math.Round(3.44, 1); //Return

Codeforces Round 926 (Div. 2)(A~C题解)

A题是个签到题,BC思维题目,搞出来结论就秒了,D题是个树上DP由于现在水平薄弱还没做出来,以后补上 A. Sasha and the Beautiful Array 思路给数组排序,然后后项减前项,累加值就是最终结果,签到题一个 #include<bits/stdc++.h>using namespace std;#define int long longint t;int

Codeforces Round #229 (Div. 2) A. Inna and Alarm Clock

A. Inna and Alarm Clock time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Inna loves sleeping very much, so she needs n