随笔分类 - ACM/算法/数据结构
摘要:01背包,求第k大。 以前看k短路的时候看过代码以为懂了 = =结果还是跑去看了别人的代码才会。果然要自己写一遍才行啊 0.0难得1A。。 每次把可能的2k种求出来,求前k个。注意要不一样的k个数。。
阅读全文
摘要:思路一下子就想到了,转移方程却没想好,看到网上一个的思路相同的代码,改的转移方程。 同时dp全部初始化为负无穷,需要注意一下。 AC代码如下:
阅读全文
摘要:题意:给指定数量的数字“1”,“2”,“3”……,“9”。用所有这些数字加上任意个0组成一个数,要求数能被11整除,且数的位数尽量小。 能被11整除的数有一个特点,奇数位数字之和与偶数位之和的差为11的倍数。 所以想到把所有数字分成两部分,即奇数位部分和偶数位部分,两部分的差相0即能被11整除(MO
阅读全文
摘要:dp[i][j] := 前i个数和为j的情况(mod p) dp[i][j] 分两种情况 1.不选取第i个数 -> dp[i][j] = dp[i-1][j] 2. 选取第i个数 -> dp[i][j] = dp[i-1][t] ((t+a[i])%p==j) (为什么很简单的题,思路也有了,比赛的
阅读全文
摘要:wa了好久,我只想知道 什么意思,为什么要加这句?
阅读全文
摘要:m个城市 n张车票 一个车票用一次 两条路径之间需要走长度除车票上马车数 求城市a到城市b的最快时间 不能到达就输出Impossible dp[s][v] 现在在城市v, 剩下车票的集合为s。 《挑战程序设计》P195
阅读全文
摘要:题意: John 有一个豪华的M*N个格子组成的新牧场 他想种美味的玉米 但是有些位置不能种 而且他种地不选择相邻的格子 求所有可能的种地方法 (不种也算一种选择)输入:第一行M和N, 第二行M*N地图,1代表该方格可以种地 0代表不可以种地输出:方法数 % 100000000. 开始读题读错( n
阅读全文
摘要:官方题解: The problem is just to calculate g(N) = LCM(C(N,0),C(N,1),...,C(N,N)) Introducing function f(n) = LCM(1,2,...,n), the fact g(n) = f(n+1)/(n+1) h
阅读全文
摘要:题意:给n个数,第一个人选取相邻两个递降的数交换顺序,第二个人一半的概率选取相邻两个递降的数交换顺序,一半的概率选取相邻两个递增的数交换顺序。两个人轮流操作,求整个数列变成递增数列所需交换次数的期望。 题解:首先显然要求逆序对数,记为cnt。想了很多计算概率加组合数等,没算出来= = 后来看了题解找
阅读全文
摘要:C. Jeff and Rounding time limit per test: 1 second memory limit per test: 256 megabytes input: standard input output: standard output C. Jeff and Roun
阅读全文
摘要:求n^k的前三位数字和后三位数字。 范围: n (2 ≤ n < 231) and k (1 ≤ k ≤ 107). 前三位: 设 n^k = x > lg(n^k)=lg(x) > klg(n)=lg(x) > x=10^(klgn). 因为求前三位,klgn大于2的整数部分可以舍弃。bit=fl
阅读全文
摘要:第二次做数位DP,做了好几个小时,我先哭一会 = = 和hdu2089做法相似,不过细节要多考虑。 首先一个数如果为B的次方和,那么用B进制表示,符合要求的数一定是一串只有0和1的数字,并且1的个数为k。 dp[i][j] 表示i位数,首位为j的符合要求的数有多少个。 递推公式dp[i][j]=dp
阅读全文
摘要:第一次做数位dp的题,虽然是入门题,真的是想了好久才想明白。 dp[i][j] 表示i位数,首位是j的数字有多少符合要求的。 很容易得到递推公式 : 如j=4时:dp[i][j]=0 j!=4时: 如何根据数组dp求对于一个数n,0~n满足要求的数呢? 对于一个数,例如335,对应dp[3][3],
阅读全文
摘要:The mook jong 问题描述 ZJiaQ为了强身健体,决定通过木人桩练习武术。ZJiaQ希望把木人桩摆在自家的那个由1*1的地砖铺成的1*n的院子里。由于ZJiaQ是个强迫症,所以他要把一个木人桩正好摆在一个地砖上,由于木人桩手比较长,所以两个木人桩之间地砖必须大于等于两个,现在ZJiaQ想
阅读全文
摘要:第一反应就是和那个搞基的虫子的题很像(poj2492 http://www.cnblogs.com/wenruo/p/4658874.html),不过是把种类从2变成了3。 错在很白痴的地方,卡了好久…… 代码: 并查集模板:
阅读全文
摘要:火星人的血缘关系很奇怪,一个人可以有很多父亲,当然一个人也可以有很多孩子。有些时候分不清辈分会产生一些尴尬。所以写个程序来让n个人排序,长辈排在晚辈前面。 输入:N 代表n个人 1~n 接下来n行 第i行表示第i个人的孩纸,无序排列,可能为空。0代表一行输入结束。 (大概我的智商真的不合适,否则怎么
阅读全文
摘要:字母:K, A, N, C, E 表示逻辑运算 字母:p, q, r, s, t 表示逻辑变量 0 或 1 给一个字符串代表逻辑表达式,如果是永真式输出tautology 否则输出not 枚举每个逻辑变量的值,5个变量,共2^5种情况,对于每种情况都为真则为永真式。 代码:
阅读全文
摘要:简单贪心。 从左边开始,找 r 以内最大距离的点,再在该点的右侧找到该点能覆盖的点。如图。 自己的逻辑有些混乱,最后还是参考书上代码。(《挑战程序设计》 P46)
阅读全文
摘要:把输入数字每次从9-2除,能整除则记录该数字,最后从小到大输出。 应该算是水题,不过窝第一次写高精度除法,虽然1A,不过中间改了好多次。
阅读全文
摘要:《挑战程序设计》 P34 第一次使用pair 1.头文件:<utility>2.成员:mypair.first, mypair.second3.运算符:<、>、<=、>=、==、!=,其规则是先比较first,first相等时再比较second4.相关函数:make_pair 例如:p=make_p
阅读全文