2017暑假
wjsay
白色的蜻蜓,在空中忘记了飞行。
我的 github ID: zzuwenjie
展开
-
单点更新 区间查询最值 线段树 杭电hdu1754
单点更新 区间查询最值 线段树 杭电hdu1754初学线段树,觉得线段树美在它的递归实现,可以更新,RMQ算法可以实现区间查询最值,我不知道怎么修改#define _CRT_SECURE_NO_WARNINGS#include #include #include using namespace std;const int N = 200007;//线段树的节点seg原创 2017-07-11 08:27:21 · 451 阅读 · 0 评论 -
hdu1114 完全背包
完全背包的基础上变化了一点点把这几题补完了,昨晚在宿舍打题时,有点懵#include #include #include #include using namespace std;const int maxn = 507, maxW = 1e4 + 7; //最多507种货币int v[maxn], w[maxn]; int dp[maxW], n, c; //存钱罐净重c原创 2017-07-07 10:25:12 · 465 阅读 · 0 评论 -
hdu4348 为 心灵之旅To The Moon 出的 时光穿梭 题。主席树
摘自知乎:最后一刹那,心电检测仪发出永恒的线声,耳机传来主题曲,画面定格在美丽的月球,情绪被扯进澎湃的漩涡中,眼睛开始模糊时,我才明白:……原创 2017-07-16 08:52:04 · 556 阅读 · 0 评论 -
poj3321 图+树状数组
http://poj.org/problem?id=3321#define _CRT_SECURE_NO_WARNINGS#include #include #include #define N 100007 using namespace std;int bit[N], n, m, lef[N], rig[N], tot, a[N];vector > pic(N); /转载 2017-07-08 07:41:15 · 439 阅读 · 0 评论 -
spoj ORDERSET - Order statistic set Hash+树状数组。附另一种解法,使用了policy based data structrue
这个题本来是学树堆Treap练习的,但是我的板子超时,无奈之下去墙那边看了下,老外用了树状数组给解出来了,很巧妙的离散化操作。。。Orz。。。ORDERSET - Order statistic set#tree #binary-searchEnglishVietnameseIn this problem, you have转载 2017-07-17 21:52:25 · 570 阅读 · 0 评论 -
poj1442 Black Box 堆维护
前k小放在一个大顶堆里,每要插入一个数,维护这个大顶堆存前k - 1小,第k小就是小顶堆的top小顶堆存k+缓存附:今天福建省第七届大学生程序设计竞赛重现的C题很简单,就是求一个数学期望,由于n个数互不相同,所以任取两个数,都有一个较大的数,不会出现平局的情况,所以胖哥的得分期望就是n*0.5,就是填空题,不用管n张扑克牌的值。Black BoxTime原创 2017-07-18 20:03:19 · 277 阅读 · 0 评论 -
Suhana and Equation | codechef 几何级数的模和
f(N) = 00 + 11 + 22 + 33 + 44 + ... + NN 求模m的和。N很大,1e9级别,m不是很大,也就几十万。限时1s.先利用取模的性质:(i + m * k) % m = i % m。对f(N)进行等价划分:i ^ i + (i + m) ^ (i +m) + (i +2*m) ^ (i + 2*m) + ... = i ^ i + i ^原创 2017-07-31 16:03:12 · 473 阅读 · 0 评论 -
hdu5273 Abandoned country 最小生成树 概率 Kruskal算法 前向星存图
有图 Abandoned country题目大意:有n(n因为n很大所以用kruskal求最小生成树求出最小花费,然后dfs搜索回溯的办法找到所有情况每条路用过的次数并求出总花费,用总花费除以所有可能发生的次数(n*(n-1)/2)就是我们要求原创 2017-07-31 17:34:13 · 420 阅读 · 0 评论 -
一切都会好起来的
已经是准大三的人了,打完这个赛季就要退休了。回顾之前的比赛,郑大的成绩是越来越下滑。可能与学校实行卓越有关吧,因为时间上是吻合的。不过郑大会好起来的,学校从今年已经开始自主招生了,今年招了20个信息学竞赛的高中生,8点整了,不说了,打个网赛。 历年省赛榜单:2012 http://wujun8.iteye.com/blog/2091075 2013 http:/原创 2017-07-09 20:00:32 · 412 阅读 · 0 评论 -
hihocoder offer收割19th 数组重排3 八进制位操作 状态压缩
hihocoder offer收割19th 数组重排3 hiho1539哈哈,利用宽度优先搜索,求初态移到有序终态的最少步数。由于最多八个数字,8是个很好的数字,刚好可以用3个bit位存下不大于8的数字,8个不大于的数字可以用24比特位存下(一个int类型就可以存下一个数组的状态了~)。所有状态不可能超过数组长度的阶乘,因为有的状态达不到。比如21,不可能转化为12。(43210)D 这个原创 2017-07-24 09:02:00 · 611 阅读 · 0 评论 -
hdu1078 fatmouse and cheese 记忆化搜索
我是很少做动态规划的,认为做不出来,但现在必须做了。记忆化搜索,维护dp[i][j]为胖老鼠能到达的方格mp[i][j]所得到的最多的奶酪(当然是递增地走,每一移动不超过k格)。深搜#include #include #include using namespace std;const int N = 112;int mp[N][N], dp[N][N], n, k, maxV原创 2017-08-18 09:25:46 · 378 阅读 · 0 评论 -
CF The Meeting Place Cannot Be Changed 对时间进行二分
看CF Round403 讨论区里有说对距离进行二分的,二分假设可能的位置,计算所需时间,缩小时间。开始是这样想的,不过没能实现(now)。后来,我总算学会了如何去……算,对时间进行二分,缩小时间至所有人刚好可以到达。对于每一个假设的时间,计算出所有人可达到区间的交集,若有交集,说明时间给多了:反之,少了。不多不少时就是所需的最少时间。B. The Meeting原创 2017-07-26 09:29:10 · 580 阅读 · 0 评论 -
UVA 12196 Disgruntled Judge 拓展欧几里德算法
看我手写分析题目大意:有3个整数 x[1], a, b 满足递推式x[i]=(a*x[i-1]+b)mod 10001。由这个递推式计算出了长度为2T的数列,现在要求输入x[1],x[3],......x[2T-1], 输出x[2],x[4]......x[2T]. T//拓展欧几里德用法详见紫书314页#define _CRT_SECURE_NO_WARNINGS#inclu原创 2017-07-27 19:58:41 · 348 阅读 · 0 评论 -
再看 唯一分解定理 UVA Choose and divide
先用线性素数筛筛选出某一范围的素数,然后可以把若干数分解成素数相乘的多项式(大白话:小学五年级的质因子分解)。可以解决组合数问题,避免中间数据太大无法表示的问题。 以 UVA Choose and divide 为例#include #include #include #include using namespace std;const int N = 10000;bo原创 2017-07-27 21:14:13 · 331 阅读 · 0 评论 -
Lowest Common Ancestor 最近公共祖先 过了初 中级测试,附:国外大神满分简洁代码
LCA:最近公共祖先,对于有根树T的两个节点u,v,最近公共祖先LCA(T,u,v)表示一个节点x,满足x是u,v的祖先且x的深度depth尽可能大。https://www.codechef.com/LTIME14/problems/TALCA终于把LCA这棵树给调试好了,在错误中不断修改,用了新学的离线操作,还有前向星存图 也只帮我过了中级测试,高级测试TLE,因为没有发现其中的技巧原创 2017-07-19 21:59:15 · 551 阅读 · 0 评论 -
区间更新 区间和查询 带有延迟标记 线段树 hdu1698; 附:csa 区间加值,维护最大值
hdu1698成段更新(通常这对初学者来说是一道坎),需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候线段树功能:update:成段替换 (由于只query一次总区间,所以可以直接输出1结点的信息)#define _CRT_SECURE_NO_WARNINGS#in原创 2017-07-11 13:59:50 · 424 阅读 · 0 评论 -
FZUOJ 2214
http://acm.fzu.edu.cn/problem.php?pid=2214大容量背包逆向思维#define _CRT_SECURE_NO_WARNINGS#include #include #include #include using namespace std;const int maxn = 507;int dp[maxn + 1];int w[maxn]原创 2017-07-07 07:44:18 · 335 阅读 · 0 评论 -
主席树练习
spoj D-query查询区间不同数目的个数//求区间不同数的个数#define _CRT_SECURE_NO_WARNINGS#include #include #include #include using namespace std;const int N = 30007; //最多N个数const int M = N * 100;int n, q, tot; /原创 2017-07-15 19:47:13 · 268 阅读 · 0 评论 -
SPOJ3267 D-Query 树状数组离线操作 或 主席树 查询某一区间内有多少不同的数
D-Query看的网上的,不甚理解。代码中有注释。维护树状数组C[i], sum(x)指 A[1:x]中有几个不同的数字DQUERY - D-query#sorting #treeEnglishVietnameseGiven a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pai转载 2017-07-10 14:18:44 · 360 阅读 · 0 评论 -
单点更新 “区间和”最值查询 线段树解法 和 BIT解法 杭电hdu1166
对于单点更新,区间查询,更喜欢用树状数组解。hdu1166 敌兵布阵 BIT二叉索引树,树状数组版#define _CRT_SECURE_NO_WARNINGS#include #include #define N 50007inline int lowbit(int x) { return x & (-x);}int bit[N], n, a[N];voi原创 2017-07-11 07:42:54 · 265 阅读 · 0 评论 -
堆-数据结构
学习Treap前先把堆回顾一下堆堆的基本性质堆也可以说是一个完全二叉树,就是除了最底层的,其它层是满的,既然我们可以用完全二叉树来表示一个堆,那么我们这里就采用数组结构的二叉树来阐述堆的性质。 假设在这里我们用数组A表示堆,A[i]表示堆里面的第i个元素,于是我们通过二叉树的性质可知:PARENT(i) = i/2LEFTCHILD(i) = 2*iRI转载 2017-07-11 20:20:20 · 348 阅读 · 0 评论 -
记笔记
变量前有 :: 意为引用全局变量。若有正确的代码,自己写的代码错了,和正确的对拍,可以变量名不一样,可以用此方法。int *p = :: ary;那么指针p指向全局的数组。智能搜索:有时百度搜索可能会一些信息是我们不想要的。可以用搜索技巧。关键字 site:blog.csdn.net 这个搜索限定了搜索范围为csdn博客网站。原创 2017-07-11 16:14:53 · 292 阅读 · 0 评论 -
线段树讲解及例题
线段树转一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操转载 2017-07-10 18:03:26 · 1624 阅读 · 0 评论 -
主席树讲解
——————————————————————————————————————————————————————————————————————————————————————————————以下转自http://prominences.weebly.com/1/post/2013/02/1.html可持久化线段树,也叫作函数式线段树,也就是主席树,(。。。因为先驱就是fotile主席转载 2017-07-10 11:26:34 · 349 阅读 · 0 评论 -
Chaos Strings BIT类似求逆序数
Runing on judge 1 5 9 28……Accepted处理字符串,根据字符串的字典序对其进行赋予权值,接近a的权值大些,然后在按转置的字符串X' 对 X(原串)进行排序,再然后就是很裸的树状数组模板求逆序数了。Little Lovro likes to play games with words. During the last few weeks he原创 2017-07-08 13:33:23 · 352 阅读 · 0 评论 -
归并排序求逆序对数 (附另两种姿势BIT 线段树)
求逆序数 三种方法 归并排序 树状数组 线段树交换次数即为逆序对数poj1804数据范围小,int不会溢出,spoj上提价需用long long(注册spoj时,获取验证码时会访问谷歌,所以需要……)#define _CRT_SECURE_NO_WARNINGS#include #include const int maxn = 2e5 + 7;int a[maxn], b[maxn];long long cnt;//函数原创 2017-07-07 09:46:55 · 432 阅读 · 0 评论 -
FUZ2213 圆的切线问题
http://acm.fzu.edu.cn/problem.php?pid=2213define _CRT_SECURE_NO_WARNINGS#include#includeint main(){ int T; scanf("%d", &T); while (T--) { double x1, y1, r1, x2, y2, r2; scanf("%lf%lf%lf%l原创 2017-07-07 07:48:34 · 408 阅读 · 0 评论 -
codeforces 423 ABC三题题解
http://codeforces.com/contest/828A模拟题,顺着题意来#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std;int main(){ int n, a, b; while(~scanf("%d%d%d", &n, &a, &b))原创 2017-07-12 10:26:08 · 620 阅读 · 0 评论 -
Cows poj2481 树状数组应用
在纸上写写画画可以理解#define _CRT_SECURE_NO_WARNINGS//这就类似于会场安排,求区间的真子集 #include #include #include #define N 100007using namespace std;int bit[N], n;int cnt[N];//第i条线段是多少条线段的真子集 struct Cows { int s原创 2017-07-08 10:27:32 · 319 阅读 · 0 评论 -
TopCoder SRM 718
除了第一题我用C with STL写的,其他两个是java题解Problem StatementThe city of Byteland has plans to give the city a new skyline by building n new skyscrapers in a row. The skyscrapers will be numbered 0 thr原创 2017-07-13 17:40:44 · 629 阅读 · 0 评论 -
hdu3473 划分树练习
划分树解这种求区间第k大,或者在加些变化的问题,真有效,577MS,限时8s。但不看板子,还敲不出来。Minimum SumTime Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4344 Accepted Submissi原创 2017-07-13 19:36:23 · 356 阅读 · 0 评论 -
Card Trick poj3032 软2的同学,还记得这道题吗
利用vector的解法软二的同学们,还记得老师布置的POJ3032那道题吗?当时在学搜索,是练习搜索的。POJ3032 数据范围小 n <= 13。现在 n <= 20000。还用搜索肯定会超时,甚至搜不出来。最后面是我的解法,先给出正解。利用一个容器维护剩余牌的数目及位置,O(1)时间内确定下原创 2017-07-08 15:15:23 · 354 阅读 · 0 评论 -
CodeForces 424 Div2 CBA题
代码中镶嵌了很多注释,E题我想用BIT,但不知道该保存写什么值C. Jury Markstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputPolycarp watched TV-show wher原创 2017-07-14 11:07:40 · 386 阅读 · 0 评论 -
归并树讲解
划分树和快排划分有关,归并树和归并排序的归并有关。 在求解区间第k个数的问题,除了划分树以外我们还可以使用另一种高效的方法 ------ 归并树。1、算法描述 所谓归并树,就是利用线段树的建树过程,将归并排序的过程保存。(不会线段树:here,不会归并排序:here)。在说明归并树之前我们先看看这样的一个问题:[plain] view pl转载 2017-07-14 14:57:59 · 691 阅读 · 0 评论 -
查询区间第k大 POJ2104 暴力 or 划分树 or 归并树
POJ2104多次查询区间第K大法一:一次排序+暴力,7s (后面是划分树解法)#include #include #define N 100007int ary[N], id[N];bool cmp(int x, int y) { return ary[x] < ary[y];}int main(){ int n, m; while(~scanf("%d%d", &n, &m)) {原创 2017-07-12 15:44:18 · 378 阅读 · 0 评论 -
上海大学五校联赛-神无月排位赛
大多游戏题都是模拟题这场比赛毕竟是人家上海人的线下赛,网络卡的不行,这道模拟题,我初写时把一个变量fg设置为了char字符型(因为比赛结果只有输赢0或1),我习惯了节省空间,可是后来用了if(fg) 判断,不管fg = '0', ascii = 48,还是'1’49,if判断都为真。我把代码给大神了,结果错了。后来我就把char fg, 改为了int fg,再次把代码给大神,可是网络卡,再原创 2017-07-09 17:13:18 · 1310 阅读 · 0 评论