- 博客(7)
- 资源 (7)
- 收藏
- 关注
原创 树分治-点分治入门
poj1741题意:给你一颗有边权的树,询问满足i点到j点距离不大于k的二元组个数。点分治的入门题目。前置技能:树的重心:即以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。在对树进行分治的时候可以避免N^2的极端复杂度(从退化链的一端出发),保证NlogN的复杂度。会求以当前树为根节点的子树中节点个数,会求以当前节点为根的子树中所有节点到当前节点的...
2018-09-27 18:50:57 147
原创 杜教BM(解决线性递推式的模板)
把递推式前几项扔进去就行了,至少扔个8项,然后mod根据题意改改,就能出结果了。太神奇了。#include<bits/stdc++.h>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define pb...
2018-09-18 20:20:56 460
原创 hdu 5919(主席树)
思路:主席树的模板题目,我们倒着插入题目就变成了,查询区间不同数的个数k,然后查询区间第(k+1)/2大。写了一下午,发现初始化写错了,初始化的cnt应该是1,还有数组大小要开36倍左右,我刚开始开的20倍一直tle。#include <stdio.h>#include <string.h>#include <algorithm>;const int...
2018-09-14 19:15:41 358
原创 hdu 5920(贪心+模拟大数)
思路:当前数位数为偶数时,我们可以取它的前一半,然后减一翻,在翻转复制一下,就可以去掉前(n/2)-1位。比如234578,取234-1=233.然后翻转复制一下位233332,然后用234578-233332即可。如果位数为奇数时,类似于上面的情况。23456,我们取234-1=233,然后取23456的前n/2位翻转后复制到后面,就变成23332,然后用23456-23332即可。如此...
2018-09-13 15:34:54 186
原创 2018 沈阳网络赛E The cake is a lie(最大圆覆盖)
完全是个板子题,二分半径套一个套一个最大圆覆盖的板子即可。#include <bits/stdc++.h>using namespace std;#define Mn 305const double eps = 1e-7;const double pi = acos(-1.0);#define sqr(x) ((x) * (x))struct Point{ do...
2018-09-08 22:55:53 376
原创 2018 icpc南京网络赛G(线段树)
思路:因为只有1e5的数据。我们可以模拟一下所有情况全算出来,把答案存下来即可。但会一遍一遍的遍历超时,我们可以优化遍历的方式,因为只有1e5的房间,我们每次找的房间都是小于当前新灯泡数且最前面的房间。这个查找用一颗线段树既可以解决。我们每次找到一个满足的房间就让当前灯泡是减去这个房间的灯泡数,然后让当前房间的灯泡数设成无穷大,更新一下线段树即可。#include <iostrea...
2018-09-03 19:46:31 473
原创 HDU - 5934 (缩点)
题意:每个炸弹都有一个花费,一个炸弹爆炸,在他的爆炸范围内炸弹都会爆炸,让你花费最少让所有的炸弹爆炸。思路:1000个点可以n方判断两个炸弹之间的关系。如果A爆炸会导致B爆炸,那么A向B连一条边。可以发现一个强连通分量里的炸弹只要一个爆炸就可以了,所以先缩点。因为入度为0的点不能被其他炸弹引爆。所以我们在入度为0的点中选择一个花费最小的即可。#include <iostream&g...
2018-09-03 18:29:56 150
javaee网盘项目
2019-02-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人