自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不慌不忙、不急不躁

https://github.com/JeraKrs

  • 博客(100)
  • 收藏
  • 关注

原创 【索引】2015 ACM/ICPC Asia Regional Online

2015 ACM/ICPC Asia Regional OnlineProblem 1001: hdu 5484 Monitor the AlpacasProblem 1002: hdu 5485 The Relationship in ClubProblem 1003: hdu 5486 Difference of ClusteringProblem 1004

2015-10-02 21:33:21 2092

原创 poj 2774 Long Long Message(后缀数组)

题目链接:poj 2774 Long Long Message代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 100005 * 4;struct Suffix_Arr { int n, s[maxn]; int SA[maxn], rank[

2015-10-30 23:49:26 519

原创 poj 1743 Musical Theme(后缀数组)

题目链接:poj 1743 Musical Theme代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 2 * 1e4 + 5;struct Suffix_Arr { int n, s[maxn]; int SA[maxn], rank[ma

2015-10-30 23:48:19 420

原创 uva 1569 - Multiple(最短路)

题目链接:uva 1569 - Multiple代码#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 5005;const int inf = 0x3f3f3f3f;int N, M, A[maxn], D[maxn], P[

2015-10-30 23:45:50 699

原创 uva 10798 - Be wary of Roses(最短路)

题目链接:uva 10798 - Be wary of Roses代码#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 23;const int maxm = 11;const int dir[][2] = {{0, 1},

2015-10-30 23:44:10 796

原创 uva 10457 - Magic Car(最小瓶颈树)

题目链接:uva 10457 - Magic Car代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1005;const int inf = 0x3f3f3f3f;struct Edge { int u, v, w; Edge(int u

2015-10-30 23:42:47 658

原创 hdu 4651 Partition(公式)

题目链接:hdu 4651 Partition解题思路本质上其实是一个完全背包,但是物品有1e5,所以复杂度太大。有一个五边形数的公式可以优化。代码#include <cstdio>#include <cstring>#include <algorithm>/* * 五边形数:f(n) = sum( (-1)^(k+1) [ P(n-k(3k-1)/2) + P(n-k(3k+1)/2)]

2015-10-30 23:29:38 676

原创 hdu 4849 Professor Tian(dp)

题目链接:hdu 4849 Professor Tian解题思路将20位分开考虑,考虑最后为1的概率。代码#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int maxn = 205;double P[maxn], dp[maxn][2];int

2015-10-30 23:26:28 545

原创 hdu 4648 Magic Pen 6(贪心)

题目链接:hdu 4648 Magic Pen 6解题思路将边权拆成等价两份分别加到两个节点上,但是考虑边权可能是奇数,所以将所有权值翻倍,最后答案除2即可。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 1e5

2015-10-30 23:24:19 477

原创 hdu 4647 Another Graph Game(高效)

题目链接:hdu 4647 Another Graph Game解题思路P[i]维护的为前缀取模M为i最早出现的位置。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 1e5 + 5;int N, M;ll W[

2015-10-30 23:20:37 538

原创 hdu 4643 GSM(几何)

题目链接:hdu 4643 GSM代码#include <cstdio>#include <cstring>#include <cmath>#include <vector>#include <algorithm>using namespace std;const double eps = 1e-10;inline int dcmp(double x) { if (fabs(x)<eps)

2015-10-30 23:18:54 588

原创 zoj 3914 Semantic Version(模拟)

题目链接:zoj 3914 Semantic Version代码#include <cstdio>#include <cstring>#include <vector>#include <string>#include <algorithm>using namespace std;const int maxn = 100;int P, N;char a[maxn], b[maxn];v

2015-10-29 14:59:56 679 3

原创 hdu 4642 Fliping game(博弈)

题目链接:hdu 4642 Fliping game代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main () { int cas, n, m, x; scanf("%d", &cas); while (cas--) { scanf("%d

2015-10-28 22:01:17 597

原创 hdu 4640 Island and study-sister(最短路+状压dp)

题目链接:hdu 4640 Island and study-sister解题思路用二进制数表示2~n的点是否移动过的状态,dp[s][i]dp[s][i]表示状态s上的点必须经过并且当前在i节点的最小代价, 这步用类似最短路的方式求出。 然后是dp2[i][s]dp2[i][s]表示i个人移动过s状态的点的最小代价。代码#include <cstdio>#include <cstring>#

2015-10-28 22:00:11 827

原创 hdu 4639 Hehe(斐波那契)

题目链接:hdu 4638 Hehe解题思路连续i个he的替换总数为斐波那契数的i+1项,剩下的乘法原理。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 10086;const int mod = 10007;int N, f[maxn + 5];c

2015-10-28 21:56:19 545

原创 hdu 4638 Group(树状数组)

题目链接:hdu 4638 Group代码#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#define lowbit(x) ((x)&(-x))const int maxn = 100005;typedef pair<int,int> pii;int

2015-10-28 21:54:11 692

原创 hdu 4637 Rain on your Fat brother(几何+区间覆盖)

题目连接:hdu 4637 Rain on your Fat brother解题思路题目等价于求线段与雨水的交,t为mazi停下来的时间,妹子移动相对于雨水的移动路线为(x,0)−(x−V1∗t,V∗t)(x,0)-(x-V1*t, V*t),然后求出线段与每个雨水相交点,计算出进出时间,注意于圆相交的部分只能计算下半圆。 接着做一下区间覆盖,因为雨滴有重叠。代码#include <cstdio>

2015-10-28 21:50:47 680

原创 hdu 4635 Strongly connected(强联通)

题目链接:hdu 4635 Strongly connected解题思路先对给定图做强联通分量,选取出度或者是入度为0的分量中点个数最少的一个,然后其它联通分量算一个,将图分成两部分,做完全图并保证两部分是之间的边均为单向边。代码#include <cstdio>#include <cstring>#include <vector>#include <stack>#include <algo

2015-10-28 21:46:08 498

原创 hdu 4634 Swipe Bo(模拟+最短路)

题目链接:hdu 4634 Swipe Bo解题思路只有靠墙的点才会停留并且转弯,所以将所有靠墙的点预处理出4个方向会移动到哪个位置,这一步用模拟即可,注意绕圈的情况,即single强制方向形成环。还有出口的点比较特殊,在靠墙的时候有可能要转移向,做法是可以拆成两点考虑。 剩下的就是最短路问题。代码#include <cstdio>#include <cstring>#include <vec

2015-10-28 21:43:01 6534

原创 hdu 4633 Who's Aunt Zhang(polya)

题目链接:hdu 4633 Who’s Aunt Zhang代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int mod = 10007;int inv24, P[100];int pow_mod(int x, int n, int mod) { int ret =

2015-10-28 21:38:06 1058

原创 hdu 4632 Palindrome subsequence(dp)

题目连接:hdu 4632 Palindrome subsequence代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1005;const int mod = 10007;char str[maxn];int N, dp[maxn][maxn];in

2015-10-28 21:35:41 495

原创 hdu 4623 Crime(等价类+变进制哈希+状压dp)

题目链接:hdu 4623 Crime解题思路n最大为28,首先想到状态压缩,dp[s][i]dp[s][i]表示已经选了哪些数和最后一位为i的情况数。Smax=228S_{max} = 2^{28},空间和时间都不能接受。这里用等价类优化,质因子相同的数可以看做是一类数,划分之后有17类,每一类的个数并不相同。在表示状态时可以用变进制的方式哈希。优化部分,17 、19、23和1一样,同其它数字互质

2015-10-27 22:52:04 862

原创 hdu 4610 Cards(暴力+miller-rabin)

题目链接:hdu 4610 Cards解题思路用素数筛选法先预处理出每个数的因子个数,因子和。因子个数肯定小于1e6,可以根据预处理的素数表直接判断是否为素数,但是因子和可能到达4百多万,所以直接用miller-rabin直接判素数。判断因子积是否是平方和的部分,考虑因子个数,如果因子个数为奇数(即该数为平方数),则sqrt(i)必须是平方数才行。如果因子个数为偶数,则cnt/2为偶数时该数的因子积

2015-10-27 20:25:35 566

原创 hdu 4600 Harvest Moon(模拟)

题目链接:hdu 4600 Harvest Moon代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 1005;int W, H, N, D, M, S[20];ll V[maxn], A[maxn];void

2015-10-27 20:10:04 671

原创 hdu 4787 GRE Words Revenge(AC自动机)

题目链接:hdu 4787 GRE Words Revenge代码#include #include #include #include #include #include #include using namespace std;const int maxn = 1e5 + 5;const int sigma_size = 2;struct Aho_Coras

2015-10-27 20:05:09 640

原创 hdu 4631 Sad Love Story(暴力)

题目连接:hdu 4631 Sad Love Story代码#include <cstdio>#include <cstring>#include <set>#include <vector>#include <algorithm>using namespace std;typedef long long ll;typedef pair<ll, ll> pii;typedef set<

2015-10-26 22:13:03 661

原创 hdu 4630 No Pain No Game(线段树)

题目链接:hdu 4630 No Pain No Game解题思路P[x]表示因子x最近出现的为值,在考虑位置i时,如果有因子x,则P[x]~i之间即可以有因子x,用线段树维护区间最大值。然后将查询离线。代码#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;#d

2015-10-26 21:57:14 545

原创 hdu 4627 The Unsolvable Problem(暴力)

题目链接:hdu 4627 The Unsolvable Problem代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a%b); }ll lcm(l

2015-10-26 21:53:42 558

原创 hdu 4620 Fruit Ninja Extreme(暴力)

题目链接:hdu 4620 Fruit Ninja Extreme解题思路按照时间排序,时间间隔超过W的剪枝掉。代码#include <cstdio>#include <cstring>#include <vector>#include <bitset>#include <algorithm>using namespace std;typedef pair<int,int> pii;co

2015-10-26 21:51:49 588

原创 hdu 4619 Warm up 2(KM)

题目链接:hdu 4619 Warm up 2解题思路KM求最大独立集。代码#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 1005;int N, M, L[maxn], X[maxn], Y[maxn];bool T[m

2015-10-26 21:50:17 593

原创 hdu 4618 Palindrome Sub-Array(dp)

题目链接:hdu 4618 Palindrome Sub-Array解题思路dp[k][i][j]表示以i,j为左上角,长度为k的正方形是否可行,dp[k][i][j]可以从dp[k-1][i+1][j+1]转移过来,只要再判断i行是否是回文串,并且i行和i+k-1行是否相同,列也一样。这里偷懒用暴力判断,水过了,应该用hash大法优化成o(1)的复杂度。代码#include <cstdio>#i

2015-10-26 21:48:34 557

原创 hdu 4617 Weapon(几何)

题目链接:hdu 4617 Weapon解题思路异面直线之间距离。代码#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <vector>#include <algorithm>using namespace std;const double eps = 1e-8;inline int

2015-10-26 21:44:29 559

原创 hdu 4616 Game(树形dp)

题目链接:hdu 4616 Game解题思路dp维护不以trap为起点的最优,ed维护以trap为起点的最优。注意,当前节点如果不为trap的话,不能从dp[K]转移过来。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 50005;typedef lon

2015-10-26 21:42:40 693

原创 hdu 4614 Vases and Flowers(线段树)

题目链接:hdu 4614 Vases and Flowers解题思路用线段树维护空位。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define lson(x) (x<<1)#define rson(x) ((x<<1)|1)const int maxn = 50005;int

2015-10-26 21:39:35 548

原创 hdu 4612 Warm up(缩点+树直径)

题目链接:hdu 4612 Warm up解题思路先双联通缩点,然后对缩完点的树求树的直径。代码#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 200005;const int maxm = 1000005;int N, M,

2015-10-26 21:37:01 609

原创 hdu 4611 Balls Rearrangement(规律)

题目链接:hdu 4611 Balls Rearrangement代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;int N, A, B;ll get(ll p) { int a = p % A; int b = p % B;

2015-10-26 21:34:02 636

原创 hdu 4609 3-idiots(FFT)

题目链接:hdu 4609 3-idiots代码#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int maxn = 400040;typedef long long ll;/***************** FFT *************

2015-10-26 21:31:20 802

原创 hdu 4608 I-number(水)

题目链接:hdu 4608 I-number代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;int N, num[maxn];char str[maxn];void add () { int s = 1; for (int

2015-10-26 21:29:29 535

原创 hdu 4607 Park Visit(bfs)

题目链接:hdu 4607 Park Visit解题思路超过树直径的部分要走两遍。代码#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;int N, Q, D[maxn];v

2015-10-26 21:28:21 499

原创 hdu 4606 Occupy Cities(几何+二分+KM)

题目链接:hdu 4606 Occupy Cities解题思路首先预处理出两两点之间的最短距离,然后二分背包容量,用KM判断是否可行。预处理部分,将所有线段的端点加入考虑,枚举两点之间直线,如果与线段相交则不可以移动。然后用floyd处理出点点之间的最短距离。判断部分,因为有P个士兵,所以对于一个距离,可以根据占领顺序处理出有向边,然后用KM处理至少需要多少个士兵。代码#include <cstdi

2015-10-26 21:26:17 671

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除