[poj1012]Joseph_Joseph】的更多相关文章

Joseph 题目大意:给你2*k个人,前k个是好人,后k个是坏人,编号从1到2*k.每次从上一个死掉的人的下一个开始查m个人并将第m个人杀死.问最后剩下的全是好人的m是多少. 注释:$1\le k \le 14$. 想法:开始觉得自己想的有些简单,然后发现其实就是这码事.dp. dp状态:ans[i]表示第i个死的人 转移方程:类似于Joseph问题,我们在递推时不断更改m的值,最终使得答案成立. 最后,附上 丑陋的代码... ... #include <iostream> #include…
http://poj.org/problem?id=1012 (题目链接) 半年前的考试题..任然清晰的记得那次差10分就AK... 题意 约瑟夫环,有前k个好人,后k个坏人,要求使得后k个坏人先死的最小m. Solution 很水的约瑟夫问题..半年前还是暴力模拟+打表..醉了. 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的.我们注意到原问题仅仅…
Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 52097   Accepted: 19838 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n,…
Joseph Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 493  Solved: 311 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle e…
#include<stdio.h>int a[14];int f(int k,int m){    int n,i,s;    n=2*k;s=0;    for(i=0;i<k;i++)    {        s=(s+m-1)%(n-i);        if(s<k) return 0;//遇到前k轮中有小于k的直接返回0    }    return 1;}int main(){    int i,k,n;    for(k=1;k<=14;k++)    {   …
  Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 50596   Accepted: 19239 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, stan…
Joseph Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 56348   Accepted: 21526 Description The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n,…
1.题目链接地址 http://poj.org/problem?id=1012 2k个人,前面k个是好人,后面k个是坏人,找一个数t,每数到第t时就去掉,使所有坏人在好人之前被杀掉. 思路:约瑟夫公式的应用. 2.源代码 #include<iostream> using namespace std; int test(int k, int m) { int i, j; * k; j = ; ; i < k; i++) { j = (j + m - ) % (n - i); ; } ; }…
题意: 有k个坏人k个好人坐成一圈,前k个为好人(编号1~k),后k个为坏人(编号k+1~2k) 现在有一个报数m,从编号为1的人开始报数,报到m的人就要自动死去. 问当m为什么值时,可以使得在出现好人死亡之前,k个坏人先全部死掉? 已知:k,n=2*k 求:m 分析:例子 k=3,n=6,m=5 1 2 3 4 5 6 以m=5为一循环长度报到m的编号依次为:5,4,6,2,3,1 就是长为n的数组以m为循环长度进行循环,输出报到m的编号 1 2 3 4 5 6    (黑体为报开始循环1的编…
ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜鸟之作,大牛勿喷,如有不当或补充之处,欢迎指出. 本建议书分为三个阶段,大一.大二.大三.大四暂没整理,一方面是大四要面临考验和找工作的问题,坚持继续acm的很少,另一方面,本人还没大四…… 下面以个人经验分析一下这三个阶段建议学习的内容和具体的训练计划. 正文: 大一(第一阶段): 大一是时间最充…