模板
q390898664
这个作者很懒,什么都没留下…
展开
-
欧拉函数(例:HDU1286 找新朋友)
在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler’s totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn)原创 2015-09-06 20:27:17 · 464 阅读 · 0 评论 -
向量及其运算
结构体定义//向量结构体struct point{ double x; double y;}p1,p2;//向量加法point operator+(point p1,point p2);{ point pnew; pnew.x=p1.x+p2.x; pnew.y=p1.y+p2.y; return pnew;}//向量减法point原创 2015-10-03 15:11:58 · 476 阅读 · 0 评论 -
01背包
状态转移方程:dp[i][j] = max(dp[i-1][j], dp[i-1][j-c[i]] + w[i]) (正背) 可简化为一维方程:dp[i] = max(dp[i], dp[i-c[i]] + w[i]) (倒背) 专题链接:01背包原创 2016-07-18 20:53:16 · 1302 阅读 · 0 评论 -
POJ1014 多重背包(二进制拆分)
题目链接 题目大意:给出6个数,分别代表价值为1~6的6种物品的数量,求能否在价值相同的情况下平分这些物品。 思路:多重背包。一开始拆成01背包来做,写了三层循环,很显然结果TLE了。后来上网看了一下题解,大致意思是把每一种物品的数量拆成1,2,4,8,……这样的2的n次方数,比如将12拆成1,2,4,5四个数,这样可以用这些数字来拼凑成任意一个所需要背包的数。#include"cstdio"原创 2016-07-27 10:35:00 · 574 阅读 · 0 评论 -
凸包模版 HDU1392 Surround the Trees
题目链接题目大意给出n颗树的坐标,要用一根绳子将所有的树围起来,求绳子的最短长度。解题思路求这n个坐标能形成的最大凸包。需要特判n为1时绳子长度为0以及n为2时绳子长度为2树距离。剩下的套凸包模版即可。AC代码#include <iostream>#include <cmath>#include <cstdio>#include <cstring>#define eps 0.00000001原创 2016-05-09 11:26:51 · 662 阅读 · 0 评论 -
极角排序 POJ1696
VJ题目连接题目大意一种奇怪的虫子不能右转且走过路线之间不能有交点,吃植物才能存活,给出植物的坐标,求虫子要怎样走才能活得最久(吃的植物越多活越久)输入:样例数,n组样例,每组给出一个n,然后n行每行给出3个数,分别是植物编号、植物x坐标、植物y坐标输出:能吃的最大植物数目,并给出路线解体思路因为虫子只能左转且路线不能有交点,很容易想到让虫子逆时针螺旋地去吃植物,由外到内,可以将所有植物吃完。因为逆原创 2016-05-18 11:43:00 · 652 阅读 · 0 评论 -
矩阵快速幂 HDU1575
题目连接真·模版水题,套模版即过#include "bits/stdc++.h"using namespace std;typedef long long LL;#define mod 9973struct MATRIX{ LL m[15][15];};MATRIX IN;MATRIX E;LL n,k;MATRIX mul(MATRIX a, MATRIX b) //原创 2016-05-04 14:44:18 · 269 阅读 · 0 评论 -
矩阵快速幂 HDU1757
HDU1757原创 2016-05-04 14:17:24 · 303 阅读 · 0 评论 -
克鲁斯卡尔算法——求加权连通图的最小生成树的kruskal套路
//核心,边权由小到大依次判断增加(此处m为边的数量)for(i=1;i<=m;i++) sum+=join(e[i]);原创 2015-08-13 00:02:05 · 1328 阅读 · 0 评论 -
快速排序示例
快速排序原创 2015-08-14 10:37:51 · 328 阅读 · 0 评论 -
线段树模板
单点更新#include"cstdio"#include"iostream"#include"cstring"#include"algorithm"using namespace std;#define MAXN 50005int tree[(MAXN<<2)+10];void build(int node,int left,int right) //建树{ if(le原创 2016-08-12 09:56:32 · 214 阅读 · 0 评论