线段树初级(区间最大数)其实就是对树进行二分查找 (当然需要结合递归)思路:要从区间中找到最大数,当然可以暴力求解,但你不怕超时吗???so 让我们来学习线段树吧!!!!!!!!!!!!!!!#include #include #include using namespace std;#de...
分类:
其他好文 时间:
2015-03-20 20:21:24
阅读次数:
115
http://acm.hdu.edu.cn/showproblem.php?pid=2037这道题乍看上去不知道从何处入手,其实只要将节目的时间从前到后排个序就可以了,注意是按结束时间的先后排序,排序方法和上次一样,建立一个结构体用sort函数排序。然后暴力求解:假设前一个节目要看完,记录下结束时间...
分类:
其他好文 时间:
2015-03-14 12:26:24
阅读次数:
105
题意:给一个图,可以染白色和黑色,但是染黑色的结点不能相邻。求最多的黑色结点个数,和一种可能的黑色结点序列。
思路:这个用回溯法还是很容易想到怎么写的。dfs每一个位置,知道所有位置dfs完。对每个位置都尝试黑色和白色。如果染黑色,那么就需要把和它相邻的结点染成白色,因为他们必须是白色,如果发现有相邻结点已经是黑色,则当前结点不能是黑色;而因为dfs后需要对辅助的全局变量进行恢复,所以这里在将相...
分类:
其他好文 时间:
2015-03-09 12:57:58
阅读次数:
155
题意:参考之前讲回溯法的最后一个问题。
思路:枚举全排列,考察每一种排列下的结果。 也可以进行剪枝优化,也是参见之前讲回溯法的部分。
这里我是用二维数组g来存边关系,但顶点还是单独保存在一个数组里,然后排序,然后求排列。
这题居然交了9次,1CE1TLE1AC6WA,CE的原因是没有包含cstring,在本地没包含可以。。。TLE原因是没有注释掉freopen。WA的原因之前一直以为是...
分类:
其他好文 时间:
2015-03-07 20:02:45
阅读次数:
315
题意:类似于8皇后问题,只不过棋盘上每个格子都有个分数,皇后所在的位置即可以得到的分数。还是8皇后问题的规则,最后求得最大可得到的分数。
思路:8皇后问题解法,在放完8个皇后后判断一下得到的分数就行了。
在 if 语句的判断内容那块竟然还写错一次,不满意~
也可以用vis[3][2*8];数组标记,然后会快一点
Code:
#include
void dfs(int cur,int s...
分类:
其他好文 时间:
2015-03-07 14:14:02
阅读次数:
177
题意:给出一些圆的半径,把所有圆放到一个矩形里,要求所有圆都必须与矩形的最下边相切,求矩形的最小长度。
本来写得很快,以为是一道水题,结果有太多情况没考虑。。我是按照最左圆的半径加上每两相切圆的圆心间水平距离再加上最右圆的半径写的,有太多情况没考虑。一会补上一个,缝缝补补的,现在都有些晕了,现在还遗漏的情况是,我只考虑了第二个圆比第一个圆能到更左,以及倒数第二个圆比倒数第一个圆能到更右,但是第三...
分类:
其他好文 时间:
2015-03-04 22:44:56
阅读次数:
163
用给定数目的单位方块,问能拼成多少种矩形。暴力求解。。#include#includeint n,i,j,ans;int main(){ scanf("%d",&n); for (i=1;i<=n;i++){ for (j=1;j<=int(sqrt(double(i)))...
分类:
其他好文 时间:
2015-03-04 22:23:13
阅读次数:
121
题意:只能交换相邻的数。要把一个数组这样交换以形成升序。问最少交换次数的不同交换顺序有多少种。
思路:还是没想到,看到别人题解中一句话,茅塞顿开:每次从头选两个需要交换的位置进行交换。只有降序才需要交换,而且可以看到每次降序的调换都是有意义的。这样每次从头找一个需要交换的位置,就是不同的方案。当某次从头扫描到尾没有需要交换的位置时,则已经排好序,就是交换次数,用一个flag变量标志。
0.02...
分类:
其他好文 时间:
2015-03-04 16:57:36
阅读次数:
128
题意:有5个数,3种运算符:加、减、乘,用全部5个数,和4个运算符,构成一个表达式,使得值为23,这里没有运算符的优先级,全部是从左往右算。是可以这么理解,题目给的是从左到右依次打了括号。
思路:这里是对表达式的位置进行dfs。可以看到第0位是数字,第1位是运算符,依次则,偶数位是数字,奇数位是运算符。dfs中把当前位置cur分为奇偶分别处理。偶数位置时,则对数字进行枚举,并计算当前表达式的值,...
分类:
其他好文 时间:
2015-03-03 22:13:21
阅读次数:
271
题意:给定一个 n x n 的棋盘,在上面放置车。其中.号表示可放置,X表示墙。在同一行或同一列的两个车,如果它们之间没有X墙挡着,则是不合法的放置。给定一棋盘,最多可以放置车的数量。
思路:枚举所有的格子,看是否可以在此放置。每次放一个车后,修改棋盘的横行、竖列直到X的位置为1,即不可放置。因为要修改棋盘,所以需拷贝一个过来,修改拷贝的。还有一些注意的,如注释,总感觉写得不是很简洁。
还有就...
分类:
其他好文 时间:
2015-03-02 21:03:07
阅读次数:
207