上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页
2013年7月26日

SPOJ HAN01(典型汉诺塔)

摘要: 暑期个人赛第二场Problem A题意:给一挪动次数,要求写出此时的汉诺塔上的状态.思路:汉诺塔的典型利用,用递归实现即可。代码入下:#include #define M 64 long long n, k; int ai, bi, ci, a[M], b[M], c[M]; void f(int i, int x) { if(i==1) a[ai++] = x; if(i==2) b[bi++] = x; if(i==3) c[ci++] = x; } long long pow(int x, int o) { if(o==0) return 1; ... 阅读全文
posted @ 2013-07-26 16:16 Primo... 阅读(117) 评论(0) 推荐(0) 编辑

SPOJ RENT(简单动归)

摘要: 暑期个人赛第四场快被这道题搞死了。又是题意理解有误题意:有n个订单,每个订单有开始时间,占用时间,愿意支付的money3个参数,要求在这n个订单中选择不冲突的的订单使得money总和最大。思路:对订单的开始时间或者结束时间排序,然后用动归求最优解,如果对开始时间从小到大排序,则动归顺序应从后向前,如果对结束时间从小到大排序,则动归顺序应该从前向后。对于每个订单决策就是选择or丢去状态:dp[i]表示到第i个订单时,money所能取得的最大值状态转移:dp[i] = max(dp[i-1], dp[x]+piece[i]);代码如下:#include #include #include u... 阅读全文
posted @ 2013-07-26 15:12 Primo... 阅读(190) 评论(0) 推荐(0) 编辑

SPOJ MARBLES(简单组合)

摘要: 暑期个人赛第四场题意:把n个求分给k个颜色,思路:转化一下,将球的n-1个空隙插上隔板,那么答案就是c(n-1,k-1);代码如下:#include long long c(int n, int k) { if(n-k double c(int n, int k) { if(n-k<k) k = n-k; double c = 1.0; for(int i = 1; i <= k; ++i) c = c*(n-i+1)/i; return c; } int main () { int n, k, t; scanf("%d", &t); ... 阅读全文
posted @ 2013-07-26 12:21 Primo... 阅读(122) 评论(0) 推荐(0) 编辑

cf_332A - Down the Hatch!(水题)

摘要: 水题一道,就是题目描述太坑了。。。题意:对于每个序号为k*n+1的位置,若此位置前面三个字母是相同的,则答案加1.代码如下:#include char str[4000005]; int main () { int n; scanf("%d",&n); getchar(); gets(str); int ans = 0; for(int i = n; str[i]; i+=n) { if(str[i-1]==str[i-2]&&str[i-2]==str[i-3]) ans++; } ... 阅读全文
posted @ 2013-07-26 08:18 Primo... 阅读(104) 评论(0) 推荐(0) 编辑
2013年7月25日

hdu4619 - Warm up 2(联通图or贪心0r二分图匹配)【待完善】

摘要: 这道题好多种做法,,,1、联通图。 由于题目特点,这道题可以转化为求图的该图的各个子联通图,每个包含x个点的联通图都可以最多得到不重叠的x/2个牌。注意这句话:很重要的(It's guaranteed the dominoes in the same direction are not overlapped, but horizontal and vertical dominoes may overlap with each other.)代码如下:#include #include #include using namespace std; #define M 2005 int n, 阅读全文
posted @ 2013-07-25 21:31 Primo... 阅读(125) 评论(0) 推荐(0) 编辑

hdu4618Palindrome Sub-Array(乱搞)

摘要: 多校联赛第二场1008结题报告上竟然给的是乱搞二字。题意:从矩阵中找最大的正方形子矩阵使得每行每列的数字是符合回文。输出最大的边长。1、动归 状态;dp[i][j][k]表示以(I,j)为左上角坐标点且边长为k的子矩阵是否符合回文。状态转移:dp[i][j][k] = 1 (如果dp[i-1][j-1][k-2]==1&&外围的四条边上的数字符合回文, 否则dp[i][j][k]=0)dp[i-1][j-1][k-2]就是dp[i][j][k]的内层的小矩阵,为了使得dp[i][j][k]表示的矩阵符合条件,则小矩阵符合回文是状态转移的一个重要条件,代码如下:#include 阅读全文
posted @ 2013-07-25 20:16 Primo... 阅读(98) 评论(0) 推荐(0) 编辑
2013年6月20日

uva590 - Always on the run(简单动归)

摘要: 状态:dp[i][j]表示第i天到达j号城市的最小花费状态转移:dp[i][j] = min(dp[i-1][k]);注意边界是dp[0][1] = 0,而不是dp[1][1] = 0;代码如下:#include #include #define N 15 #define K 1005 #define INF 0x7fffffff int n, k, d, dp[K][N], a[N][N][K]; int main () { int tt = 0; while(scanf("%d %d",&n,&k),n+k) { for(int i = 1; i... 阅读全文
posted @ 2013-06-20 22:56 Primo... 阅读(138) 评论(0) 推荐(0) 编辑

uva10651 - Pebble Solitaire(状态压缩)

摘要: 状态压缩+记忆化搜索状态压缩对位运算要求的较多。对位运算不熟的话就复习一下吧。纯正的暴力然后用记忆化搜索剪枝。碰到合适的情况就转移。【向右或向左】求最后在棋盘上剩余最少的棋子数目。代码如下:#include #include #include using namespace std; #define N 4500 int dp[N]; char s[25]; int dfs(int total) { int &ans = dp[total], temp; if(ans!=-1) return ans; ans = 0; for(int i = 0; i <... 阅读全文
posted @ 2013-06-20 20:57 Primo... 阅读(116) 评论(0) 推荐(0) 编辑

选中的磁盘具有MBR分区表。在EFI系统上,windows只能安装到GPT

摘要: 目前我们可以接触到的大部分pc依然采用上世纪遗传下来的 BIOS + MBR 组合。 BIOS,基本输入输出系统 (Basic Input-Output System),是软件与硬件之间的一个接口,可以把它看作一个翻译在中文与英语之间,虽然两者完全不同,不过可以让大家了解 BIOS 所处的位置,BIOS 通常被写入一块 ROM 芯片连接在主板上,当然也有直接写入北桥的,不过相当少见。 BIOS 几乎是完全用汇编语言编写,很大程度上决定了主板的性能及稳定性,就像是同声翻译的速率和准确性一样。华硕主板 (ASUS) 加入 AI 人工智能的 P4P800 被称为世界上最聪明的主板,当然是华硕自称的。 阅读全文
posted @ 2013-06-20 19:34 Primo... 阅读(2737) 评论(0) 推荐(0) 编辑

GPT转MBR分区格式图文教程

摘要: 在转换之前,首先让我们了解一下什么是GPT?为什么要转换?GPT:GUID Partition Table (GUID 分区表 磁盘分区样式支持最大卷为 18 EB (exabytes) 并且每磁盘最多有 128 个分区)我们可以到“磁盘管理”里面,右键点击下方的磁盘型号,看弹出的菜单,若有“转换为GPT磁盘”字样,说明你的硬盘分区是MBR模式;若有“转换为MBR磁盘”字样,说明你的硬盘分区是GPT模式。不过:如果你安装的是Win7(无论32位还是64位),你的硬盘分区肯定是MBR模式。如果你安装的是32位的Win8,你的硬盘分区仍然是MBR模式。只有你安装的是64位的Win8,你的硬盘分区才 阅读全文
posted @ 2013-06-20 18:55 Primo... 阅读(217) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页