上一页 1 2 3 4 5 6 7 8 ··· 20 下一页
摘要: Hoax or what题意是询问一个动态序列的最小值和最大值。可以用multiset来实现。#include #include using namespace std;int main() { freopen("h.in", "r", stdin); freopen("h.ans", "w", stdout); int n; while (scanf("%d", &n) && n) { multiset bills; int sum = 0; for (int i = 阅读全文
posted @ 2013-08-26 17:21 litstrong 阅读(293) 评论(0) 推荐(0)
摘要: Frequent values题意是不同颜色区间首尾相接,询问一个区间内同色区间的最长长度。网上流行的做法,包括翻出来之前POJ的代码也是RMQ做法,对于序列上的每个数,记录该数向左和向右延续的最远位置,那么对于一个查询Q(L, R),它的答案就分成了三种情况right(L) - L,R - left(R)以及Q(L+right(L),R-left(R))。这里给出一个线段树做法,在线段树的节点上维护3个量:l_value, r_value, value分别表示以左端点为起始点,以右端点为起始点以及该区间内的最大的连续长度,更新时通过两个子区间相接的地方是否相同分不同的情况进行讨论。#incl 阅读全文
posted @ 2013-08-26 11:16 litstrong 阅读(363) 评论(0) 推荐(0)
摘要: 最近在学习进程与线程,在1,2,3看到不错的关于多线程的介绍。原来POSIX只是个UNIX标准,在这下了份Linuxthreads的代码,这有POSIX Thread Programming的介绍。当前整理的问题:1. 线程休眠,不消耗CPU周期?2. 栈是thread safe的?* 3. gcc & g++ 区别?4. 如何用多线程提高性能,能将排序提速吗,达到并行的目的?5. 信号、信号量、消息队列、共享内存 互斥器(mutex)、临界区(critical section)6. 多进程之间如何进行管理?7. 模型:生产者与消费者、哲学家进餐?8. 多处理器的影响? 阅读全文
posted @ 2013-08-23 15:30 litstrong 阅读(118) 评论(0) 推荐(0)
摘要: Book of Evil,有一颗树,n个节点,有m个节点被标记,问n个节点中,有多少个节点,这些节点与这m个节点的最远的距离小于等于d。用down[i], up[i]分别标记只考虑以i为root的子树的情况与这颗补集并上节点i的情况,两遍dfs,第一遍dfs求出down数组,第二遍求up数组,求up时,需要考虑当前节点i的父亲节点的up值以及节点i的兄弟节点的down值,然后取最大值。在求兄弟们的最大值时,由于所有的兄弟都会有这样的操作,因此可以先求出最大和次大,如果当前节点i的down值不是最大的,那么最大的一定在兄弟中,否则次大的一定是兄弟中最大的。PS: 还个算法,可以先求出树中离得最远 阅读全文
posted @ 2013-08-17 19:41 litstrong 阅读(608) 评论(0) 推荐(0)
摘要: 最近在复习数据结构,发现这套题不错,题目质量好,覆盖广,Data Structures部分包括Example,以及简单,中等,难三个部分,这几天把Example的做完了,摘要如下:通过这几题让我复习和练习了优先队列,并查集,并查集的路径压缩。总结如下:11995-I Can Guess the Data Structure!给出push,pop操作对应的序列,判定是stack, queue还是deque。用上面三个数据结构对应模拟下push,pop的操作,将结果与输出进行比对,需要注意的是如果pop一个空的数据结构时,以上三者就都不是了。#include #include #include # 阅读全文
posted @ 2013-08-16 11:59 litstrong 阅读(307) 评论(0) 推荐(0)
摘要: 多少个平方数小于等于X,二分。PS:java BigInteger。import java.util.*;import java.math.*;public class Solution { public static void main(String args[]) { Scanner in = new Scanner(System.in); BigInteger X = in.nextBigInteger(); BigInteger L = BigInteger.valueOf(1); BigInteger R = BigInt... 阅读全文
posted @ 2013-08-12 12:35 litstrong 阅读(164) 评论(0) 推荐(0)
摘要: SGU128,题意是给定N个点,问说能不能形成一个闭环G,要求G经过每个点,且在每个点处都有90度的转角,且不能出现自交。没想出来,通过这提供的思路,由于每个点处都需要90度的转弯,因此每个点处必然有一条横向以及一条纵向的路径穿过,单从某个x来看,由于上述限制,因此需要有偶数个点两两配对。然后通过搜索判断是否连通,最后再借助树状数组判断是否有自交的情况(”+”这种自交形状)出现。PS: 这里有个GDB的简单教程。#include #include #include using namespace std;const int MAXN = 10005;pair points[MAXN];vec 阅读全文
posted @ 2013-08-11 23:16 litstrong 阅读(269) 评论(0) 推荐(0)
摘要: 代码来自这里:base.html ... ... {% block nav %} {% block nav-home %}Home{% endblock %} {% block nav-about %}About{% endblock %} {% block nav-contact %}Contact{% endblock %} {% endblock %} ... about.html{% extends "base.h... 阅读全文
posted @ 2013-08-10 21:31 litstrong 阅读(166) 评论(0) 推荐(0)
摘要: Google开源项目的代码遵循的规范,见这,C++, OC。PS: vim的配色编辑用户主目录下的.vimrc即可。 阅读全文
posted @ 2013-08-10 18:34 litstrong 阅读(211) 评论(0) 推荐(0)
摘要: 再次回忆匈牙利算法和树状数组,除了算法的大概思路,其他已经不记得什么了。匈牙利算法:这个找二分图最大匹配的算法,就是不断的在当前匹配M上找这个匹配对应的一条增广路径P,根据M,P获得一个更大的匹配M',不断迭代直到找不到增广路径。树状数组:最简单的应用就是在log的时间级别更新、查询一个序列的区间和,通过维护数组数组可以在log时间内获得数组的前N项和,思路跟拆整数类似,一个整数可以拆成若干个二次幂的和,那么N项序列也可以拆成不超过logN个的2次幂个数的序列之和,C[i]用来记录A[i-2^r+1]...A[i]这些项,一共有2^r个项,r表示的是i写成二进制后末尾0的个数,有两个重 阅读全文
posted @ 2013-08-10 16:48 litstrong 阅读(283) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 20 下一页