自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shiyukun1998的专栏

此处已废弃(跑到https://sykhhh123.github.io去了)

  • 博客(51)
  • 收藏
  • 关注

转载 [转自大牛博客] 【NIM】一个NP问题的简解

膜拜大牛Orz 居然用手推规律Orz 题目大意:在n颗石子中,第一次可取1到n-1颗,之后每次取的不超过上一次取的石子数。取完的获胜。 给出结论:当n为2的k次方时,是必败局面,否则先手必胜。(k>=1) 证明:首先,考虑n为奇数时,每次取1,对手下一次也只能取1,必胜。否则n即为偶数,是2的k1倍。 当k1为奇数时,是必

2014-12-30 16:53:22 416

原创 [UVA11605] Lights inside a 3d Grid && 数学期望

先求每盏灯被操作的概率p 那么就等于(x坐标被操作的概率)px * (y坐标概率)py * (z坐标概率)pz对于每一盏灯 设K次亮着概率d[i] 不亮概率f[i] 则 1 = d[i] + f[i]则d[i] = d[i-1] * (1-p) + f[i-1] * p = d[i-1] * (1-p) + (1-d[i-1]) * p = d[i-1] * (1 - 2*p) + p

2014-12-29 22:10:22 547

原创 [UVA11637] Garbage Remembering Exam && 概率

数学果然难得要死Orz统计无效单词相当繁琐 所以干脆统计有效的假设当前是第i个单词 那么在非环形序列中会有 max(i-k-1, 0) + max(n-i-k)个单词和它距离大于k 记为x在环形序列里 会有2 * k个位置与i相距 这里的选择有C(x, 2*k)种 单词分类全排列 有(n-2*k-1)! * (2*k)!种 这个单词在环形序列中的位置有n

2014-12-28 22:39:15 525

原创 [UVA11762] Race to 1 && 数学期望

用p(x)表示小于x的质数个数 g(x)表示x的质因数个数d[n] = 1 + d[n] * (1 - g(x) / p(x)) + sum{d[x/y] * 1 / p(x) | x % y == 0}#include#include#include#include#include#define SF scanf#define PF printfusing namespac

2014-12-27 10:58:38 396

原创 [UVA11427] Expect the Expected && 数学期望

用d[i][j]表示玩了i盘 赢了j盘 不高高兴兴去睡觉的概率转移很好转移#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 100;int n, k, m, k

2014-12-27 09:54:06 345

原创 [UVA11021] Tribles && 概率

先假设一开始是一只麻球 d[i]是i天内死亡的概率d[i] = P0 * d[i-1]^0 + P1 * d[i-1] + P2 * d[i-2]^2 + ... + Pn-1 * d[i-1] ^ (n-1)#include#include#include#include#include#define SF scanf#define PF printfusing names

2014-12-27 09:51:03 437

原创 [UVA1639] Candy && 数学期望

因为p的n+1次方很小 所以全部进行对数处理来保持精度设最后一次盒子1有i颗糖 i的概率就为 p^(n+1) * (1-p)^(n-i) * C(2*n-i, n)#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long

2014-12-27 09:48:05 437

原创 [UVA10288] Coupons && 数学期望

本以为是个水题结果输出格式暗含巨坑 说不出话来第一次不重复的概率是1 第二次不买重概率 n-1 / n 以此类推#include#include#include#includeusing namespace std;typedef long long LL;inline LL gcd(LL a, LL b){ while(b) { LL r = a % b; a

2014-12-26 22:34:45 419

原创 [UVA12230] Crossing Rivers && 数学期望

水题....#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 10;int main(){ int n, D, p, L, v, kase = 0; while(~SF("%d%d", &n,

2014-12-26 22:31:59 483

原创 [UVA557] Burger && 概率

直接组合数无奈超时Orz 去网上看了个题解 好厉害Orz#include #include #define SF scanf#define PF printfusing namespace std;int n;const int MAXN = 100000;double d[MAXN+10];int main(){ // d[i] = C(n-2, (n-2) / 2)

2014-12-26 12:43:45 908 1

原创 [UVA12063] Zeros and Ones && 数位DP

枚举1的个数就行了.....#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 70;const int MAXK = 100;LL d[MAXN+10][MAXN * 2 + 10

2014-12-25 13:20:55 621

原创 [UVA1637]Double Patience && 概率

一直以为只要连着两个数组a b 一起开就可以直接memset(a, 0, sizeof(a) + sizeof(b)) 结果果断RE了 而且一直不懂 只道hlq大神告诉我这个错了我才知道 我猜可能只有开在一行的才行吧  或者是相同类型?九维数组表示当前每一堆排的状态 然后直接枚举可行操作算概率 就这样= = #include#include#include#define dN

2014-12-23 22:36:13 820

原创 [UVA11181] Probability|Given && 概率

dfs构造n个人r个人买东西的概率作为分母 每次构造成功时给选中的人加上对应的概率就可以了#include#include#include#define SF scanf#define PF printfusing namespace std;const int MAXN = 20;int n, r, Num[MAXN+10];double P[MAXN+10], A[MAXN

2014-12-23 22:33:02 463

原创 [UVA1636] Headshot && 概率

水题 统计0的个数和00的个数然后比较就行了= = 象征性的把代码放上来#include#include#includeusing namespace std;const int MAXN = 1000;char s[MAXN+10];int main(){ while(~scanf("%s", s)) { int cnt0, cnt00, cnt01; cnt0 =

2014-12-23 22:30:23 488

原创 [CodeForces 55D] Beautiful numbers && 数位DP

凡是大于3维的状态我都莫名的想用记忆化省去一维 写法一样注意要离散化LCM值 不然数组开不下 而且CF还报一个奇怪的错 看了我好久#include#include#include#includeusing namespace std;typedef long long LL;const int MAXL = 2520;const int MAXN = 30;LL d[MAX

2014-12-23 22:29:17 350

原创 [SGU390]Tickets && 数位DP

超级难想的一道题用一棵十叉数来统计 因为是各个数位之和 所以要把之前各个数位的和sum记录下来 因为每个数位(子树)并不一定完整的分成cnt组 最后可能有剩余 所以每一个数位(子树)前面肯能会有多余的空间 用rem记录因为需要每组末的空间是在统计时不断改变的 所以dp时要同时记录组数和最后的空余实现方面 沿用上一个记忆化搜索的思路 传入两个参数unlimit1

2014-12-23 13:31:55 563

原创 [UVALive3675]Sorted bit sequence && 数位DP

我被开区间坑了啊!! 其实闭区间也不错 闭区间是INI_MAX 加个1变成开区间溢出了 坑死个人了= = 主要思路 首先要确定目标有多少个1 就把1的个数为0 1 2 的加起来 什么时候超过k了 就停止 这样就确定了1的个数然后需要在这些数里找到目标 方法是二分 然后就没有然后了负数先忽略最高位的1 然后搞完再把符号弄回来就行了 还有就是边界值为0的时候需要有一

2014-12-22 23:26:24 374

原创 [HDU3709]Balanced Number && 数位DP

递推四维状态写的我无比纠结 最后无奈弃坑 搞记忆化搜索了 这道题多的一个是要枚举支点o 然后从高位往低位考虑的时候注意力矩是否为正值#include#include#includeusing namespace std;typedef long long LL;const int MAXN = 18;const int MAXL = 2000;int bit[MAXN+10];

2014-12-22 12:48:30 331

原创 [BZOJ1026][SCOI2009]windy数 && 数位DP

不允许前导0的存在 所以先把首位非0的都统计出来 然后在把首位填上非0的数 后面的数就可以自由选择了#include#include#includeusing namespace std;const int MAXN = 15;int d[MAXN+10][MAXN+10], Cur[MAXN+10];inline int abs(int x) { return x < 0 ? -

2014-12-21 00:29:58 362

原创 [ural1057]Amount of Degrees && 数位DP

转换为B进制中1的个数问题.....注意 如果在某个B进制位上的数字>1 那么后面的每一位都变成1 (即使全部都为1也不会大于X)#include#include#include#includeusing namespace std;const int MAXN = 33;int d[MAXN+10][MAXN+10];int base[MAXN+10];int l, r,

2014-12-20 14:37:04 329

原创 [HDU3652]B-number && 数位DP

状态略复杂 d[i, j, k, f]表示i位数 首位为j的数字mod13 == f的数的种类 k == 1 包含 13  k == 0 不包含13计数的时候要注意如果输入的n某两位是13那么后面的所有数都可以加进来#include#include#includeusing namespace std;const int MAXN = 15;const int p = 1

2014-12-20 14:34:09 351

原创 [HDU2089] 不要62 && 数位DP

第一道数位DP的题 不算特别难 转移也好想 就是最后统计答案的时候注意 从高位往低位枚举的时候 一旦有不合法的值出现立即退出 后面统计的都会不合法#include#include#includeusing namespace std;const int MAXN = 10;int d[MAXN+10][MAXN+10], Cur[MAXN+10], Len;char s1[10],

2014-12-19 23:18:42 313

原创 [POJ1038]Bugs Integrated, Inc. && 状压DP

覆盖模型的状压DP 用3进制数表示i-1 ~ i行的覆盖情况 对于读入的残缺格点进行预处理标记 然后DFS构造转移一下就行#include#include#include#includeusing namespace std;const int P3 = 3 * 3 * 3, P2 = 3 * 3;const int MAXM = 10;const int MAXS = P3 *

2014-12-19 23:16:12 442

原创 [BZOJ1014] [JSOI2008]火星人prefix

这道题需要用到一个叫Rabin-Karp的算法 自行百度或者看算导 不作解释 可以看的出来这是一个字符串匹配的题目 单由于一些特殊的插入操作 使得其本身变得难以维护 所以引入splay进行维护对于树中的每一个节点 保存以其为根的子树的RK值(要包括左右子树 自己放在左右子树中间) 这样我们就可以快速的找到一个字符串的RK值对于RK值的维护 可在splay旋转过程中利用左

2014-12-15 23:10:48 522

原创 [BZOJ1875] [SDOI2009] HH去散步

这个还是想了很久 第一次见这种把边看成点的邻接矩阵 由于是无向图 两条边会一起加 第i条边过后你就不能使用第i ^ 1条边了提前记录连接起点和终点的边即可#include#include#includeusing namespace std;const int MAXM = 120;const int MAXN = 20;const int p = 45989;struc

2014-12-13 21:01:41 576

原创 [HDU4309] Seikimatsu Occult Tonneru

咋一看 这不网络扩容(UVA11245)吗 然后自信写一样的代码 结果WA一半 好吧 那个只能扩一条 这个可以扩很多条所以要枚举子集 感觉用位向量法比较方便的样子..#include#include#include#includeconst int MAXN = 200;const int MAXM = 5000;const int INF = 0x3f3f3f3f;usin

2014-12-13 20:59:17 436

原创 [BZOJ3437] 小P的牧场 && 斜率优化

如果你搞了前面的斜率优化的题 那么这道题应该不算难  考的时候脑残推错了 说不出话来  BZOJ数据显示也是坑 明明100W 后面加个,0 关键是我开1000W会直接T 坑#includeusing namespace std;typedef long long LL;const int MAXN = 1000000;LL d[MAXN+10], Q[MAXN+10], Cost[MA

2014-12-13 20:04:24 512

原创 [BZOJ3506][BZOJ1552] [Cqoi2014]排序机械臂

之前一直在调自己的delete 以为树写错了 结果居然离散化错了 坑坑坑坑坑 果然还是要多膜拜膜拜hlq大牛吗 多保留一个信息Min 用Min来进行元素的查找定位删除等等 其他没啥了。。。#include#include#includeusing namespace std;#define MAXN 100000#define INF 99999999int a[MAX

2014-12-13 19:18:16 1220

原创 [POJ3254] Corn Fields

炮兵阵地弱化版 没什么好说的= = 做完炮兵阵地这就一水题#include#include#includeconst int MAXN = 10;const int p = 100000000;const int maxs = (1 << MAXN);int Map[MAXN+10], ID[maxs+10], d[MAXN+10][maxs+10], idcnt;int n,

2014-12-12 22:49:24 354

原创 [POJ3311] Hie with the Pie && 状压DP

TPS问题 唯一不同的是不一定只经过一次 所以用Floyd处理下最短距离 其他就一样了。。。#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;const int MAXN = 12;const int maxs = (1 << MAXN);int Map[MAXN+10][MAXN

2014-12-12 21:47:54 455

原创 [POJ1185] [NOI2001] 炮兵阵地

难难难 居然每行只有几十个合法状态预处理状态 编号就开的下数组了 然后转移方程不难 就这样吧状压DP好难啊= = #include#include#includeusing namespace std;const int MAXN = 100;const int MAXM = 10;const int MAXS = 70;const int maxs = (1 <<

2014-12-12 17:18:56 327

原创 [UVA1252] Twenty Questions && 状压DP

感觉状压DP都是无比的神啊 好难想啊= =  看了LRJ分析才搞出来的 对于cnt的处理 假设某物体的特征为A 枚举到的状态为s 那么s & A这个已有特征集里面就有一个可行物体A 所以要++开始(A[i][j] - '1') 打成了(A[i] - '1') 也不报个错 长教训了#include#include#include#includeusing name

2014-12-12 13:02:16 381

原创 [UVA10817] Headmaster's Headache && 状压DP

第一道状压DP题 感觉很难搞所以看了看代码 越看越觉得LRJ牛逼 我开始还想用fgets搞 要是那么搞估计得累死 STL大琺好 好吧 说正题 = = 一开始没读清楚题目以为一个老师只能教一门课 结果居然都可以教 那其实还是挺好说的 好吧 = = 其实不算难#include#include#include#include#include#includeusing namesp

2014-12-11 23:48:28 402

原创 [HDU2829]Lawrence

四步套路 没有什么好说的= = 真心模版 Cost 前i个数两两相乘的和#include#include#includeusing namespace std;typedef int LL;const int MAXN = 1000;const int INF = 99999999;LL d[MAXN+10][MAXN+10], Q[MAXN+10], Cost[MAXN+1

2014-12-11 13:46:18 429

原创 [HDU3480] Division

定义状态 写转移方程 作差得不等式 码代码  不要用double类型的函数搞斜率 我直接T了 而且还可能出现精度问题 这道题被坑的原因是 :忘记预处理一直坑的原因是 网上有一份神犇题解 我确实不懂他的队尾维护 其实一般的维护方法就可以了= = 如果你们想研究就拿去看看吧 http://blog.sina.com.cn/s/blog_6e63f59e0101aeaf.html

2014-12-10 23:17:27 469

原创 [BZOJ1010] 玩具装箱toy && 斜率优化

朴素转移好写 但是化简需要技巧 一开始暴力化简感觉比圆锥曲线还难搞可以发现Sum[i]和i本身总是同时出现在式子中 合并为T[i] 把L 变为 L + 1能省去很多化简的繁琐步骤 化简完成后就没什么难度了 #include#include#include#includeusing namespace std;const int powAXN = 50000;typedef lo

2014-12-09 23:08:48 391

原创 [HDU3045] Picnic Cows

排序过后搞DP 状态转移方程好写 化简也不难 就不多说了 注意要把0加入队列#include#include#include#includeusing namespace std;const int MAXN = 400000;typedef long long LL;int Q[MAXN+10];LL S[MAXN+10], d[MAXN+10], A[MAXN+10];i

2014-12-09 23:04:57 487

原创 [CEOI2004] 锯木场选址

记Sw[i]为1-i的重量和 Sd[i]为1-i的路程和 w[i]为第i棵树重量设j为i的最优决策点则有F[i] =   w[1]*(Sd[j] - Sd[1])    +    w[2] * (Sd[j] - Sd[2]) + ....        + w[j+1] * (Sd[i] - Sd[j+1])   +   w[j+2] * (Sd[i] - Sd[j+2) + ...

2014-12-09 13:54:46 713

原创 [HDU2993] MAX Average Problem && 斜率优化问题

斜率优化入门问题 容易得出 arr = (S[i] - S[j]) / (i - j) 这就是一个斜率式 要让平均数尽量大 那么斜率就必须尽量大 所以要维护一个下凸曲线 这道题有一些非常神的东西 导致我不停的超时 最终总结出两点不得不做的1.scanf必须打格式控制符2.必须有读入优化如果懒得管这么多 你也可以通过直接交C++来解决这个问题 只不过时间略卡#include

2014-12-08 23:42:41 394

原创 [POJ3245] Sequence Partitioning && dp单调队列+二分

想搞这道题首先你得去把POJ3017做了 这道题是那道题的升级版 首先我们要寻找必须分在一起的数对 寻找的方法是:对B排序 A从后往前找 如果某个Ai > Bj 则该Ai 一定大于所有Bj (j 那么问题就转换成了 将缩点和的N个点分成若干组 每组最大值的和不超过Limit, 每组和S最大值最小问题 和POJ3017十分类似 POJ3017是将S作为限制给出的 这里却成了问题的

2014-12-08 23:26:14 470

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除