
hdu
_zidaoziyan
这个作者很懒,什么都没留下…
展开
-
HDU 5313.Bipartite Graph
首先二分图可以分成两类点X和Y, 完全二分图的边数就是|X| * |Y|,我们的目的是max {|X| *|Y|},并且|X| + |Y| = n,开口向下的抛物线,只要求出 X-Y的最小值#include <map>#include <set>#include <stack>#include <queue>#include <cmath>#include <ctime>#includ原创 2015-07-27 16:12:31 · 434 阅读 · 0 评论 -
hdu5501The Highest Mark(贪心+背包,好题)
题意:总共有n道题,t的时间,下面给出每道题可以得到的分数,每分钟的罚时,做这道题需要的时间,求怎么安排时间能使获得的分数最高(所有题目都会)这道题目官方题解很详细,就直接搬过来了这道题考察的是贪心思想和动态规划。首先我们考虑,假如我们已经确定了要做哪些题目,按什么顺序做这些题目最好。假设已经确定了要做其中的mm道题,某一个方案中做题的顺序是依次做x_{1},x_{2}\r原创 2015-11-06 16:09:00 · 363 阅读 · 0 评论 -
hdu5495LCS(好题)
LCS Accepts: 127 Submissions: 397 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)问题描述你有两个序原创 2015-10-10 18:31:37 · 561 阅读 · 0 评论 -
hdu5605geometry
geometry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)问题描述在平面直角坐标系上有一个点PP, 他的坐标是(x, y)(x,y). 有一条直线y = kx + by=kx+b经过了PP, 且分别交x, yx,y正半轴于A, BA,B. 求原创 2016-02-22 21:34:50 · 415 阅读 · 0 评论 -
hdu5606tree
tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)问题描述有一个树(nn个点, n-1n−1条边的联通图),点标号从11~nn,树的边权是00或11.求离每个点最近的点个数(包括自己).输入描述第一行一个数字TT,表示TT组数据.对原创 2016-02-22 22:19:20 · 320 阅读 · 0 评论 -
hdu5607graph
graph Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)问题描述在一个NN个点(标号11~nn),MM条边的有向图上,一开始我在点uu,每一步我会在当前点的出边中等概率的选一条走过去,求走了恰好KK步后走到每个点的概率.输入描述原创 2016-02-22 22:26:15 · 505 阅读 · 0 评论 -
Hdu 5650 so easy (BestCoder Round #77 (div.2 A))
已知一个包含 n 个元素的正整数集合 S,设 f(S) 为集合 S 中所有元素的异或(XOR)的结果。如:S = {1, 2, 3},则 f(S) = 0。给出集合 S,你需要计算 将所有 f(s) 进行异或后的值, 这里 s⊆S. 思路:分析可知,n个数所构成的集合的方案数为2^n,那么对于每个数,包含一个数的集合的数目为2^n-1,所以如果n不等于1的话,包含一个数的集合的数原创 2016-03-28 15:27:43 · 361 阅读 · 0 评论 -
BestCoder Round #77 (div.1) B xiaoxin juju needs help(Hdu 5651)
题意:给你一个字符串,你可以任意重组他们的顺序,问可以出现多少个不同的回文串,答案对1e9+7取模。字符串长度小于等于1000. 题解:如果有多于一个的字符只出现奇数次的话,那么这个字符串肯定不可能组成回文串。否则的话,我们假设n为偶数,’a’有x个(x一定为偶数),那么’a’放进去的方案数为X[‘a’]=C(n/2,x/2),’b’有’y’个,那么X[‘b’]=C((n-x)/2,y/2原创 2016-03-28 15:53:08 · 408 阅读 · 0 评论 -
BestCoder Round #77 (div.1) Bomber Man wants to bomb an Array. Hdu5653
题意:给一个长度为 N 的一维格子和一些炸弹的位置,请你计算 “最大总破坏指数”。每个炸弹都有向左和向右的破坏力,如果一个炸弹向左和向右的破坏力分别为 L 和 R,那么该炸弹将炸毁 L + R + 1个格子(左边L个,炸弹所在格子,右边R个)。破坏指数的计算方式为:所有炸弹炸毁的格子数的乘积。假设第 i 个炸弹炸毁了 X_i个格子,那么总破坏指数就是 X_1 * X_2 * ...原创 2016-03-28 16:22:17 · 334 阅读 · 0 评论 -
hdu 5671 Matrix(操作一个矩阵,交换行或者列,对行或者列加上一个值)
题意:有一个n行m列的矩阵(1≤n≤1000,1≤m≤1000),在这个矩阵上进行q (1≤q≤100,000) 个操作: 1 x y: 交换矩阵M的第x行和第y行(1≤x,y≤n);2 x y: 交换矩阵M的第x列和第y列((1≤x,y≤m);3 x y: 对矩阵M的第x行的每一个数加上y(1≤x≤n,1≤y≤10,000);4 x y: 对矩阵M的第x列的每一个数加上y原创 2016-04-29 23:02:15 · 1235 阅读 · 0 评论 -
hdu 5671 String(求有多少个子串,包含有至少k(1≤k≤26)个不同的字母)
题意:有一个 10≤长度≤1,000,000 的字符串,仅由小写字母构成。求有多少个子串,包含有至少k(1≤k≤26)个不同的字母?思路:如果l,r中正好包含有k个不同的子串,那么从l开始的包含k个不同字符的串有strlen(s)-r+1所以我们只需要计算出每个l对应的正好包含k个不同字符的r便可以了,利用双指针便可以完成。#include #include原创 2016-04-29 23:03:49 · 1170 阅读 · 0 评论 -
Hdu 5749 Colmerauer
题意: Peter有一个n×m的矩阵M.定义S(a,b)为M的所有大小为a×b的子矩阵的权值和.一个矩阵的权值是这个矩阵所有鞍点的值的和.在矩阵中,一个数在所在行中是唯一的最小值,在所在列中是唯一的最大值,则被称为鞍点.帮助Peter找出所有S(a,b)的值. 输出W=(∑a=1n∑b=1ma⋅b⋅S(a,b)) mod 232W = (\displaystyle\sum_{a=1}^{n}\s原创 2016-07-24 14:09:57 · 483 阅读 · 0 评论 -
hdu 5731 Solid Dominoes Tilings(多米诺骨牌)
多米诺骨牌是 2 × 1 或 1 × 2 的矩形。考虑用多米诺骨牌覆盖 m × n 棋盘,如果无法通过一条不穿过任何骨牌内部的直线,将一种覆盖方案分割成两个部分,那么这种覆盖方案被称为是稳定的。例如,下图中 (a), (b) 是稳定的,(c), (d) 是不稳定的。对于 m × n 的棋盘,有多少种稳定的多米诺骨牌的覆盖方案?原创 2016-07-24 18:23:16 · 1484 阅读 · 0 评论 -
Hdu 5808 Price List Strike Back(分治,BestCoder Round #86 E)
传送门:Hdu 5808 Price List Strike Back 题意:一共有n家商店,编号依次为1到n。每家商店只会卖一种物品,其中第i家商店的物品单价为v,且它到Byteasar的家的距离为di 有m组询问(1≤n≤20000,1≤m≤100000,1≤vi<=100,1<=di<=10^9),第i天他会选择一个区间[li,ri]并给自己设定一个距离上限ci, 然后他会在编原创 2016-08-08 15:25:06 · 577 阅读 · 0 评论 -
Hdu 5807 Keep In Touch(有三个人分别在三个位置,每一秒各走一步,三个城市可以联络的要求是两两权值差小于等于K。 问有多少种不同的方案,让这三个人可以联络。)
传送门:Hdu 5807 Keep In Touch 题意:有三个人分别在三个位置,每一秒各走一步,三个城市可以联络的要求是两两权值差小于等于K。问有多少种不同的方案,让这三个人可以联络。思路:考虑dp,设dp[i][j][k]表示三个人分别在i,j,ki,j,k时的方案数,直接转移是O(n^6)的。 于是考虑加维,设dp[i][j][k][now]表示三个人分别在i,j,k时,目前准备走n原创 2016-08-08 15:36:06 · 563 阅读 · 0 评论 -
Hdu 4807 Lunch Time(最小费用最大流的巧妙运用,k个人从0到n-1所需的最少时间)
传送门:Hdu 4807 Lunch Time 题意:有n个地点,标号为0~n-1,现在有k个人,要从0到n-1,有m条有向边,每条边每一时刻都限制有ci 个人通过,每个人的速度是每一时刻一条边,问最后一个到达终点的人的所需要的时刻 思路: 最小费用最大流 每一次我们进行一次spfa时,都能求出当前时刻到达终点不需等待所需要花费的最少时间, 比如上一次求出的不需等待的时间原创 2016-09-02 12:07:48 · 1035 阅读 · 0 评论 -
Hdu 4803 Poor Warehouse Keeper(从1,1变为x,y,精度+思维)
传送门:Hdu 4803 Poor Warehouse Keeper 题意: 刚开始给你x,y都为1,1,每次你可以将y加1,或者将x+1,y+y/x(y如果不为整数,则舍去) 问你有多少最小变化做几次操作使得从(1,1)变为(x,y) 思路一: 经过分析,我们可以发现y/x的斜率是单调递增的,而且将x+1,y+y/x这种操作的操作次数是有限的, 所以我们只需要使x+1,原创 2016-09-02 14:13:18 · 563 阅读 · 0 评论 -
Hdu 5765 Bonds(高维前缀和)
题意: 给一个n个点的无向连通图,求每条边被多少个极小割边集包括 (n<=20,m<=n*(n-1)/2)思路: 极小边->分成两个联通块1.先求出与每个状态相邻的点的状态集 2.bfs判断哪些点可以组成一个联通块 3.高维前缀和#include<bits/stdc++.h>using namespace std;const int N=21;int ans[1<<21],sta原创 2016-10-24 21:02:24 · 858 阅读 · 0 评论 -
hdu5495LCS(好题)
LCSTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 682 Accepted Submission(s): 370Problem DescriptionYou are given two sequence原创 2015-11-06 16:28:48 · 634 阅读 · 0 评论 -
hdu5506GT and set(暴搜)
题意:有n个集合,问你能否在L次内把所有集合都删去,如果两个或者更多集合内含有一个相同的数,则这些集合可以同时删除每个集合中的元素小于10,L分析:由于数据范围都比较小,很容易想到搜索很容易想到可以枚举当前集合应该删除哪个数,如果下一个集合中已经出现过了这个数,则跳过下一个集合,可以选择的删除的数不超过5个每个集合中最多有10个数能被选择,所以时间复杂度也就为10^5*原创 2015-11-06 15:44:41 · 425 阅读 · 0 评论 -
HDU5285.wyh2000 and pupil
如果a不认识b,那么在a,b间连一条边,这样有解当且仅当这张图是二分图。由于可能有多个二分图,而题目要求第一组的人尽可能多,所以贪心的选择即可。要注意m=0和n<=1的情况。#include <map>#include <set>#include <stack>#include <queue>#include <cmath>#include <ctime>#include <vector原创 2015-07-27 17:02:22 · 404 阅读 · 0 评论 -
HDU 5311.Hidden String
#include <map>#include <set>#include <stack>#include <queue>#include <cmath>#include <ctime>#include <vector>#include <cstdio>#include <cctype>#include <cstring>#include <cstdlib>#include <i原创 2015-07-27 14:53:39 · 399 阅读 · 0 评论 -
HDU5312.Sequence
这个题看上去是一个贪心, 但是这个贪心显然是错的. 事实上这道题目很简单, 先判断1个是否可以, 然后判断2个是否可以. 之后找到最小的k (k > 2)(k>2), 使得(m - k) mod 6 = 0即可.证明如下: 3n(n-1)+1 = 6(n*(n-1)/2),注意到n*(n-1)/2是三角形数, 任意一个自然数最多只需要3个三角形数即可表示(高斯发现). 枚举需要k个, 那么显然m=6原创 2015-07-27 12:50:44 · 337 阅读 · 0 评论 -
HDU5273.Dylans loves sequence(逆序数对)
/*由题目数据可知,查询一定是o(1)a[l][r]=a[l][r-1]+mp[r][l] //mp[r][l]表示从i到r-1中有多少个数和r组成逆序数对而mp[r][l]=mp[r][l+1]+(l和r能否组成逆序数对)所以分析后可知,mp应该是从大到小处理,a应该是从大到小处理总的时间复杂度为O(n*n)*/#include <map>#include <set>#includ原创 2015-08-10 16:42:37 · 455 阅读 · 0 评论 -
HDU5428
/*对于每一个数字,它有用的部分其实只有它的所有质因子(包括相等的)。求出所有数的所有质因子中最小的两个,相乘就是答案。如果所有数字的质因子个数不到两个,那么就是无解。时间复杂度O(n*sqrt(a))O(n∗sqrt(a))*/#include <map>#include <set>#include <stack>#include <queue>#include <c原创 2015-09-05 22:52:28 · 738 阅读 · 0 评论 -
hdu5479Scaena Felix(好题)
Scaena FelixTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 105 Accepted Submission(s): 52Problem DescriptionGiven a parenthese原创 2015-09-26 22:08:24 · 713 阅读 · 0 评论 -
hdu5480Conturbatio(好题)
ConturbatioTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 156 Accepted Submission(s): 79Problem DescriptionThere are many rook原创 2015-09-26 22:44:14 · 718 阅读 · 0 评论 -
hdu2433
TravelTime Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2163 Accepted Submission(s): 721Problem Description One day, Tom trav原创 2015-09-11 20:26:31 · 575 阅读 · 0 评论 -
hdu2433Xiao Ming climbing
Xiao Ming climbingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 593 Accepted Submission(s): 155Problem DescriptionDue to the cu原创 2015-09-14 16:11:54 · 423 阅读 · 0 评论 -
hdu5438Ponds
首先拓扑排序可以去掉度小于2的,剩下的只会是环 其次注意题目说的是连通,所以可能有很多个环相连的情况,所以这时便要判断这一个连通分量里是否有奇数个点#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e4+100;vector<int>G[maxn];int vis[maxn];原创 2015-09-14 16:37:05 · 596 阅读 · 0 评论 -
hdu5444Elven Postman
每插入一个点就从根开始找应该要插到哪里,如果比父亲结点大插到左边,比父亲结点小插到右边,如果他的父亲结点没有左儿子(比父亲大)或者右儿子(比父亲小),就把这个结点作为他的左儿子(比父亲大)或者右儿子(比父亲小)#include <map>#include <set>#include <stack>#include <queue>#include <cmath>#include <ctime原创 2015-09-14 18:16:39 · 479 阅读 · 0 评论 -
hdu5437Alisha’s Party
简单地优先队列模拟#include<bits/stdc++.h>using namespace std;char s[150001][210];int value[150001];char ans[150001][210];int mx;int ans1[101];int n,m,k;struct Node{ int time; int num;}open[15000原创 2015-09-15 11:12:43 · 425 阅读 · 0 评论 -
hdu5446Unknown Treasure
中国剩余定理的简单运用结合LUCAS定理 另外就是两个数相乘他的结果可能爆long long ,所以要用快速乘法进行计算#include<bits/stdc++.h>using namespace std;typedef long long ll;ll num;ll num1[11];ll num2[11];ll fact[100005];void init(ll p){ fa原创 2015-09-15 15:44:31 · 454 阅读 · 0 评论 -
hdu5505(好题)
GT and numbersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 174 Accepted Submission(s): 53Problem DescriptionYou are given tw原创 2015-10-18 11:01:39 · 735 阅读 · 0 评论 -
hdu5441Travel
并查集加离线处理#include<bits/stdc++.h>using namespace std;const int maxn=5000+10;int f[20100];int count1[maxn];int num[4*maxn];struct Edge{ int from,to,dis;}e[100100];struct node{ int num; i原创 2015-09-14 20:50:42 · 536 阅读 · 0 评论 -
hdu1573(中国剩余定理定解的个数)
X问题Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4338 Accepted Submission(s): 1389Problem Description求在小于等于N的正整数中有多少个X满足:X mod原创 2015-09-16 20:58:59 · 899 阅读 · 0 评论 -
hdu5224Subtrees(递归,好题)
SubtreesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 344 Accepted Submission(s): 171Problem DescriptionThere is a complete原创 2015-11-05 20:17:58 · 572 阅读 · 0 评论 -
Hdu 5909 Tree Cutting(fwt优化异或卷积)
传送门:Hdu 5909 Tree Cutting 题意:有一棵n个点的无根树,节点依次编号为1到n,其中节点i的权值为vi, 定义一棵树的价值为它所有点的权值的异或和。 现在对于每个[0,m)的整数k,请统计有多少T的非空连通子树的价值等于k。 思路: 设dp[i][j]表示i的子树里舍弃了j的方案数,转移是个异或卷积的形式,可以用FWT加速计算。 时间复杂度:O(nm原创 2016-10-02 09:50:12 · 1606 阅读 · 0 评论