- 博客(124)
- 收藏
- 关注
原创 hdu5965扫雷
题目链接:hdu5965题意:中文题题解:我们去枚举前两列的状态然后其他列的状态就确定下来了,因为前两列的状态最多只有三种,所以时间复杂度为O(n),然后特判一下长度为1的情况就可以了。代码: #include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000
2016-11-05 18:41:39 891
原创 hdu5961传递(bitset乱搞)
题目链接:hdu5961题意:中文题题解:1、判断传递的条件为:若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c。 2、我们去枚举b,我们假设集合Sb={x|x−>b}S_b= \{ x|x->b\}表示有一条xx指向bb的边。我们假设集合Tb={x|b−>x}T_b=\{x|b->x \},表示有有一条bb指向xx的变边。 3、我们再去枚举SbS_b,假设我们当前枚举的
2016-11-05 18:34:08 939
原创 Codeforces Round #376 (Div. 2)F. Video Cards(乱搞)
题目链接:codeforces731F题意:给你n个数,叫从中选一个数x,然后将其他比它大的数通过减去某个数变成x的倍数,然后将这所有数相加,求它的最大值为多少?数据范围:1≤n,ai≤2∗1051\leq n,a_{i} \leq 2*10^5题解:我们通过枚举所有x(相同的我只枚举了一次),然后去枚举x的倍数k*x,利用前缀和求出[k*x,(k+1)*x-1]有多少数?然后计算就可以了! 时间
2016-11-04 21:48:39 307
原创 Codeforces Round #376 (Div. 2) D. 80-th Level Archeology(乱搞)
题目链接:codeforces731d题意:给你n个字符串,每个字符串的元素x取值范围在[1,c],问你能否将所有的x同时进行若干次加1(如果x==c,x变成1)使得字符串是按字典序从小到大排序的。输出最少加的次数,如果没解,输出-1。数据范围:1≤n≤5∗105,1≤c≤106,字符串的总长度≤1061\leq n\leq 5*10^5,1\leq c \leq 10^6,字符串的总长度\leq
2016-11-04 21:38:37 361
原创 poj3057 Evacuation(二分+最大匹配)
题目链接:poj3057题意:给你一张地图,地图上面有障碍物、广场、和门(若干),门保证在边界上。现在每个广场有一个人,每个有都要通过门出去,且每个人可以每个单位时间可以走相邻的四个位置,且同一时间下,每个广场可以容纳多个人,而门的话可以一个单位时间只能通过一个人,问最少需要多少时间所有人都离开地图?如果不能离开的话输出impossible。数据范围:3≤n,m≤123\leq n,m \leq 1
2016-11-04 08:42:36 489
原创 poj3056The Bavarian Beer Party(区间dp)
题目链接:poj3056题意:求区间不相交最多有多少区间?题解:简单的区间dp,时间复杂度有点迷!!#include#include#include#include#include#include#include#include#include#include#include#include#include#define PI 2*as
2016-11-02 16:09:06 307
原创 hdu1688 Sightseeing(次短路)
题目链接:hdu1688题意:给你n个点,m条有向边,问你从s走到t点最短路加上最短路权值加一的路径条数数据范围:2≤n≤1000,1≤m≤10000,1≤s,t≤n,s≠t,且边没有自环2\leq n\leq 1000,1 \leq m \leq 10000,1\leq s,t \leq n,s\neq t,且边没有自环题解:我们相当于求最短路和次短路,注意这里的次短路是权值的次短。然后注意处理最
2016-11-02 12:22:07 518 1
原创 Codeforces Round #378 (Div. 2) D. Kostya the Sculptor(乱搞)
题目链接:codeforces733d题意:给你n个长方体,你可以选择1个长方体或者两个长方体粘成一个长方体。问能组成的的长方体中内切球体积最大为多少?数据范围:1≤n≤105,1≤ai,bi,ci<=1091 \leq n \leq 10^5,1 \leq a_{i},b_{i},c_{i}<=10^9题解:1、首先内切球的体积取决于长方体最短的边为多少。 2、1个长方体的话,我们直接取最短边比
2016-11-01 14:50:46 380
原创 Codeforces Round #378 (Div. 2)C.Epidemic in Monstropolis(codeforces733c)
题目链接:codeforces733c题意:给你nn个数,a1,a2,a3,...ana_{1},a_{2},a_{3},...a_{n},再给你m个数b1,b2,b3,...bmb_{1},b_{2},b_{3},...b_{m},问你aa序列能否通过合并变成bb序列。合并的条件为只能相邻的数合并,ai与ai+1a_{i}与a_{i+1}能合并的条件为ai>ai+1或ai<ai+1a_{i}>a_
2016-11-01 11:28:11 429
原创 hdu4282 A very hard mathematic problem(二分)
题目链接:hdu4282题意:给你一个K(K<231)K(K<2^{31})找有多少个符合条件的X,Y,Z(X<Y,Z>1)X,Y,Z(X<Y,Z>1),使得XZ+YZ+X∗Y∗Z=K。X^Z+Y^Z+X*Y*Z=K。题解:我们去枚举X,Z然后二分Y就可以了,因为X的最大为24000,Z最大为31。代码:#include<cstdio>#include<cstring>#include<iost
2016-10-11 21:08:01 382
原创 bnuoj52303 Floyd-Warshall(2016四川省赛)(生成树+倍增+SPFA)
题目链接:Floyd-Warshall题意:给你n个点,m条双向边,再给你q个询问,每个询问输入x,y,叫你求x到y的最短距离。数据范围:1≤n≤105,0<m−n<100,q≤1051\leq n\leq 10^5,0<m-n<100,q\leq 10^5,保证是个联通图。题解:1、我们先利用并查集建成一个生成树,在当前情况下,询问x,yx,y的最短距离,我们利用倍增求出x,yx,y的lca为zz
2016-10-10 21:48:04 878
原创 hdu5919 Sequence II(主席树)
题目链接:hdu5919题意:给你n(n≤2∗105 n\leq 2*10^5 )个数,每个数的大小0<Ai≤2∗1050<A_i\leq2*10^5。再给你m(m≤2∗105\leq2*10^5)个询问。对于每个询问输入l,r,表示Al...ArA_l...A_r这个区间我们得到每个数第一次出现的位置下标的排列,假设这个区间有k个不同的数,我们得到的排列是p1<p2<p3<...<pkp_1<p_
2016-10-09 17:49:28 1823
原创 hdu5917Instability(找规律+暴力)
题目链接:点这里!!!题意:给你一个无向图,问图中有多少个符合条件的集合?条件为这个集合里面存在一个子集(大小>=3)为团或者都是孤立点。答案mod1e9+7题解:我们可以发现当集合大于5时,一定符合条件,小于等于5的时候直接判就可以了!!!!代码:#include#include#include#include#include#include#
2016-10-07 16:37:15 1338
原创 hdu5925 Coconuts(离散化+BFS)
题目链接:点这里!!题意:给你一个R*C的矩阵和n个障碍点,问你图中能分成多少个联通块?且输出每个联通块的大小。数据范围: R,C题解:我们可以利用障碍点进行画线,可以发现我们能得到若干个矩形,- -然后每个矩形的大小是不确定的,但都是对其了的,然后我们进行离散化,求出画线后的各个矩形的大小,然后dfs就可以了!!!而且你注意我们画线的话横竖不超过200条,矩阵
2016-10-07 13:06:56 1550
原创 Codeforces707d(离线+bitset优化)
题目链接:点这里!!!!题意:给你n*m的矩阵,初始化值全部为0。再给你q个操作1 x y 将a[x][y]置为12 x y 将a[x][y]置为03 x 将a[x]所有数取反0->1,1->04 x 将操作重置到第x操作后针对每个操作输出矩阵中1的个数数据范围:n,m题解:我们将所有操作离线操作,对于1、2、3操作直接暴力操作就
2016-09-22 18:57:15 406
原创 hdu5890 Eighty seven(背包+bitset优化)
题目链接:点这里!!!题意:给你n(n题解:因为最多有50*50*50不同的询问,我们直接处理出每种情况,针对每种情况我们利用01背包+bitset优化去做即可!!代码:#include#include#include#include#include#include#include#include#include#include#incl
2016-09-21 21:05:07 505
原创 hdu5895Mathematician QSC(矩阵快速幂+a^b%mod做法)
题目链接:点这里!!!题意:已知f(0)=0,f(1)=1,f(n)=f(n−2)+2∗f(n−1)(n≥2)给你n,y,x,s的值求的值题解:我们可以求得g(n)=f(n)*f(n+1)/2,f(n)可以利用矩阵快速幂求得。我们通过可以知道,解决了n不是素数的问题。切a/b%(mod n) 等价于 a%nb/b。然后就可
2016-09-21 19:49:16 319
原创 codeforces632e Thief in a Shop(完全背包)
题目链接:点这里!!!!题意:给你n个数(每个数可以选择多次),问你从中选择k个数,问你能组成哪些数并且输出。数据范围:n,m题解:这道题感觉有点坑,涨了一波知识。我们将所有的数按从小到大排序a1~an。a2~an全部减去a1。然后利用减去后的a2~an去跑完全背包,求出了每个能组成的数所需要的最少数。然后剩余的数利用a1去填补就可以了!!!不过感觉
2016-09-16 21:24:39 491
原创 codeforces632d Longest Subsequence(筛选法)
题目链接:点这里!!!题意:给你n个数和一个m,叫你找一个最长的子序列使得他们的lcm数据范围:n,m题解:因为lcm最大为1e6,我们直接去枚举LCM然后计算他的因子有多少个就可以了!!!! O(n*logn)#include#include#include#include#include#include#include#include#inc
2016-09-16 21:03:03 270
原创 hdu5877 Weak Pair(离散化+树状数组+dfs)
题目链接:点这里!!!题意:给你一颗n个节点的有根树,问你有多少au*av数据范围:n题解:我们对所有的ai,k/ai离散化,然后dfs这颗树,开始遍历x这个节点的时候询问当前有多少数小于等于k/a[x]然后加入到答案里,然后将a[x]加入到树状数组里,dfs完x时,将a[x]从树状数组里删除!!我们发现我们每次询问的都是x节点的祖先,就ok了!
2016-09-12 19:45:41 267
原创 hdu5869 Different GCD Subarray Query(rmq+树状数组+gcd)
题目链接:点这里!!!题意:给你n个数,q个询问,对于每个询问[l,r]问你[l,r]里面所有子集构成多少种不同的gcd?l1数据范围:n,q题解:比赛的时候傻逼了,用莫队去做,结果各种超时。。赛后看了题解想了一下,发现其实用用树状数组就可以了,傻逼了。。这道题我们对所有询问按右端点排序,然后离线来处理!我们发现固定右端点向左gcd,最多有2
2016-09-12 19:35:06 444
原创 codeforces665e Beautiful Subarrays(trie)
题目链接:点这里!!!题意:给你n(n题解:枚举区间的右端点,从左往右一次将前缀异或和插入到trie树(二进制)当中。至于大于k-1的话,我们把k-1拆成二进制的形式,从高位向低位枚举。1、如果k-1的第i位为1,且在trie树中不存在与当前枚举的右端点的第i位异或为1的话,就直接弹出就可以了!2、如果k-1的第i为为0,且在trie树中存在与当前枚举的
2016-09-08 20:19:38 657
原创 hdu4757(LCA+可持久化字典树)
题目链接:点这里!!!题意:给你一个n个节点的树(n题解:也是可持久化字典树,只是现在是在树上搞一搞。其实也是一样的,我们把儿子和父亲在可持久化字典树连起来就可以了,求出他们的LCA,然后乱搞就可以了!!!(具体看代码)代码:#include#include#include#include#include#include#include#i
2016-09-08 19:56:27 577
原创 bzoj3261 最大异或和(可持久化字典树)
题目链接:点这里!!题意:给定一个非负整数序列 {a},初始长度为 N。 有M个操作,有以下两种操作类型:1 、A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N+1。2 、Q l r x:询问操作,你需要找到一个位置 p,满足 la[p] xor a[p+1] xor ... xor a[N] xor x 最大,输出最大是多少。(N
2016-09-08 19:47:15 430
原创 Codeforces702E Analysis of Pathes in Functional Graph(倍增)
题目链接:点这里!!!题意:给你一个图,包含n个点n条边(n题解:我们可以利用类似于树上倍增的方法求出答案,因为每个点只有唯一的后继所以可以这样做,然后搞一搞就可以了(k代码:#include#include#include#include#include#include#include#include#include#include#i
2016-09-03 16:03:04 526
原创 fzu1686神龙的难题(Dancing Links(重复覆盖))
题目链接:点这里!!!题意:中文题。题解:做的第一道DLX重复覆盖,我们把1当成一列,每个枚举的矩阵当成行,然后跑DLX重复覆盖就可以了!!!!(不过不是很懂他的剪枝函数)代码:#includecstdio>#include#include#include#include#include#include#include#include#
2016-08-13 21:18:21 461
原创 hust1017Exact cover(Dancing Links)
题目链接:点这里!!!题解:Dancing Links第一题,抄了几下kuangbin的板子,感觉这东西真TM的吊!!推荐篇blog:http://www.cnblogs.com/grenet/p/3145800.html代码:#include#include#include#include#include#include#include#in
2016-08-13 16:30:43 338
原创 codeforces689e(树状数组)
题目链接:点这里!!!题意:给你n(n题解:我们直接算一段区间对答案的贡献,然后加起来就可以了!!当然要注意怎么处理,我是端点单独拿出来算,然后再算区间。这里有个check点,注意最后一个端点,确保所有线段都加进来了!!!有树状数组随便搞就是了!!代码:#include#include#include#include#include#inclu
2016-08-12 19:07:47 371
原创 hdu5828Rikka with Sequence(线段树)
题目链接:点这里!!!!题意:给你一个长度为n(n1 l r x [l,r]区间里的每个数加上x2 l r [l,r]区间里的每个数开根号3 l r 输出Al,Al+1...Ar之和数据范围:A[i]题解:1、我们发现一个数开根号最多开6次就会等于1,我们可以知道经过若干次操作后,序列会退化成若干段相等的数。2、根据“1”我们对于开根号操
2016-08-11 20:50:38 494
原创 hdu5812Distance(数学)
题目链接:点这里!!!题意:我们定义d(a,b)为a通过乘除最少的素数到达b。比如d(15,50)=3,15*2*5/3=50。我们定义3个操作和一个空的集合s:I x表示在集合s里插入一个x,如果存在x,忽略这个操作。D x表示在集合x里删除x,如果不存在x,忽略这个操作。Q x找到最小的z集合里面存在一个y,使得d(x,y)=z。数据范围:总操作数q
2016-08-10 17:29:04 612
原创 hdu5816Hearthstone(状压dp)
题目链接:点这里!!!!题意:炉石传说玩过吧,敌方英雄现在有p滴血,你的牌库里有n张A卡,m张B卡,A卡的效果是从牌库里的随机抽两张牌出来,B卡的效果是对敌方英雄造成xi点伤害。问你初始情况下,你从牌库里随机抽出一个张牌,问在一个回合内能打死敌方英雄的概率为多少?数据范围:p题解:1、看到n+m2、我们设dp[s]为当前手牌为s的方案数。我假设A卡有p1张,B卡
2016-08-10 14:12:55 646
原创 hdu4804Campus Design(轮廓线dp)
题目链接:点这里!!!题意:给你一个n*m的矩阵(1题解:基础的轮廓线dp,分情况讨论清楚。1、我们设dp[cur][g][k]为当前情况已用了g个1*1的板子枚举状态为k的方案数。2、假设当前(i,j)是障碍物的话,说明我(i,j)这个点不用填东西,并且(i,j)是东西的。3、假设当前(i,j)是空格的话,我们分情况考虑下:(1)假设(i,j)我不填东
2016-08-08 22:17:36 853
原创 poj1699Best Sequence(TSP)
题目链接:点这里!!!题解:我们直接求出两两之间的公共部分是多少,然后直接跑TSP就ok了,但是有个梗,我们要事先对字符串按长度排好序,尽可能去匹配长的,就可以了!!!!给组数据:/*5aaaaaaaaaaaaaaaaaab*/代码:#include#include#include#include#includ
2016-08-08 17:30:28 479
原创 hdu5807Keep In Touch(dp)
题目链接:点这里!!!题意:给你n(nvi(ui题解:1、这道题的dp方程设的很巧妙,然后做起来就简单了很多。2、我们设dp[0][i][j][k]为i,j,k在同一时刻的方案数为多少,dp[1][i][j][k]为i在上个时刻j,k在当前时刻的方案为多少,dp[2][i][j][k]为i,j在上个时刻,k在当前时刻的方案为多少。3、我们可以得到他们
2016-08-08 17:23:14 232
原创 hdu2224The shortest path(双调旅行商问题)
题目链接:点这里!!!题意:在平面上给你n个点,p1,p2,p3...pn(xi题解:基础的双调旅行商问题。参考两份题解:这里!!!这里!!我们定义dp[i][j](i所以转移方程为:dp[i][j]=dp[i][j-1]+mp[j-1][j] (idp[j-1][j]=min(dp[j-1][j],dp[k][j-1]+m
2016-08-08 11:43:17 345
原创 hdu4568Hunter(最短路+TSP)
题目链接:点这里!!!题解:用dijstra维护出每个宝藏之间的最短距离,然后跑tsp就可以了。注意起点是边界。代码:#include#include#include#include#include#include#include#include#include#include#include#include#include#define LL
2016-08-06 18:39:02 522
原创 hdu3001 Travelling(TSP+三进制)
题目链接:点这里!!!题意:给你n(n题解:你可以可以利用三进制表示这个点你经过了几次,在加上基础的TSP就可以解决了!!!代码:#include#include#include#include#include#include#include#include#include#include#include#include#in
2016-08-06 15:32:30 298
原创 hdu4284Travel(TSP+floyd)
题目链接:点这里!!!题意:给你n(n题解:基础的TSP问题,再加上floyd就可以了!!代码:#include#include#include#include#include#include#include#include#include#include#include#include#include#define pb
2016-08-05 20:06:40 286
原创 hdu5794A Simple Chess(lucas定理+dp)
题目链接:点这里!!!题意:给你一个n*m的方格(1(例如x1,y1->x2,y2满足(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)=5)题解:1、我们可以能够看出他走的其实是杨辉三角,我们可以利用组合数来求解,又因为C(x,y)%p,x,y非常大,我们就用lucas定理来求解组合数。2、我们从1,1走到n,m。我们先将障碍物排好序,我们假设
2016-08-05 10:44:16 308
原创 codeforces682d(dp)
题目链接:点这里!!!题意:给你两个长度均小于等于1000的字符串,你要在第一个串中找k(k题解:设dp[0][i][j][p]为a[i]==b[j]时,组成p个连续子串的长度。dp[1][i][j][p]为不利用a[i],b[j]时,组成p个连续子串的长度。dp[0][i][j][p]=max(dp[0][i-1][j-1][p],dp[1][i-1]
2016-08-03 15:14:37 345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人