摘要:
密码:1234561001http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1001&cid=16288&hide=0模拟题目,不过在pos赋初值的时候弄错了,我的pos要的到的值是0-n-1而我给赋值成0了,因为我要用它来判断。所以纠结了老久了才检查到。这种错误很难找的。提醒一下自己认真!View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 5007using namespace st 阅读全文
摘要:
不转不行,太有意思:来自:http://blog.csdn.net/nnnnyyyy/archive/2011/05/10/6410554.aspx最欣赏的是这个:以下是原文:偶是一个程序员。偶的生活很简单.确切地,用两个词,来说,就像偶写的代码一样,单调且无聊。早上七点被手机叫醒:睁开眼,刷牙,洗脸,吃早饭八点半到办公室是必须的,然后开始一天工作:那什么时候下班昵?偶不知道是会是几点钟:从日出到日落,从星期一到星期天,日子就像是写错了代码产生的一个死循环:每周双休?对偶来说只能是一种奢望:平时,他们都叫偶:X工。其实只有偶最清楚,X工不是说偶是一个姓X的工程师,而是一个姓X的民工:偶没有钱, 阅读全文
摘要:
这一块关键理解延迟标记(或者说懒惰标记)lz[],就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新或者询问到的时候再更新。这里主要包括两个方面:1:成端替换; 2:成端累加(累减);hdu 1698http://acm.hdu.edu.cn/showproblem.php?pid=1698题意:给定n个连续的奖牌(每个奖牌都有一个价值),初始都为铜牌。有q个操作X,Y,Z,将区间[x,y]内的奖牌的价值改为Z,问经过q个操作后总的价值为多少。思路:就是典型的成段替换,lz标记,关键是注意将lz pushdown。。View Code #include<iostream 阅读全文
摘要:
问题描述:对于任何正整数x,起约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数.现在给一个N,求出不超过N的最大的反素数.比如:输入1000 输出 840思维过程:求[1..N]中约数在大的反素数-->求约数最多的数如果求约数的个数 756=2^2*3^3*7^1(2+1)*(3+1)*(1+1)=24基于上述结论,给出算法:按照质因数大小递增顺序搜索每一个质因子,枚举每一个质因子为了剪枝:性质一:一个反素数的质因子必然是从2开始连续的质数.因为最多只需要10个素数构造:2,3 阅读全文
摘要:
并查集结构: for (i = 0; i <= n; ++i) f[i] = i;查找祖先:int find(int x){ if (x != f[x]) { f[x] = find(f[x]); } return f[x];}合并操作:经常使用的:void Union(int x,int y){ x = find(x); y = find(y); if (x != y) { f[y] = x; num[x] += num[y];//根记录子系的个数 }}还有一种写法:void Union(int... 阅读全文
摘要:
结构:struct node{ int flag; node *next[27];}*head;生成节点:/*动态分配内存*/node * newnode(){ int i; node * p = new node; // c语言用(node * )malloc(sizeof(node), 这里是动态分配内存,时间上可能消耗的多一些 p->flag = 0; for(i = 0; i < 26; i++) p->next[i] = NULL; return p;}/*静态分配内存*/node T[1000000];int t = 0... 阅读全文