- 博客(16)
- 收藏
- 关注
原创 Hackerrank Magic Cards
题目询问长度超过log(m)则一定能把所有数都选到,然后就可以n*m*log(m)处理了#include#include#include#include#includeusing namespace std;typedef long long ll;vectorv[1000010];ll dp[1000010][22],sum;ll m1[(1<<20)+10],m2[(1<
2017-08-24 20:37:17 469
原创 HDU 6181 Two Paths
答案为次短路或者最短路+和最短路相连或者最短路上的路径走两编,怎么一开始大家都会啊#include#include#include#include#includeusing namespace std;typedef long long ll;const int MAXN =(int)1e5+10;const ll INF =(ll)1e11;struct edge{ i
2017-08-24 20:15:45 466
原创 HDU 6171 Admiral(双向宽搜)
不过好像可以不用pair#include#include#include#include#include#includeusing namespace std;typedef long long ll;map ,int>mp1,mp2;int mp[10][10];struct zb{ int x,y; zb(){}zb(int _x,int _y){
2017-08-24 20:11:39 570
原创 HDU 6166 Senior Pan
多源最短路次短路,还要保证最短路和次短路的起点不同#include#include#include#include#includeusing namespace std;typedef long long ll;const int MAXN =(int)1e5+10;const ll INF =(ll)1e11;struct edge2{ int to,nxt;ll w;}e
2017-08-22 19:48:40 746
原创 HDU 6162 Ch’s gift
做法同树上第K大#include#include#include#include#includeusing namespace std;const int MAXN =(int)1e5+10;typedef long long ll;int vl[MAXN],n,m,vsz;vectorve;int root[MAXN],ls[MAXN*40],rs[MAXN*40],tot,
2017-08-22 19:44:50 726 3
原创 HDU 6125 Free from square
从1到n中取出k个数,它们的乘积不被某个除了1的完全平方数整除,求方案数很显然每个质数最多只能出现一次。大于sqrt(n)的质数在每个选取的数中只能取一次,小于sqrt(n)的质数最多有8个,就可以状压了。#include#include#include#includeusing namespace std;typedef long long ll;const int MO
2017-08-21 11:30:19 318
原创 SGU 507 Treediff (线段树合并)
求每个子树的叶子节点差值的最小值,合并是用右子树的最小值和左子树的最大值的差更新答案#include#include#include#include#includeusing namespace std;vectorve;const int MAXN=(int)5e4+10;const int INF =INT_MAX;int root[MAXN],tot,ls[MAXN*1
2017-08-20 19:12:50 453
原创 HDU 6136 Death Podracing(优先队列+循环链表)
#include#include#include#include#include#includeusing namespace std;const int inf =(int)1e9+7;struct node{ int d,v,i;}p[111111];int pre[111111],nxt[111111];bool cmp(const no
2017-08-17 18:22:23 421
原创 HDU 6133 Army Formations(线段树合并)
#include#include#include#include#includeusing namespace std;const int MAXN=(int)1e5+7;typedef long long ll;int read(){ int x=0,f=1;char ch=getchar(); while(ch'9'){if(ch=='-')f=-1;ch=g
2017-08-17 18:18:10 1048
原创 SPOJ Count on a tree(树上第K大)
题目主席树+LCA#include#include#include#include#includeusing namespace std;const int MAXN=(int)1e5+5;struct edge{ int to,nxt;}ed[MAXN<<1];int head[MAXN],cnt;void addedge(int u,int v){ ed[cnt
2017-08-14 19:32:55 273
原创 SPOJ D-query(区间不同的数的个数)
题目离线:树状数组#includeusing namespace std;typedef long long ll;const int MAXN=(int)3e4+10;struct node{ int l,r,idx;}qu[200010];bool cmp(const node &a,const node &b){ return a.r<b.r;}vectorv
2017-08-14 19:29:56 301
原创 51nod 1811 联通分量计数
竟然作死 lower_bound(s[u].begin(),s[u].end(),*it1); T的不明所以QAQ#include#include#include#include#include#includeusing namespace std;const int MAXN=(int)1e5+10;int read(){ int x=0,f=1;char ch=g
2017-08-06 15:04:17 644
原创 HDU 6070 Dirt Ratio
求最小的 区间数的个数/区间大小二分答案 ,线段树验证(题意感觉很迷)#include#include#include#include#define lson (rt<<1)#define rson (rt<<1|1)#define eps 1e-9using namespace std;const int MAXN=60000+10;double mi[MAXN*
2017-08-04 21:40:18 321
原创 HDU 6071 Lazy Running(同余最短路)
#include#include#include#include#include#includeusing namespace std;typedef long long ll;ll d[5];struct node{ int x,y;ll dis; node(){}node(int _x,int _y,ll _dis){x=_x;y=_y;dis=_dis;} bool
2017-08-04 21:21:49 611
原创 Maximal Tree Diameter
题目一颗树,去掉一条边再连上一条边,求最大的直径。记录最大值,次大值,次次大值?,然后DP#include#include#include#includeusing namespace std;const int maxn=(int)5e5+10;int dp[maxn][3],mark[maxn],mark2[maxn],zj[maxn],zjmark[maxn],zzj[m
2017-08-01 21:17:55 374
原创 Hackerrank Recurrent on a Tree
题目定义一条路径上节点值为x ,它的价值就为fib[x],求一棵树的所有路径的和搞一搞矩阵操作就可以DP了#include#include#include#includeusing namespace std;typedef long long ll;const ll MOD=(ll)1e9+7;const int MAXN=(int)2e5+10;struct Mat
2017-08-01 21:07:34 308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人