noi.openjudge 2406:Card Stacking

2024-01-12 00:48
文章标签 openjudge noi card 2406 stacking

本文主要是介绍noi.openjudge 2406:Card Stacking,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://noi.openjudge.cn/ch0304/2406/

描述

Bessie is playing a card game with her N-1 (2 <= N <= 100) cow friends using a deck with K (N <= K <= 100,000; K is a multiple of N) cards. The deck contains M = K/N “good” cards and K-M “bad” cards. Bessie is the dealer and, naturally, wants to deal herself all of the “good” cards. She loves winning.

Her friends suspect that she will cheat, though, so they devise a dealing system in an attempt to prevent Bessie from cheating. They tell her to deal as follows:

   1. Start by dealing the card on the top of the deck to the cow to her right2. Every time she deals a card, she must place the next P (1 <= P <= 10) cards on the bottom of the deck; and3. Continue dealing in this manner to each player sequentially in a counterclockwise manner

Bessie, desperate to win, asks you to help her figure out where she should put the “good” cards so that she gets all of them. Notationally, the top card is card #1, next card is #2, and so on.

输入

  • Line 1: Three space-separated integers: N, K, and P

输出

  • Lines 1…M: Positions from top in ascending order in which Bessie should place “good” cards, such that when dealt, Bessie will obtain all good cards.

样例输入

3 9 2

样例输出

3
7
8

提示

INPUT DETAILS:

Bessie is playing cards with two cow friends and a deck of 9 cards. She must place two cards on the bottom of the deck each time she deals one.

OUTPUT DETAILS:

Bessie should put the “good” cards in positions 3, 7, and 8. The cards will be dealt as follows; the card numbers are “position in original deck”:

                                      Card Deck         P1      P2    BessieInitial configuration           1 2 3 4 5 6 7 8 9  - - -   - - -   - - -Deal top card [1] to Player 1   2 3 4 5 6 7 8 9    1 - -   - - -   - - -Top card to bottom (#1 of 2)    3 4 5 6 7 8 9 2    1 - -   - - -   - - -Top card to bottom (#2 of 2)    4 5 6 7 8 9 2 3    1 - -   - - -   - - -Deal top card [4] to Player 2   5 6 7 8 9 2 3      1 - -   4 - -   - - -Top card to bottom (#1 of 2)    6 7 8 9 2 3 5      1 - -   4 - -   - - -Top card to bottom (#2 of 2)    7 8 9 2 3 5 6      1 - -   4 - -   - - -Deal top card [7] to Bessie     8 9 2 3 5 6        1 - -   4 - -   7 - -Top card to bottom (#1 of 2)    9 2 3 5 6 8        1 - -   4 - -   7 - -Top card to bottom (#2 of 2)    2 3 5 6 8 9        1 - -   4 - -   7 - -Deal top card [2] to Player 1   3 5 6 8 9          1 2 -   4 - -   7 - -Top card to bottom (#1 of 2)    5 6 8 9 3          1 2 -   4 - -   7 - -Top card to bottom (#2 of 2)    6 8 9 3 5          1 2 -   4 - -   7 - -Deal top card [6] to Player 2   8 9 3 5            1 2 -   4 6 -   7 - -Top card to bottom (#1 of 2)    9 3 5 8            1 2 -   4 6 -   7 - -Top card to bottom (#2 of 2)    3 5 8 9            1 2 -   4 6 -   7 - -Deal top card [3] to Bessie     5 8 9              1 2 -   4 6 -   7 3 -Top card to bottom (#1 of 2)    8 9 5              1 2 -   4 6 -   7 3 -Top card to bottom (#2 of 2)    9 5 8              1 2 -   4 6 -   7 3 -Deal top card [9] to Player 1   5 8                1 2 9   4 6 -   7 3 -Top card to bottom (#1 of 2)    8 5                1 2 9   4 6 -   7 3 -Top card to bottom (#2 of 2)    5 8                1 2 9   4 6 -   7 3 -Deal top card [5] to Player 2   8                  1 2 9   4 6 5   7 3 -Top card to bottom (#1 of 2)    8                  1 2 9   4 6 5   7 3 -Top card to bottom (#1 of 2)    8                  1 2 9   4 6 5   7 3 -Deal top card [8] to Bessie     -                  1 2 9   4 6 5   7 3 8

Bessie will end up with the “good cards” that have been placed in positions 3, 7, and 8 in the original deck.

代码

/*
题意 贝斯和奶牛们玩牌共n个队员玩k张牌,分牌时候,每轮先分给奶牛,再分给贝斯,每次分给一个队员牌后,将牌前面的q张牌按顺序放在后面,给出最后贝斯的排,按照从小到大排好序。
*/
#include<algorithm>
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;int n,k,p,i,j;
int q[6000010]={0},head,tail,cnt=0,a[100011];int main()
{scanf("%d%d%d",&n,&k,&p);memset(q,0,sizeof(q));for(i=1; i<=k; i++)q[i]=i;head=1;tail=k+1;cnt=0;for(i=1; i<=k; i++){if(i%n==0)//到贝斯的牌 a[++cnt]=q[head];head++;//发牌,队首出队 for(j=1;j<=p;j++) //移动p张牌到后面去 q[tail++]=q[head++];}sort(a+1,a+1+cnt);for(i=1; i<=cnt; i++)printf("%d\n",a[i]);return 0;
}

这篇关于noi.openjudge 2406:Card Stacking的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

机器学习:Voting和Stacking的模型融合实现

NLP:Voting和Stacking的模型融合实现 参考资料: 最全NLP中文文本分类实践(下)——Voting和Stacking的模型融合实现

hdu5159 Card(组合数学)BC26

/* 问题描述 桌子上有a张牌,每张牌从1到a编号,编号为i(1<=i<=a)的牌上面标记着分数i , 每次从这a张牌中随机抽出一张牌,然后放回,执行b次操作,记第j次取出的牌上面分数是 Sj , 问b次操作后不同种类分数之和的期望是多少。 输入描述 多组数据,第一输入数据组数T ,接下来T行,每行两个整数a,b以空格分开 [参数说明] 所有输入均为整数 1<=

M1 card crack

判断卡片类型 这张卡就是本次实现的对象 ,一张废弃的校园卡,以下所有操作都以此卡展开 我们使用flipper的NFC功能扫描该卡片。我们直接read 我们得出最终结果该卡是M1 1K卡,也就是S50卡 。 Mifare 1卡是属于非接触式逻辑加密卡。MIFARE MF1是符合ISO/IEC 14443A的非接触智能卡。其通讯层(MIFARE RF 接口)符合ISO/IEC 14443

HDU5159--BC--Card(概率写法,和组合写法)

概率方法 要求出和的期望,期望的基本定理, 和的期望 = 各部分期望的和。 E(sum) = E(1) + E(2) + ... + E(x) ; 每个数在b次中只有选到和没选到两种情况,在b次中被选到的概率p =1 -  (1 - 1/x)^b ; 所以每个数的期望也是 i*( 1-(1-1/x)^b ) 得到sum的期望。 #include <cstdio>#in

NOI大纲——提高组——最小生成树

最小生成树 简介 一个图中可能存在多条相连的边,我们**一定可以从一个图中挑出一些边生成一棵树。**这仅仅是生成一棵树,还未满足最小,当图中每条边都存在权重时,这时候我们从图中生成一棵树(n - 1 条边)时,生成这棵树的总代价就是每条边的权重相加之和。 一个有N个点的图,边一定是大于等于N-1条的。图的最小生成树,就是在这些边中选择N-1条出来,连接所有的N个点。这N-1条边的边权之和是所

[240623] ShellScript 视角下的 Ruby | Tiobe 2406 - C++ 超 C;Fortran 老当益壮

目录 @[TOC](目录)ShellScript 视角下的 Ruby引言Ruby 用于 Shell 脚本的优势结论 Tiobe 2406 - C++ 超 C;Fortran 老当益壮 ShellScript 视角下的 Ruby 引言 Ruby 常与 Rails 框架联系在一起,导致许多人忽略了它本身的强大。Ruby 是一门功能丰富且完整的语言,在编写 Shell 脚本方面甚至优于 P

openjudge_2.5基本算法之搜索_8783:单词接龙

概要 8783:单词接龙 总时间限制: 1000ms 内存限制: 65536kB 描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含

学习法之Stacking

本文转载自:详解stacking过程 之前一直对stacking一知半解,找到的资料也介绍的很模糊。。所以有多看了几篇文章,然后来此写篇博客,加深一下印象,顺便给各位朋友分享一下。 stacking的过程有一张图非常经典,如下: 虽然他很直观,但是没有语言描述确实很难搞懂。 上半部分是用一个基础模型进行5折交叉验证,如:用XGBoost作为基础模型Model1,5折交叉验证

openjudge_2.5基本算法之搜索_8465:马走日

题目 8465:马走日 总时间限制: 1000ms 内存限制: 65536kB 描述 马在中国象棋以日字形规则移动。 请编写一段程序,给定n*m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。 输入 第一行为整数T(T < 10),表示测试数据组数。 每一组测试数据包含一行,为四个整数,分别为棋盘的大小以及初始位置坐标n,m,

UVA 103--- Stacking Boxes

这道题在小白书中的分类是动态规划,把题AC了之后在网上看解题报告后,多数解法也是DAG上的动态规划。但其实一个简单的深度优先就能解决问题了。首先将每数从大到小排序,再将各组按照排序后的第一个数字的大小进行从大到小排序。需要注意的是,记录各组数据的编号也要和数进行同步的排序。 #include <iostream>#include <cstdio>#include <vect