摘要:
这个是约瑟夫环的变形,它要求先除去的必须是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
阅读(177)
推荐(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
阅读(149)
推荐(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
阅读(210)
推荐(0)
编辑