上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 66 下一页
摘要: 这题的状态推倒极富想象力,原来写过的代码又忘了如何去写了......题意:其实就和以前做过的一道我要长高一模一样,给定N个数字,现在要求连续的两个数字之差的绝对值乘以C最小,每个数字可以变大,变大所带来的开销为变量的平方. 状态方程为 dp[i][j] = min(dp[i-1][k] + C*|j-k| + (j-H[i]) ^ 2) if (j >= k) dp[i][j] = min(dp[i-1][k] - C*k) +C*j + (j-H[i])^2 if (j <= k) dp[i][j] = min(dp[i-1][k] + C*k) - C*j + (j-H[i]) 阅读全文
posted @ 2013-01-09 16:49 沐阳 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 变量和函数的属性包括数据类型和数据的存储类别,存储类别指数据在内存中存储方式(静态和动态),包含auto,static,register,extern四种。内存中。具体点来说内存分为三块:静态区,堆区,栈区。外部变量和全局变量存放在静态区,局部变量存放在栈区,动态开辟的内存存在堆区。 一、简要性比较extern 外部变量声明,是指这是一个已在别的地方定义过的对象,这里只是对变量的一次重复引用,不会产生新的变量。static 静态数据,数据存放在全局数据区,但作用域只是本 文件/函数 中,所以你可以在两个不同的文件/函数内部申明同名的static变量,但是 它们是两个不同的全局变量。如... 阅读全文
posted @ 2013-01-09 11:58 沐阳 阅读(11683) 评论(0) 推荐(0) 编辑
摘要: auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。static 常见的两种用途: 1>统计函数被调用的次数; 2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。在一些含有较多的变量并且被经常调用的函数中,可以将一些数组声明为static类型,以减少建立或者... 阅读全文
posted @ 2013-01-09 11:27 沐阳 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 请在(且只能在TC2.0)中运行下面代码,先不要看结果,想想会得到什么:#include<stdio.h>#include<stdlib.h>// 文章要求代码在Tc下运行 int main(int argn, char* argv[]){ char* szStringA = "Hello,world!"; char* szStringB = "Hello,world!"; *szStringA = '-'; // dev下上面的语句在执行过程中异常退出,说明dev并不允许改变字符串常量, dev下,如果查看szS 阅读全文
posted @ 2013-01-09 10:09 沐阳 阅读(1863) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/Lyush/archive/2012/03/23/2413160.html曾几何时,也写过这一题,那是刚跟着做什么状态压缩dp的时候,1844MS过的,现在终于0MS了.这次的做法有点不一样,首先原来的两个指数级的for循环嵌套,变成一个指数级嵌套一个合法状态的个数,状态的含义也发生了改变,由原来的0,1只表示覆盖,变成了0表示横向覆盖,1表示了纵向覆盖,0和1保留了更多的信息,最后采用了一种退化机制来确保一列中不出现连续的奇数个1,即如果出现了偶数个1的话,那么最后这个1就等价于0,表示下一行下的这一列为0为1均可.那么上一层的合法状态由于发生退 阅读全文
posted @ 2013-01-08 12:37 沐阳 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个矩阵,每个元素代表了一个开销,每个位置只能够由上,左,右这些位置传递过来,问从第一行走到最后一行的最少代价为多少.解法:1.最短路 若是用最短路来解这一题,我们需要进行构边,同层相邻的节点连双向边,不同层从上往下连单向边,最后设定一个超级源点和超级终点即可.代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <queue>#include <iostream>#include <algorithm>#include <ve 阅读全文
posted @ 2013-01-07 18:29 沐阳 阅读(843) 评论(0) 推荐(0) 编辑
摘要: priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解#include<iostream>#include<algorithm>#include<vector>usingnamespacestd;classpriority_queue{private:vector<int>d 阅读全文
posted @ 2013-01-07 13:43 沐阳 阅读(1696) 评论(0) 推荐(0) 编辑
摘要: 题意:完全符合树的重心:即找到一个点,其所有的子树中最大的子树节点最少.代码如下:#include <cstdlib>#include <cstring>#include <cstdio> #include <iostream>#include <algorithm>#define MAXN 20000using namespace std;//说白了这一题就是求一棵树的重心 int N, idx; // 说明有N个节点//由于节点较多,且数为稀疏图,因此采用邻接表的形式来存储struct Node { int x, next, cn 阅读全文
posted @ 2013-01-06 22:39 沐阳 阅读(840) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个数N (10 <=N <= 30),然后给你N个数,这N个数由0和1组成,这N个数可以看做是一个环.然后现在又一种操作,可以将连续的三个数进行翻转,也可以将整个序列顺时针旋转一圈.现在问是否存在通过一个操作来是的实现将所有的1都靠在一起.这题刚开始分析的时候只注意到连续的三个数的8种组合情况,然后只有四种情况是在翻转过程中产生变化的.但是这样的想法还是没有多大帮助.实在是不会了.因为我的整个思路在于去构造一个方法能够使得所有的1都连在一起.而题目只要我们输出YES或者是NO.参看了题解后恍然大悟:这里只要从奇偶性方面去思考就可以了.当我们从奇偶性去看一个状态的时候,最 阅读全文
posted @ 2013-01-06 18:57 沐阳 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 题意:介绍一种控制台下的文件目录输出格式,要求进行模拟.详见代码代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include <stack>#include <string>#include <vector>#include <algorithm>using namespace std;/* 目测应该要抽象出文件和目录这两个结构 对于文件我们可以有一个很清醒的认识,也就是说所 有的文件总是离 阅读全文
posted @ 2013-01-05 22:21 沐阳 阅读(384) 评论(0) 推荐(0) 编辑
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 66 下一页