- 博客(79)
- 收藏
- 关注
原创 省赛被虐记
今年作为老队员第一次参加比赛,因为玉伟下部队了所以临时找了Final爷昊神替了玉伟的空位,压力瞬间大增,生怕一不小心坑了昊神。 果然,第一天的热身赛就坑了,一道SB宽搜我WA了三发才A,不过因为昊神足够虎所以还是没有被踩。 第二天一早我们吃完早餐就去愉快的参加比赛了~查到座位之后我们还把手机上交了。。。然后就开始愉快的做题了。发下题之后我就看前四道,发现B题是中文题,就果断去看B了,结果果然是S
2015-08-30 23:02:31
736
原创 BZOJ 3669 魔法森林 LCT
链接:【BZOJ 3669】 题意:一个无向图,每条边都有A,B两种权值,找出一条最优路径使得1~n路径上的两个权值的瓶颈之和最小。 思路:对于每条边按照A为关键字从小到大排序,枚举A的瓶颈加入边,若边的两点之间联通,则找出B最大的边并比较,若大于当前B,则将该边删去,否则不加入这条边。 代码:#include<cstdio>#include<iostream>#include<algor
2015-08-21 17:39:03
942
原创 HDU 5333 Undirected Graph 离线 LCT维护最大生成树+树状数组
传送门【HDU 5333】 题意:一个无向图,m条边,Q个询问,每个询问查询若只保留图中的连接的两个点都在L,R之间的边,图包含多少个联通块。 思路:对询问以及边按照上届R为第一关键字从小到大排序,按照从小到大加边,用LCT维护边权为L的最大生成树,对于每个询问,查询L在[L,R]区间的边的个数,联通块的数量就是n-边数。 代码:#include <cstdio>#include <iost
2015-08-21 17:19:03
1369
原创 HDU 5398 GCD TREE LCT维护贪心
HDU 5398 GCD TREE LCT维护贪心题目链接:传送门题意:找出一颗1~n的最大生成树,边的权值为连接节点的GCD。思路:贪心的考虑每条边的权值一定为较小的点的值,将1~n从大到小加入到生成树中,向其因子连边,用LCT维护一下最大生成树就好了。#include <cstdio>#include <iostream>#include <cstring>#include <algori
2015-08-21 13:10:53
1296
1
原创 BZOJ 1500 维修数列 Splay
SPLAY 模板题 代码:#include #include #include #include #define splay_pool NILusing namespace std;const int max_size=500010;const int INF=(1ll<<31)-2;struct Node { int val,size; Node *lch
2015-08-21 13:01:53
835
原创 HDU 5338 ZZX and Permutations 线段树
题目链接:HDU 5338 题意:给一个去掉括号的置换半成品,问如何加括号可以使原序列字典序最大。 思路: 思路很明确 1、肯定是贪心的考虑使靠前位置的尽量大。 2、那么就找从当前位置到之前的右括号之间最大的值与后继进行比较。 括号直接用SET维护就可以了,最大值用线段树维护。比赛的时候SB用线段树维护的右括号位置,幸亏范围小。 代码:#include <cstdio>
2015-08-01 14:31:48
865
原创 HDU 5324 Boring Class 树套树 或 CDQ分治
HDU 5324 Boring Class 树套树 或 CDQ分治题目链接:HDU 5324 题意: 给定两个序列,求一个最长的公共子序列使得第一个子序列递减,第二个递增。 思路: 将L数组的下标排序并从小到大插入,维护一个满足R的最大DP值的位置。二维。如果内存够大可以,线段树套线段树,可以用线段树套SPLAY。 代码:#include <cstdio>#include <cstrin
2015-08-01 14:18:11
1163
原创 HDU 5239 DOOM 线段树
HDU 5239 DOOM 线段树标签(空格分隔): 线段树题目链接:hdu5239 题意:给定长度为N的序列,有Q个操作,每次操作询问区间[l,r]的和,并将区间的值平方,每次输出所有之前查询答案的和对2^63-2^31取模。 思路:找规律发现任何数平方30次之后模mod都不再变化。于是用线段树维护区间内平方次数最少的元素为多少,弱最小的大于30则不进行操作,直接返回区间和,反之则继续递归直至
2015-07-27 12:43:39
1009
原创 实现两个long long 相乘取模的汇编代码
long long multi(long long tp1,long long tp2){ long long ret=0; __asm__("movq %1,%%rax\n imulq %2\n idivq %3\n":"=d"(sum[i]):"m"(tp1),"m"(tp2),"m"(mod):"%rax"); return ret;}
2015-07-27 12:30:15
1886
原创 HDU 5296 Annoying Problem 树链剖分 LCA 倍增法
HDU 5296 Annoying Problem题目链接:hdu 5296题意:在一棵给定的具有边权的树,一个节点的集合S(初始为空),给定Q个操作,每个操作增加或删除S中的一个点,每个操作之后输出使集合S中所有点联通的最小子树的边权和。思路:最小子树上的节点的充要条件: 节点为(S集合中所有点的LCA)的子节点; 节点有一个子孙为S集合中的点。 那么我们给每个节点都开一个标记
2015-07-24 16:11:15
750
原创 hdu 5297 Y sequence 容斥+迭代
hdu 5297 Y sequence 容斥+迭代题目链接:hdu 5297 题意:定义数列A为不能被表示成pow(a,b)(a>0,2<=b<=r)的正整数的升序排列。求A(n)。(0<n<2*1e18,2<=r<=62。) 思路: 思路主要分为两个部分: 首先,先求A(n)的反函数,最基本的思想是把n开次方直接取整去掉,但是由于会产生重排,所以要用容斥去搞,我的做法是先利用莫比乌斯反
2015-07-22 20:52:48
1211
原创 hdu 5255 魔法因子 打表 或者 乱搞 百度之星初赛第二场1004
题目链接:点击打开链接题意:能满足 abcde*x=ebcda的数x称为魔法因子,给定一个数,求它是不是魔法因子,若是把符合条件的数输出。思路:枚举头尾和位数,头尾固定中间的数字也就固定,可是我不会,晚上或者什么时候有空再写;但是我会打表吖~ 枚举10~1e10,判断是否存在魔法因子。cpp:打表版#include #include #include #include
2015-06-01 13:16:45
1372
原创 uvalive 6886 Flowery Trails fft
题目链接:点击打开链接题意:给定包含n个元素的集合A和包含m个元素的集合b,问集合B中有多少元素能通过从集合A中任选两个(可以重复)数字加和的得到。思路:fft模版题cpp:#include #include #include #include #include using namespace std;const int N = 10000;const int M =
2015-05-31 12:17:05
806
原创 HDU 5242 GAME 2015上海邀请赛G题
题目链接:hdu 5242 题意:给定一颗以1号节点为根节点的有向树,每个节点有一个权值,问从1号节点出发k次,能到达的所有节点的和的最大值。 思路:贪心的把树的链按照权值和从大到小剖分成若干条链(过程可以根据上交书上的熟练剖分模版做细小改动),然后根据每条链的权值排序取最大的k个就是答案。 代码:#include <cstdio>#include <cmath>#include <ios
2015-05-27 17:13:17
1801
原创 lightoj 概率dp小结
**马上要去上海邀请赛啦,为了不给老万和聪神拖后腿,我就翘课刷了点题。不过聪神让我学学数学,然后我昨天和今天刷了一天的概率dp,好像偏题了。。。**题目:kuangbin带你飞 概率与期望(貌似是lightoj上的) 地址:点击打开链接 A 题: 大意:一个人不小心掉进了一个迷宫里,然后有n个门,分为两类,第一类进去之后就可以花费x_i的时间出去,数量为a;第二类进去之后花费x_i的时间回到
2015-05-19 14:07:13
942
原创 SPOJ SUBST1 POJ 2406 POJ REPEATS 后缀数组小结
//聪神说:做完了题目记得总结,方便以后复习。SPOJ SUBST1 题目链接:点击打开链接题意:给一个字符串,求不同子串个数。思路:假设所有子串都不同,答案为len*(len+1)/2;然而不是这样... 下面我们就找出重复的子串:首先先将后缀排序,对于后缀i能生成len-sa[i]个子串,这其中有height[i]个子串与第i-1个后缀生成的子串重复了;所以答案为 le
2015-05-07 20:31:40
746
原创 求最小割边集
改f上一篇文章的时候顺便学会了求最小割边集的方法,虽然用到上一题上是错的,但是把这个方法也先总结一下;先跑一遍最大流,在残余流量里从s开始dfs凡事能从s开始能流到的点标记为1,其他的标记为0,起点为1终点为0的边集是一组最小割边集。cpp:#include #include #include #include #include #include #incl
2015-05-06 17:54:30
1762
2
原创 jag2014autumn F Reverse a Road II 网络流
题目链接:点击打开链接题意:给定一个图包含n个点,m条容量为1的有向边,问只翻转一条边能使s到t的最大流增大到多少?有多少种方法?思路:先跑一遍最大流,在残余流量里把点分为为两个集合,第一个集合包含所有从起点能到达的点,第二个集合包含所有能到达终点的点,那么答案就是起点在第二个集合终点在第一个集合的边的条数(两个集合都不包含的点忽略)。cpp代码:#include #includ
2015-05-06 17:27:09
721
原创 HDU 4300 EKMP
题目:点击打开链接题意:裸的EKMP #include #include #include#include#include#include#includeusing namespace std;#define MAXN 1000010int next[MAXN],extend[MAXN];void pre_ekmp(char x[],int m){ ne
2014-12-29 23:41:08
623
原创 hdu 5077 NAND(打表)2014 Asia regional 鞍山站 H题
题目链接:点击打开链接题意:就是一个按位运算的一个函数,问最少经过多少步运算可以得到给定数;思路:不是我投机取巧想打表,是特么这题只能打表。。。打表思想用可以得到的数的集合表示状态bfs;最后有一个需要11步的需要打将近1h,除去这一个十分钟就够了。cpp:#include #include #include #include #include using names
2014-10-22 21:54:53
1627
转载 ACM之并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程 http://acm.hdu.edu.cn/showproblem.php?pid=1232首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些
2014-09-28 15:50:19
539
转载 java 的高效读写
#include #include #include using namespace std;struct Bignb{ long long high,low; void print(int& cas) { if(high<=0) { printf("Case #%d: %I64d\n",++cas,low);
2014-09-28 15:08:54
968
原创 hdu 5047 Sawtooth 组合数学 高精度
题目链接:import java.util.*;import java.io.*;import java.math.*;public class test { public static void main(String[] args) throws IOException{ BigInteger zero=BigInteger.valueOf(0
2014-09-27 20:17:04
1588
原创 HDU 5037 FROG 贪心 2014北京网络赛F
题目链接;点击打开链接题意:有一条小河长为M的小河,可以看作一维轴,小河里存在N个石头,有一个每次能跳L米的小青蛙,随意添加石头保证青蛙能从头跳到尾的,问青蛙使用最优策略跳到对岸最多需要多少次。思路:不妨假设青蛙每个石头都要经过一次,用step表示青蛙上一次跳的步长,每跳一次对目前点到下一点的距离和step的和与L做比较,如果小与,证明青蛙可以一次跳到这,更新step和青蛙位置,cnt保持
2014-09-21 22:12:02
1924
原创 hdu 5017 ellipsoid 模拟退火
题目链接:#include #include #include using namespace std;#define INF 1e10const double eps=1e-5;int dx[8]={0,1,0,-1,1,1,-1,-1},dy[8]={1,0,-1,0,-1,1,-1,1};double a,b,c,d,e,f;double get_dis(doub
2014-09-16 15:41:22
987
原创 hdu 5014 number sequence 贪心
代码:#include #include #include #include using namespace std;int get_lentgh(const int& n){ for(int i=0;i<n;i++) { if((n>>i)==1) return i; }}int main(){ int
2014-09-15 17:07:52
521
原创 hdu 4995 暴力
题目链接:#include #include #include #include using namespace std;struct Node{ double v; int x,rank; bool operator <(const Node& a ) const{ return x<a.x; }}node[100010];void read(i
2014-09-12 21:56:04
700
原创 hdu 4990 Reading comprehension 矩阵快速幂or数论 bestcoder round 8b
链接:点击打开链接题意:给一个程序求
2014-09-08 12:38:25
559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人