2012年8月22日
摘要: 这个是约瑟夫环的变形,它要求先除去的必须是K个以后的人。因为k<14,可以直接暴力。View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int f[20]; 5 int res[20]; 6 7 int get_f(int y, int x, int m) 8 { 9 if (x == y)return (m-1)%x;10 return (get_f(y-1,x,m) + m)%y;11 }12 13 void prepare()14 {15 int ind(0); 阅读全文
posted @ 2012-08-22 21:55 Dev-T 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 状态DP#include<iostream>#include<cstdio>#define MAXN 23#define MAXM 1500000using namespace std;int x,y;int bx[MAXN],by[MAXN];int dis[MAXN][MAXN];int dp[MAXM];int way[MAXM];int n;int num;void get_dp(int x){ if (dp[x] != 0)return ; for (int i(0); i<n; ++i) { int k = 1<<i; if (k > 阅读全文
posted @ 2012-08-22 19:13 Dev-T 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 约瑟夫环的二进制解法。当n=2*k,序列1:1,2,3...2*k序列2:1,3,5..2*k-1(k个)序列3:1,2,3...k所以有f(2*k) = 2*f(k) - 1。当n=2*k-1,序列1:1,2,3...2*k-1序列2:3,5,7...2*k-1(k个)序列3:1,2,3...k所以有f(2*k+1) = 2*f(k) + 1。View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 typedef long long int ll; 5 6 ll get_nu 阅读全文
posted @ 2012-08-22 00:56 Dev-T 阅读(209) 评论(0) 推荐(0) 编辑