上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要: 题意:对于一个数n,如果它能被它各个数位上的除了0的数字整除,则是good number。给定区间[a, b],问good number的数量。(a, b 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #i... 阅读全文
posted @ 2013-12-18 11:52 Plumrain 阅读(270) 评论(0) 推荐(0) 编辑
摘要: DIV1 250pt题意:对于任意一个由1~n组成的数列,其原始顺序为1,2,3..n。给出1~n的一个排列a[n],要通过swp操作将其变回原始顺序。当i a[j]时,可以进行swp操作,即swap(a[i], a[j])。问要将给定排列变回原始顺序,所需要做的swp操作的次数期望。 n a[j]时才能进行swp操作,这样就保证了不会出现环。 这道题用递归的写法比较好写,但是用递归的同时一定要注意记忆化,记忆化以后时间复杂度就是O(8!)。否则会超时。tag:概率dp 1 // BEGIN CUT HERE 2 /* 3 * Author: plum rain 4 * ... 阅读全文
posted @ 2013-12-17 15:30 Plumrain 阅读(205) 评论(0) 推荐(0) 编辑
摘要: DIV1 250pt题意:给一个整数f,则这样的正整数整数数列称为好数列:数列元素a0 >= a1 >= a2...,且a012 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include 29 #include 30 #include 31 # 阅读全文
posted @ 2013-12-17 02:04 Plumrain 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题解:f(x)表示x的各个数位的数字之和,求满足x在[a, b]之间且x = 0(mod f(x))的所有x的个数。解法:数位DP,这道题思维难度一般,但是充分体现了数位DP锻炼代码的特性。 设d[i][j][k][l]表示长度为i,各位数字之和为j,除以k余l的数的个数。具体状态转移方程见代码。tag:数位DP 1 /* 2 * Author: Plumrain 3 * Created Time: 2013-12-16 12:19 4 * File Name: DP-HDU-4389.cpp 5 */ 6 #include 7 #include 8 #include 9... 阅读全文
posted @ 2013-12-16 16:27 Plumrain 阅读(255) 评论(0) 推荐(0) 编辑
摘要: DIV1 250pt题意:给定一个正整数n(n 1,则返回vector ans = {p, q},否则返回ans = {}。解法:首先,看到题的第一想法是,枚举p。而由于n的范围太大,O(10^9)的复杂度不能接受。又想到,如果题目的限制为q > 2,那么枚举的复杂度就降到了O(10^6),可以接受了。故得到算法,特判n可不可以表示成p ^ 2的形式(注意判定p是不是质数),然后再从1到10^6枚举看n能不能表示成p^q,其中q > 2。这样,问题能够得到解决,但是编码复杂度比较高,最后我写出来只拿到了160+分。 然后看了题解,枚举q...因为10^18 12 #include 阅读全文
posted @ 2013-12-16 09:40 Plumrain 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定区间[a,b],求将区间中所有数写在黑板上,要写的数字‘1’的次数。(1 7 #include 8 #include 9 10 using namespace std;11 12 #define CLR(x) memset(x, 0, sizeof(x))13 typedef long long int64;14 int64 d[25][20];15 int dit[25];16 17 int64 mypow(int64 p, int64 n)18 {19 int64 ret = 1;20 while (n){21 if (n & 1) r... 阅读全文
posted @ 2013-12-16 00:54 Plumrain 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 题意: 将含有连续的三个6的数称为不吉利数,比如666,1666,6662,但是6266吉利。则666为第一个不吉利数,输入整数n,求第n个不吉利数。(n 7 #include 8 #include 9 10 using namespace std; 11 12 #define CLR(x) memset(x, 0, sizeof(x)) 13 typedef long long int64; 14 int64 d1[20][10][10], d2[20][10][10]; 15 16 int64 get_num(int64 x) 17 { 18 int len ... 阅读全文
posted @ 2013-12-15 23:39 Plumrain 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题意:对于一个数x,将其表示成十进制为(An,An-1...A2,A1),则F(x) = An*2^(n-1) + A(n-1)*2^(n-2) + ... + A2*2 + A1。给定整数a,b,求F()值不超过F(a)且属于[0,b]的整数有多少个。a,b 7 #include 8 #include 9 10 using namespace std;11 12 #define CLR1(x) memset(x, -1, sizeof(x))13 #define CLR(x) memset(x, 0, sizeof(x))14 15 int dit_b[20], d[20][10000... 阅读全文
posted @ 2013-12-14 19:48 Plumrain 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 题意:将含有连续的"49"的数称为不吉利数,每给出一个n,[1, n]中不吉利数的个数。n 7 #include 8 #include 9 10 using namespace std;11 12 #define CLR(x) memset(x, 0, sizeof(x))13 typedef long long int64;14 int64 d[25][3], dit[20];15 16 int64 gao(int64 x)17 {18 int64 len = 0, ret = 0;19 bool xxx = 0;20 CLR (dit);21 whil... 阅读全文
posted @ 2013-12-14 15:34 Plumrain 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 题意:定义一个数如果含有数字4,或者出现“62”则为不吉利数,否则为吉利数。比如242,8262均不吉利, 但22682吉利。求区间[a, b]中有多少个数为吉利数。 0 7 #include 8 #include 9 #include 10 11 using namespace std;12 13 #define CLR(x) memset(x, 0, sizeof(x))14 15 int s[20], d[10][3];16 17 int gao(int x)18 {19 int ret = x + 1;20 CLR (s);21 int len = 0... 阅读全文
posted @ 2013-12-14 14:50 Plumrain 阅读(283) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页