SRM482
250pt
题意:给定n把锁,第i轮每间隔i个打开一个木有打开的。问最后打开的事几
思路:直接vector模拟
code:
#line 7 "LockersDivOne.cpp"
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <list>
#include <stdexcept>
#include <functional>
#include <utility>
#include <ctime>
using namespace std; #define PB push_back
#define MP make_pair #define REP(i,n) for(i=0;i<(n);++i)
#define FOR(i,l,h) for(i=(l);i<=(h);++i)
#define FORD(i,h,l) for(i=(h);i>=(l);--i) typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<double> VD;
typedef long long LL;
typedef pair<int,int> PII; class LockersDivOne
{
public:
int get(int n){
vector<int> a, b;
for (int i = ; i < n; ++i)
a.push_back(i);
int res = ;
for (int i = ; ; ++i){
if (a.size() == ) break;
b.clear();
for (int j = ; j < a.size(); j++)
if (j % i == ) res = a[j] + ;
else b.push_back(a[j]);
a = b;
}
return res; }
int lastOpened(int N)
{
return get(N);
}
};
500pt
题意:A和B两个人玩汉诺塔,其中A移动汉诺塔用最快的方法,移动的步数是2^n-1步,而B用的方法可以保证每种状态恰好被访问到一次,移动的步数是3^n-1。两个人移动的伪代码都给定,问第一个人移动K步后的configuration,按照第二个人的方法需要移动多少步。
思路:先算出最终的状态。然后根据最终的状态用递归算出答案。
code:
#line 7 "HanoiGoodAndBad.cpp"
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <list>
#include <stdexcept>
#include <functional>
#include <utility>
#include <ctime>
using namespace std; #define PB push_back
#define MP make_pair #define REP(i,n) for(i=0;i<(n);++i)
#define FOR(i,l,h) for(i=(l);i<=(h);++i)
#define FORD(i,h,l) for(i=(h);i>=(l);--i) typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<double> VD;
typedef long long LL;
typedef pair<int,int> PII;
int thr[]; class HanoiGoodAndBad
{
public:
int dd, ans;
int H[][];
int top[];
void solve_Dave(int a, int c, int b, int n){
if(n > ){
if (dd == ) return;
solve_Dave(a, b, c, n-);
if (dd == ) return;
H[c][++top[c]] = n;
H[a][top[a]--] = ;
--dd;
solve_Dave(b, c, a, n-);
}
}
void solve_Earl(int a, int c, int b, int n){
if (n == ) return;
int P = ;
if (H[][top[]] == n) P = ;
if (H[][top[]] == n) P = ;
top[P]--;
if (P == c){
ans += * thr[n-];
solve_Earl(a, c, b, n-);
}
if (P == b){
ans += thr[n-];
solve_Earl(c, a, b, n-);
}
if (P == a) solve_Earl(a, c, b, n-);
}
int moves(int N, int Dave)
{
dd = Dave;
memset(top, , sizeof(top));
memset(H, , sizeof(H));
for (int i = N; i >= ; --i) H[][++top[]] = i;
solve_Dave(, , , N);
ans = ;
for (int i = ; i < ; ++i)
for (int j = ; j <= top[i]/ ; ++j)
swap(H[i][j], H[i][top[i]-j+]);
thr[] = ;
for (int i = ; i <= ; ++i) thr[i] = thr[i-] * ;
solve_Earl(, , , N);
return ans;
}
};
SRM482的更多相关文章
随机推荐
- Codeforces 757C. Felicity is Coming!
C. Felicity is Coming! time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...
- Mybatlis SQL 注入与防范
SQL注射原理 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令 ...
- 当前页面刷新和动态添加控件的jquery事件绑定on
当前页面刷新(console): location.reload() 给动态添加的控件添加js事件(委托): <ul> <li>菜单一</li> <li> ...
- swift 要点
swift 基本语法注意点 通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实现 print("Hello, world! ...
- Spring PropertyResolver 占位符解析(一)API 介绍
Spring PropertyResolver 占位符解析(一)API 介绍 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html ...
- PHP--根据手机号-淘宝平台获取归属地运营商信息
//获取手机账号信息 public function get_mobile_area($mobile){ $sms = array('province'=>'', 'supplier'=> ...
- Previous Permutation
Similar to next permutation, the steps as follow: 1) Find k in the increasing suffix such that nums[ ...
- jquery plugin 之 form表单验证插件
基于h5表单验证系统.扩展了对easyui组件的支持 先上图: 提示样式用到了伪对象的 {content: attr(xxx)}函数方法,实现提示信息能动态切换. 1.关键属性说明: type: 表单 ...
- windows下忘记mysql的root密码
1.停止mysql 2.命令行启动mysqlmysqld --defaults-file="c:\mysql\mysql server 5.1\my.ini" --console ...
- VMware设置inter共享连接出现空值
1.打开“网络和共享中心”选择“VMware Virtual Ethernet Adapter for VMnet8”网卡右键属性,选择VMware Bridge Protocol,同时设置ip自动获 ...