博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1443 Joseph+暴力打表
阅读量:6788 次
发布时间:2019-06-26

本文共 1418 字,大约阅读时间需要 4 分钟。

题目大意:k个好人,k个坏人,确定n,利用Joseph方法删除所有坏人.

由于数据规模,可以利用暴力打表,以后能打表就尽量打表。

这题原本模拟数据时间完全够的,但是测试数据有很多重复的,导致很多人超时,暗坑!!!!

以后要注意点这种情况。

打表:

#include
int main(){
int n,a[14]={
0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881}; while(scanf("%d",&n)&&n) printf("%d\n",a[n]); return 0;}

/*

题目总结: 注意学习,模拟约瑟夫循环的过程!

三个方程:

 kill=(ans+ans - 1)%sum    //下一处要删除的位置

if(kill==0)kill=sum;    //为零的特殊情况

sum--;             //人数减一

*/

#include
#include
#include
#include
#include
using namespace std;int res[16];int joseph(int n){ int ans, flag, sum; if(res[n]) return res[n]; else { for(ans = n + 1; ; ++ans) { flag = 0; sum = 2 * n; for(int j = ans; ; j += ans - 1) //人数减1 { if(j > sum) j = j % sum ? j % sum : sum; //人数减1 if(j <= n) break; else sum--; if(sum == n) { flag = 1; break; } } if(flag) { res[n] = ans; return res[n]; } } }}int main(){ int n; while(cin>>n,n) { cout<
<

转载于:https://www.cnblogs.com/amourjun/archive/2012/12/03/5134240.html

你可能感兴趣的文章
PHP和Apache的安装
查看>>
要让div中的float不会自动显示到下一行来?
查看>>
五种排序方法(选择、冒泡、快排、插入、希尔)
查看>>
位运算及其应用实例(1)
查看>>
解决cocos2d 热更是连不上https服务器
查看>>
vim相关
查看>>
捐助账号
查看>>
线程交替运行
查看>>
ubuntu10.04 –像QQ一样截屏,注解
查看>>
三年观察揭示TNF抑制剂持续改善强柱患者躯体功能的预测因子
查看>>
数据库练习
查看>>
mongodb的开机自启动
查看>>
1303: [CQOI2009]中位数图
查看>>
1011: [HNOI2008]遥远的行星
查看>>
QTP的那些事--有关一个webtable数据的获取案例
查看>>
20190520
查看>>
《Python 二三事》——python学习必看(转载)
查看>>
Minimum Spanning Tree.prim/kruskal(并查集)
查看>>
北邮14&18年软院机试【参考】答案
查看>>
MySQL查询
查看>>