srm 537
2015-06-15 21:02
169 查看
275
Description
给定A,B,X≤200A,B,X\le 200,让你求出有多少个YY满足X∗i+Y∗jX*i+Y*j可以表示所有的A∗p+B∗qA*p+B*q
Solution
首先如果XX是A和BA和B的约数的话,显然Y是无穷多个,否则我们可以暴力枚举YY,判断X和YX和Y的线性组合是否可以表示A和BA和B,如果可以的话答案+1。
Code
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define F first #define S second typedef long long LL; typedef pair<int, int> pii; int a, b; int v[205]; bool check(int x, int y, int num) { if (num == a || num == b) memset(v, -1, sizeof(v)); if (!num) return 1; if (num < 0) return 0; int &t = v[num]; if (~t) return t; t = check(x, y, num - x) | check(x, y, num - y); return t; } class KingXNewCurrency { public: int howMany(int A, int B, int X) { int ans = 0; a = A, b = B; if (a % X == 0 && b % X == 0) ans = -1; else { for (int i = 1; i <= 200; ++i) { if (check(X, i, a) && check(X, i, b)) ++ans; } } return ans; } };
500
Description:
总共有KK天,nn个数,每个数初始给定。每天可以进行两种操作
(1)把第ii个数和spellOne[i]spellOne[i]异或(2)把第ii个数置换为第spellTwo[i]spellTwo[i]个数
求KK天后第一个房间数字的期望
Solution
考虑dp,很容易看出每个二进制位都是独立的,按位进行dp即可。dp[i][j][k]dp[i][j][k]表示到了第ii天,第jj个数,当前为k时的期望。转移很简单。
dp[i][j][kdp[i][j][k ^ (spellOne[j]>>mask(spellOne[j] >> mask & 1)]1)]+=dp[i−1][j][k]∗0.5dp[i-1][j][k]*0.5
dp[i][spellTwo[j]][k]+=dp[i−1][j][k]∗0.5dp[i][spellTwo[j]][k]+=dp[i-1][j][k]*0.5,统计即可
Code:
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define F first #define S second typedef long long LL; typedef pair<int, int> pii; const int N = 55; double dp [2]; class KingXMagicSpells { public: double expectedNumber(vector <int> ducks, vector <int> spellOne, vector <int> spellTwo, int K) { int n = ducks.size(); double ans = 0.0; for (int mask = 0; mask <= 30; ++mask) { memset(dp, 0, sizeof(dp)); for (int i = 1; i <= n; ++i) dp[0][i][ducks[i - 1] >> mask & 1] = 1.0; for (int i = 1; i <= K; ++i) for (int j = 1; j <= n; ++j) for (int k = 0; k < 2; ++k) { dp[i][j][k ^ (spellOne[j - 1] >> mask & 1)] += dp[i - 1][j][k] * 0.5; dp[i][spellTwo[j - 1] + 1][k] += dp[i - 1][j][k] * 0.5; } ans += dp[K][1][1] * (1 << mask); } return ans; } };
相关文章推荐
- ubuntu 垃圾清理
- android 项目大全,总有你所需的
- nefu1028暑假计划 01背包
- 第12章 类和动态内存分配
- [转载]Android APK反编译就这么简单 详解(附图)
- 移动端基础知识总结--从0开始
- Function.prototype.apply.call
- 十分钟写一个简单的docker
- 二叉树的深度
- 激光雷达学习笔记(四)定位
- RDD特性与操作
- mac下apache和php的简要记录
- 分享一个实现图片圆角,圆的自定义的ImageView,尽可能少的减少内存消耗。
- heritrix启动后报空指针异常
- 显示调用基类构造函数,迟绑定,VC++编译链接过程
- linux程序设计——文件锁定(第七章)
- 最佳替换算法模拟
- 【BZOJ】【1876】【SDOI2009】SuperGCD
- ArcGIS AddIN开发之自定义鼠标样式
- Material-Animations