la_4727Jump ( 经典模型变形 )
来源:互联网 发布:ida pro linux 破解版 编辑:程序博客网 时间:2024/05/16 08:16
題意:
略
分析:
如果使用單純模擬的話,時間複雜度會比較大
這裡運用了DP的思想,如果知道1 到 n-1個人和k,最後退出的人的序號,那麼通過這個序號可以推算出1到n個人k的最後推出的人的序號
還不懂的建議自己去磨一下.
Code:
#include <cstdio>#include <vector>#include <cstring>using namespace std;const int MAXN = 500000;int arr[10];int location(int n, int k){ int cnt = 0; vector<int> rst; memset(arr, 0, sizeof(arr)); while( rst.size() < n ) { cnt = 0; for(int i = 1; ;) { if( !arr[i] ) { cnt += 1; if( cnt == k ) { arr[i] = 1; rst.push_back(i); break; } } i = i+1; if( i > n ) { i = 1; } } } return rst[0];}int dp(int n, int k, int base){ int cur, pre = location(base, k); for(int i = base+1; i <= n; i ++) { cur = (pre+k)%i; if( !cur ) { cur = i; } pre = cur; } return cur;}int main(int argc, char **argv){#ifndef ONLINE_JUDGE freopen("test.in", "r", stdin);#endif int n, k, cas; scanf("%d", &cas); for(int z = 1; z <= cas; z ++) { scanf("%d %d", &n, &k); printf("%d %d %d\n", dp(n, k, 3), dp(n, k, 2), dp(n, k, 1)); } return 0;}
- la_4727Jump ( 经典模型变形 )
- 经典dp模型的变形(未完待续。。)
- java排列组合变形汇总【经典】
- 【标记】hdu2955 经典变形01背包
- POJ 2976 Dropping tests (经典变形二分)
- 目标检测的变形部件模型方法
- 可变形模型(Deformable Models)简介
- hdu 5492(矩阵模型的变形)
- C语言可变形参模型解析
- Unity3D 关于模型变形技术代码实现
- unity中模型动态变形处理
- 经典软件设计模型 - 插件模型
- HMM模型经典教程
- 背包问题经典模型
- 经典软件设计模型 - MVC
- NlogN的经典模型
- 经典统计语言模型
- 002-mapreduce经典模型
- boost::asio::ip::tcp实现网络通信
- 生活在地球上:网络摘录
- file结构体和inode结构体
- FFT后的物理意义
- oracle为表分配空间建索引以及分配索引的空间
- la_4727Jump ( 经典模型变形 )
- 剑指offer:4-替换空格
- 安装windows 服务出错
- 是否出现2个事件记录,补偿
- 数据库导入错误提示:#1065 – Query was empty的处理方法
- 树套树练手题
- Check Box 的使用
- (线段树+kmp) 1828
- BlueTooth知识ABC