UVa 133,发放救济金】的更多相关文章

沿用前一个题的思路: 用left记录剩下的点,直到全部选完. 这里我的问题是,我一直pos = (pos + f + n)%n,这里的问题是对于B点来说,开始的位置是1,就成了(1+(-1) +n) %n 是0,位置是从1开始记录的,所以应该是(pos  + f + n - 1) %n + 1; #include <stdio.h> #define maxn 25 int n,k,m; int a[maxn]; int go (int pos ,int f,int t) { while(t--…
n(n<20)个人站成一圈,逆时针编号为1-n.有两个官员,A从1开始逆时针数,B从n开 始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个 官员停在同一个人上).接下来被官员选中的人(1个或者2个)离开队伍. 输入n,k,m输出每轮里被选中的人的编号(如果有两个人,先输出被A选中的).例 如,n=10,k=4,m=3,输出为4 8, 9 5, 3 1, 2 6, 10, 7.注意:输出的每个数应当恰好占3列. #include<stdio.h> #def…
双向约瑟夫环. 数据规模只有20,模拟掉了.(其实公式我还是不太会推,有空得看看) 值得注意的是两个方向找值不是找到一个去掉一个,而是找到后同时去掉. 还有输出也很坑爹! 在这里不得不抱怨下Uva的oj,少了个s,少了个空行什么的都不会显示pe,就给个wa,让人还以为算法有问题.原本以为Uva没有pe,然后据说这边的输出空行如果不对的话就会显示pe... 代码: #include <cstdio> #include <cstring> const int maxn = 22; in…
The Dole Queue 题解: 这里写一个走多少步,返回位置的函数真的很重要,并且,把顺时针和逆时针写到了一起,也真的很厉害,需要学习 代码: #include<stdio.h> #define maxn 25 int n, k, m, a[maxn]; int go(int p,int d,int t) { while(t--){ do{p=(p+d-1+n)%n+1;}while(a[p]==0); } return p; } int main() { while(scanf(&qu…
题意:一个长度为N的循环队列,一个人从1号开始逆时针开始数数,第K个出列,一个人从第N个人开始顺时针数数,第M个出列,选到的两个人要同时出列(以不影响另一个人数数),选到同一个人就那个人出列. 思路:用数组来操作,详情见代码吧. #include <iostream> #include <stdio.h> #include <string> /* 用数组存储序号,从左到右依次为1~n. 逆时针相当于从左往右依次数,大于n再从1开始,用right作为指针. 顺时针相当于从…
类型:循环走步 #include <iostream> #include <sstream> #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <vector> #include <set> #include <cctype> #include <algorithm> #inc…
题目描述 为了缩短领救济品的队伍,NNGLRP决定了以下策略:每天所有来申请救济品的人会被放在一个大圆圈,面朝里面.选定一个人为编号 1 号,其他的就从那个人开始逆时针开始编号直到 N.一个官员一开始逆时针数,数 k 个申请者,然后另一个官员第 N 个始顺时针方向数 m 个申请者,这两个人就被送去再教育.如果两个官员数的是同一个人,那个人则被送去从政,然后2个官员再在剩下的人里面继续选直到没人剩下来,注意两个被选 中的人是同时走掉的,所以就有可能两个官员选中一个人. input:10,4,3 o…
•参考资料 [1]:紫书P82 •题意(by紫书) 按照被选中的次序输出这 n 个人的编号: 如果A和B选中的是同一个人,输出一个这个人的编号: 输出格式:输出的每个编号占3个字节,不够3个字节在前面用空格补: •循环报数处理技巧 n个人按照逆时针顺序编号1~n: 给你一个整数 k 和 cur: cur表示从这 n 个人中任意选取的一个编号: k > 0 : 找 cur 左手边的第 k 个人的编号: k < 0 : 找 cur 右手边的第 k 个人的编号: 循环报数问题,需要处理的边界问题是:…
一道比较难想的模拟题,用了队列等东西,发现还是挺难做的,索性直接看了刘汝佳的代码,发现还是刘汝佳厉害! 代码本身难度并不是很大,主要还是p=(p+n+d-1)%n+1;这一句有些难度,实际上经过自己的手动计算发现这一句真的是相当的正确,虽然无法准确的说明. 剩下的就是格式问题这个题很特别的只能用%3d的格式,我起初还不理解10前面为什么只有一个空格,还以为是题目打错了,没想到这就是要你%3d的意思. 我自己敲一遍的代码 #include <bits/stdc++.h> using namesp…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 写个数组模拟链表 但注意,得用个辅助数组flag.. 不然可能会出现没能跳过中间的被占区域的情况. 比如 1 2 idx # # # idx2 8 (#表示已经出去的位置) 这个时候,idx1和idx2删掉的话.(假设先删idx1,后删idx2) r[idx1]无法更新为8.. [代码] #include <bits/stdc++.h> using namespace std; const int N = 20; int n,…