![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 75
Flintx
鲜衣怒马少年时
展开
-
WOJ1540 Fibonacci(数学推导,矩阵快速幂)
题目戳这里 题意:求斐波那契数列的前n项立方和,1<=n<=10^9,例如前3项为1^3+1^3+2^3=10. 思路:鉴于n如此大的规模,很明显不能直接求,所以需要用到矩阵快速幂的改进版 我们知道斐波那契数列第n项可以表示为矩阵 1 1 1 0 的n次方,那前n项立方和能否用矩阵的n次方来表示呢?我们可以递推来考虑: 1.如果是要求前n项和sum(f(n)),展开后我们发现: su原创 2015-04-16 00:13:08 · 462 阅读 · 0 评论 -
UESTC 1712 Easy Problem With Numbers (线段树区间修改+非互素逆元)
题意: 输入n个数与q个操作,以及一个数M. 操作有三种形式: 1.将区间[L,R]内的数都乘以一个数x; 2.将区间[L,R]内的数都除以一个数x; 3.询问区间[L,R]内所有数的乘积模除M的结果。思路:这题拖到现在才把它补了。。代码太长又手残GG 。 很裸的线段树和很裸的模运算。。但是结合在一起很是恶心啊。如果是将区间[L,R]内的数都乘以一个数x,这个很好写,原创 2015-10-14 17:57:04 · 460 阅读 · 0 评论 -
Codeforces Round #Pi (Div. 2) (STL专场)
Codeforces Round #Pi (Div. 2)A - Lineland Mail水题,拼手速。/** @author Novicer* language : C++/C*/#include#include#include#include#include#include#include#include#include#include原创 2015-08-07 00:48:20 · 870 阅读 · 0 评论 -
Gym 100342J & Gym 100345H (bitset在图论题的应用)
bitset bitset在某些常数优化以及状态保存方面被称之为神器并不为过,主要表现在以下几个方面: 1. 状态表示。试想,用一个数来表示状态的极限是64位,而bitset可以保存任意位二进制数,并且修改简单,统计方便,并且支持批量操作。 2. 常数优化。图论的题,尤其涉及不带权的邻接图,算法经常动辄 n2,n3n^2,n^3 ,这个时候我们可以用n个bitset存储每个点的邻接情原创 2015-08-30 23:24:26 · 1070 阅读 · 0 评论 -
HDU 4676 Sum Of Gcd(欧拉函数求区间gcd之和+分块算法)
HDU 4676 Sum Of Gcd题意: 给一个数列a,以及一些询问[L,R] ,求每一个询问的 ∑L≤i<j≤Rgcd(i,j)\sum_{L\leq i < j \leq R} \gcd(i,j)思路:令S(L,R)=∑L≤i<j≤Rgcd(i,j)S(L,R)=\sum_{L\leq i < j \leq R} \gcd(i,j) 例如,当 a[L:R]={4,5,8}a[L:R]原创 2015-10-04 23:08:20 · 1770 阅读 · 0 评论 -
Codeforces 589G Hiring(BIT + 二分)
2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest G.Hiring题意: 一家公司对 n 个应聘者做能力评估,要求他们在最多 m 天内完成指定工作,第 j 天可以使用办公室的时间为 tjt_j 小时。 每一个应聘者都有对应的工作要求,第 i 个应聘者每天要花 did_i 小时用于工作前准备,总工作量为 rir_i 小时(不包括准原创 2015-10-19 18:04:44 · 461 阅读 · 0 评论 -
POJ 2528 Mayor's posters (离散化 + 线段树)
强烈不推荐在POJ做这道题!!! 强烈不推荐在POJ做这道题!!! 强烈不推荐在POJ做这道题!!! 推荐去UVA 10587 或 SCU 2249 POJ的数据比较水且可能有错,一些本来错误的数据但可以水过,以及在UVA与SCU同样题目都能AC的程序在POJ莫名WA了。 建议写完程序后跑下这组数据: 1 3 1 10 1 3 6 10 好多题解的答案是2,但答案明显是3,这是原创 2015-08-20 01:53:59 · 720 阅读 · 0 评论 -
ZOJ 3886 Nico Number(筛素数+Love(线)Live(段)树)
ZOJ 3886题意: 定义一种NicoNico数x,x有以下特征: 所有不大于x且与x互质的数成等差数列,如x = 5 ,与5互素且不大于5的数1,2,3,4成等差数列,则5是一个NicoNico数。 再定义三种操作: 1.南小鸟询问[L, R]内有多少个NicoNico数; 2.果皇把[L, R]内的数全部对v取余; 3.果皇将第K个数换成X。 然原创 2015-08-17 20:12:55 · 903 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number(线段树求逆序对数目)
HDU 1394题意: 给一个由0~n-1组成的序列,求出该序列的所有循环同构序列中的最小逆序对数目,逆序对的两个元素可以不相邻。思路:这题据说可以直接暴力O(n2)O(n^2)可以水过。。 说一下线段树做法O(nlogn)O(n\log n): 以这个序列来说明: 1,9,2,3,0,8,5,7,4,61 ,9 ,2, 3, 0, 8, 5, 7 ,4 ,6我们先假设有一个长度为n元素原创 2015-08-18 01:40:35 · 1129 阅读 · 0 评论 -
Gym 100338H High Speed Trains(高精度)
Gym 100338H High Speed Trains题意: 求n个城市相互连通的方案数。思路:和HDU 4390迷之相似。 一共有n个城市,那么就有n(n−1)/2n(n-1)/2条边,每条边均有两种可能,选或不选。那么我们用ans[n]ans[n]来表示n个城市相互连通的方案数:ans[n]=2n(n−1)/2−C1n∗ans[n−1]−C2n∗ans[n−2]−...−Cn−2n∗原创 2015-08-28 23:44:48 · 725 阅读 · 0 评论 -
HDU 4313 Matrix(贪心+并查集)
HDU 4313题意:有n个节点,n-1条边,其中k个节点为危险节点,有大规模杀伤性武器,切断哪些路能使得这些大规模杀伤性武器的危险节点之间彼此不连通,且切断的边权值之和最小。思路:初始化每个节点为一个集合,并记录每个集合中危险节点的数目(0或1)。要实现权值之和尽可能的小,则要权值尽可能小,故先将n-1条边按权值先升序排序。排序后枚举这些边:若边的两端节点所在集合原创 2015-07-31 22:41:40 · 826 阅读 · 0 评论 -
HDU 4334 Trouble(hash + 枚举)
HDU 4334题意:给五个数的集合,问能否从每个集合中取一个数,使五个数之和为0.思路:集合大小是200,直接枚举的复杂度是200^5,一定会超时。直接枚举的上限是3层,我们可以将枚举剩下两个集合各任取一个元素可能组成的元素和,并将其作hash处理,使我们能很快判断枚举出来的三个集合元素和在剩下的两个集合里是否有相应元素匹配。code:/** @author Nov原创 2015-08-01 20:07:27 · 715 阅读 · 1 评论 -
HDU 4288 Coder(模拟) 附:upper_bound与lower_bound的比较
HDU 4288题意:太长。。点进去自己看吧思路:一道模拟题,但直接模拟会卡TLE,所以进行些许优化,将复杂度/5.简而言之就是用一个有序数组来模拟set。优化是利用lower_bound函数,这里简介下lower_bound 与 upper_bound 的区别:摘自:http://blog.csdn.net/weiguang_123/article/details/7原创 2015-07-27 21:50:51 · 595 阅读 · 0 评论 -
HDU 4193 Non-negative Partial Sums(想法题,单调队列)
HDU 4193题意:给n个数字组成的序列(n 思路:这题看到数据规模觉得只能用最多O(nlogn)的算法,然后想到了之前刚做过的有关最小表示法的题,但还没证明出一个做这题有效的算法出来。后来看过题解,发现用的最多的方法是单调队列,然而我对这个知识点知之甚少orz/*科普君:from单调队列单调队列是指:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只原创 2015-07-26 23:18:52 · 739 阅读 · 0 评论 -
POJ 2599 Largest Rectangle in a Histogram(DP&单调栈)
题目可以戳这里题意:连续输入n个紧挨着的宽度为1的矩形高度,求组成矩形的最大面积。分析: 这题是个好题,迄今为止我已经见到过四种解法了,最容易想到的有dp与栈操作,此外还有单调队列和斜率优化的方式,综合时间空间与代码实现难度而言,这里我推荐dp大法。 此题最关键的地方便是能否想到用边界来划分区域,只要我们确保第i个矩形的左边界与右边界之间的矩形都高于第i个矩形,那么边界内最大面积必为height原创 2015-04-17 19:48:34 · 570 阅读 · 0 评论 -
一些STL的新姿势pika~
1.next_permutation生成全排列#include<iostream>#include<algorithm>#include<string>using namespace std;int main(){//数组元素全排列 int a[4] = {6,3,7,2}; sort(a,a+4); for(int i = 0 ; i < 4 ; i++){原创 2015-04-22 17:32:26 · 572 阅读 · 0 评论 -
hdu4000 Fruit Ninja(树状数组)
题目戳这里题意:对1~n的一个排列,求所有的i<j<k且a[i]<a[k]<a[j]的个数。思路: 全局思路在于:小大中组合个数 = 小(大)(大)组合个数 - 小中大组合个数 小(大)(大)的意思是第一个元素比后两个元素要小的组合。 对于第i个数组元素,qian表示在i之前有几个比a[i]要小,hou表示i之后有几个比a[i]要大。 则小中大 组合个数= qian * hou; 小(大)原创 2015-05-16 01:16:41 · 498 阅读 · 0 评论 -
高精度模板
#include <iostream>#include <algorithm>#include <string>#include <cstring>#include <cstdio>using namespace std;const int maxn = 1000;struct bign{ int len, s[maxn]; bign()//构造函数 {转载 2015-03-29 21:11:13 · 454 阅读 · 0 评论 -
LeetCode上与树相关的问题
前言没想到大三依然课业繁重,再加上一些琐事缠身,以及自身的惰性,不少计划都是心有余力不足,但又不愿这么混下去,近来回顾了一下自己在学习算法技能树上的加点,发现一些基础算法与经典算法实在是有那么点囫囵吞枣,所以有个刷leetcode的打算,一是为了温故知新,二是为了熟悉Java或Python,三是为了保持编程手感,四是为以后工作做个铺垫?目标大概是有生之年内用Java/Python/C++/C刷一遍l原创 2016-05-18 21:12:36 · 3850 阅读 · 0 评论