hannibal_Iecter
hannibal_Iecter
全部文章
分类
ac自动机(7)
bitset(2)
BSGS(1)
dfs(3)
DP(19)
ODT(1)
splay(1)
ST表(2)
tarjan(2)
中途相遇法(1)
主席树(4)
二分图(1)
二叉树(1)
分块(1)
分治(3)
回文树(1)
多校(1)
字符串(1)
容斥(2)
平衡树(5)
并查集(1)
快速乘(1)
数学(9)
整体二分(1)
树链剖分(2)
模拟退火(2)
水题(1)
爬山算法(1)
矩阵快速幂(2)
线性基(1)
线段树(10)
编译器(2)
背包(2)
莫队(1)
计算几何(1)
随机数(1)
高精度(1)
归档
标签
去牛客网
登录
/
注册
hannibal_Iecter的博客
全部文章
(共98篇)
HDU - 5943【二分图】
这道题关键在于:如果区间内有两个以上的素数,那么答案一定是No; 否则的话我们要暴力的找。 如果知道1e9范围内的相邻素数最远不会超过300的话这道题就好做了。 对于大于300的区间一定存在两个素数直接输出No。 否则我们就暴力的用二分图匹配找到答案。 题目地址 #include<bits/...
2019-04-05
0
414
HDU - 5937[dfs+剪枝]
题目地址 可以知道答案的上限是36,我们可以先处理出所有的方案数。 然后dfs,对每个状态,记录一下当前的答案,dfs要搜一下要不要取当前这个方案。 剪枝的话就是如果当前的答案加上剩下所有方案数小于当前最优解的时候就不用dfs下去了。 #include<bits/stdc++.h> u...
2019-04-05
0
456
Bomb HDU - 5934[tatjan模板]
题目地址 题目不难,知道tarjan的功能就能出了。 #include<bits/stdc++.h> using namespace std; const int maxn = 1e3+5; const int eg = 1e6+5; int head[maxn], dfn[maxn]...
2019-04-05
0
360
tarjan模板
int head[maxn], dfn[maxn], low[maxn]; int st[maxn], ins[maxn], c[maxn]; vector<int>ssc[maxn]; int n, m, tot, num, top, cnt; struct node{ int v,...
2019-04-05
0
393
2018上海大都会A Simple Problem with Integers【线段树】
A Simple Problem with Integers 如果能发现对每个数多次操作后结果会存在循环节,就可以知道线段树该维护什么了。 void init() { for(int i = 1; i < 2018; i++) { int p = i; for(int j = 0;...
2019-03-27
0
410
poj2991【线段树维护向量】
我们知道当第i+1根棍子旋转的时候,i+1~n根棍子都是相对不动的,只是角度变了而已。 考虑维护每个区间内线段从起点指向终点的向量投影,那么我们要的答案就是整个区间的向量投影。 每次更新的时候只需要知道第i+1与前一个线段的夹角改变了多少,然后区间更新i+1~n的整体转角向量投影,最后别忘把更新的向...
2019-03-15
0
534
UVA - 11134【并查集+贪心】
这道题首先要知道可以讲横纵坐标分开讨论。 这样就转化为区间贪心的问题。 要注意的是要用并查集优化一下。 对左端点排序,然后从右端点找到第一个没有被使用的点。 假设i点的根节点为x,并且x在区间内,就合并:pre[x] = find(x+1)。 #pragma GCC optimize(2) #in...
2019-03-12
0
409
极角排序
struct node{ double x, y; }; double arc(double x1, double x2, double y1, double y2) { return x1*y2-y1*x2; } double arc(node a, node b, node c) { ...
2019-03-12
0
364
埃及分数【迭代加深】
关于迭代加深,个人认为和dfs的区别在于如果知道答案的深度可以用dfs,相反如果不知道深度的话可以考虑用迭代加深。 #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long lon...
2019-03-11
0
402
二叉树前序中序后序
int last[maxn], mid[maxn], first[maxn], lc[maxn], rc[maxn], tot, val[maxn]; int newnode() { tot++; lc[tot] = rc[tot] = val[tot] = -1; return tot; ...
2019-03-06
0
379
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页