自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KIJamesQi的博客

大神养成中。

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

原创 联合训练图论场

联合训练图论场题解报告传送门A.Euler题意:略分析:这题主要是先掌握欧拉通路的概念,然后是如何判断图是否存在欧拉通路。欧拉通路:通过图中每条边且只通过一次,并且经过每一顶点的通路。欧拉回路:通过图中每条边且只通过一次,并且经过每一顶点的回路。无向图: 欧拉通路:连通图+只存在0个或者两个度数为奇数的点。 欧拉回路:连通图+所有节点的度数均为偶数。有向图: 欧拉通路

2016-05-31 21:15:00 3155

原创 hdu3639 Hawk-and-Chicken

题目大意n个人相互投票,这投票关系是可以传递的。A投B,B投C,那么C就获得了两票。分析同一个强连通分量的人的票数等于点数减一。现在就缩点,然后逆向建图,从入度为0的点开始搜索。题目链接/*****************************************Author :Crazy_AC(JamesQi)Time :2016/5/25File Nam

2016-05-25 22:08:34 611

原创 uva10003 Cutting Sticks

题目链接题目大意一根长为len的木棍,上面有n个点需要切割,切割完之后有n+1根木棍。没切一根木棍时的费用等于木棍的长度,求最小的费用和。思路记忆化搜索。solve(l, r) = min(solve(l,k) + solve(k,r)) + a[r] - a[l]。l < k < r。或者是dp,dp[l][r] = min(dp[l][k] + d[k][r] + a[r] - a[l]),

2016-05-24 12:01:38 308

原创 uva1450-Airport

二分上限。如果只有一边有飞机就直接起飞。否则,将起飞机会保留下来,根据后面的情况做决定。值得注意的是suml + sumr >= chance。const int maxn = 5010;int a[maxn], b[maxn];int n;bool judge(int limit) { int l = 0, r = 0, cnt = 0; for (int i = 0;i <

2016-05-22 16:58:33 439

原创 uva10298 Power Strings

这题就是求一个字符串的最小循环节长度,然后ans = len / k; if (len % (len - nxt[len]) == 0) ans = len / (len - nxt[len]); else ans = 1;const int maxn = 1e6 + 10;char s[maxn];int nxt[maxn];void get_nxt() { int i = 0,

2016-05-22 15:50:48 415

原创 poj3764 The xor-longest Path

题目链接题目大意:一棵树上每条边有个值,求在树中找一条路径使得路径上的边的权值的抑或和最大。分析:A^A^B = B;对于每个点,我们先求出它到根节点的抑或和,然后插入到01字典树中去,并且把这些值存到容器中,因为每个值都对应图中的一个节点。最后在枚举就好了。const int maxn = 1e5 + 10;int head[maxn], nxt[maxn<<1], pnt[maxn<<1

2016-05-22 15:28:42 390

原创 单调队列或单调栈的学习及认识

单调队列或单调栈的学习及认识。。。顾名思义,数据是具有某方面的单调性质的(单增或单减等)。单调队列一般是用于优化动态规划方面问题的一种特殊数据结构,且多数情况是与定长连续子区间问题相关联。一、数据结构的认识1.双端队列deque双端队列是一种线性表,遵守先进先出的原则。其支持下面四种操作:(1)从队首删除(2)从队尾删除(3)从队尾插入(4)查询线性表中任一元素的值2.单调队列单调队列是种

2016-05-19 12:27:49 1798

原创 hdu3415Max Sum of Max-K-sub-sequence(单调队列)

题意:给定一个长n的环形序列a[1]...a[n]。就是a[1]与a[n]是相邻的。问在这个环上取连续且不超过k长度的子序列,求所有满足条件的子序列的的和的最大值。思路:求一个前缀和,那么区间[i,j]的和酒可以表示为sum[j] - sum[i-1],ans = max(all(sum[j] - sum[i-1])) (1<=j-i<=k-1),对于j而言只需要求前面满足条件的最小的s[i-

2016-05-18 14:58:21 436

原创 fzu1894 自愿者选拔

题意:中文题目就不多说了。思路:单调队列的使用,因为问的是当前排队中的最高rp,所以用个维护最大值的单调队列就好了,出队和询问的时候判断下就好了。const int maxn = 1e6 + 10;struct node { char *name; int rp; int pos; node() {} node(char c[], int rp,int

2016-05-18 12:47:52 355

原创 poj2823 Sliding Windows(单调队列果题)

题意:给出n,m接下来n个数。要求第一行输出该序列从左到右每连续m个数中最小的数,共n-m+1个数。第二行要求输出该序列从左到右每连续m个数中最大的数,共n-m+1个数。思路:简单的单调队列的应用,两个问题共性,就说一个。用一个队列q[...]来存最值,因为区间从左到右的滑动过程中,必然左边不满足距离条件的数需要出队列pos - q[head].pos >= m,也就是超出了询问区间,而且这个值删

2016-05-17 21:13:52 372

原创 uva10651 Pebble Solitaire(记忆化搜索)

题意:给定一个长12的由o-组成的字符串,有两种操作。1."oo-"可以变成"--o".2."-oo"可以变成"o--".问通过有限次上述操作后,此符串中最少有几个'o'剩下。思路:采取记忆化搜索,因为每个位置上直有两种状态,所以状态总数有 2^12种。然后根据两种操作做递归搜索。const int maxn = 20;int dp[1 << 13];char s[20];int i

2016-05-14 21:27:20 357

原创 uva10652 Board Wrapping(凸包)

题目链接题意:给出n个矩形的中间点坐标,相对Y轴的偏转度数,求所有矩形的面积和与围住这些矩形的最小凸包的面积比。思路:处理出所有的点,然后求个凸包,最后算面积。struct point { double x, y; point() {} point(double x,double y) { this->x = x; this->y = y;

2016-05-14 12:39:53 446

原创 Codeforces 453A Little Pony and Expected Maximum

题目链接题意:有个有m面的均匀骰子,每个面的数分别是1到m。现在扔n次,求最大值的期望。 思路:n次实验中最大值为x的概率p(x)=(x/m)n−(x−1/m)np(x) = (x/m)^n - (x-1/m)^n,最后的结果ans=∑mi=1p(i)∗ians = \sum_{i=1}^m p(i)*i。int main(int argc, const char * argv[]){

2016-05-14 11:39:58 440

原创 uva10816 Travel in Desert(MST + 最短路)

题意:一群人在沙漠中,给定了n个点,m条路,双向的。每条路有一定的长度且路上的温度也不一样。现在这群人想从s到t去,要使路径中的最高温度最低,有多条路径的情况下选择路程最短的,输出路径,最高温度,路程。思路:算是一道考验代码的图论题,并不是很难。可以想到最高温度最低,就用贪心(MST)直到s,t连通和保留温度t相同的边。 然后在这些边上做最短路并保存路径打印出来。/****************

2016-05-14 11:12:14 365

原创 codeforces 496B Secret Combination

题意:给定一串数的长度n和这串数s。有两种操作。1.每个位置上的数字+1,然后%10。2.右转。问这样的重复操作可以得到的最小的数字是多少?思路:在没有右转的情况下,第一种操作最多执行9次就好了,因为超过10次就会得到以前的重复串,没有意义了。现在就是枚举了第一步之后,考虑得到的当前字串的最小可以通过右转的到的最小数字了,这里呢就可以用最小表达式来做。 附上一个最小表达式的模版。。。返回的值是

2016-05-13 22:51:39 414

原创 lightoj1224 DNA Prefix

题意:给定n个字符串,求拥有前缀a[0…l]的字符串个数x乘上这个字符串长度,求这个最大值。思路:建立棵字典树,每个节点纪录上经过这个节点的字符串个数,然后dfs求解。struct node { int cnt; node* nxt[4]; node() { for (int i = 0;i < 4;++i) nxt[i] = NULL

2016-05-12 16:35:16 432

原创 uva 361 - Cops and Robbers(凸包)

题目中给出了n个cops和m个robbers和q个居民,如果一个居民在某三个cops围成的三角形中就是安全的,否则,如果在某三个robbers围成的三角形中,就是不安全的,不然就是neither。思路:这个可以转换成凸包来做。判断某个居民是不是在某个凸包内部就行了。 :下面是凸包的求法之一int getConvexHull (Point* p, int n, Point* ch)

2016-05-10 22:33:00 832

原创 Painting A Board(状压dp)

题目大意在一个二维图中有n*2个人,分别在不同的位置。现在需要进行两两配对,dis[i][j]表示这两个人之间的直线距离,问最小的配对距离和。最小配对距离:指的是所有相互配对的两人之间的距离和。思路:因为只有20个人,所以可以用状压dp来做。 dp[sta] = min(dp[sta], solve(sta ^ (1< int nCase = 0;const int maxn = 6666

2016-05-08 16:45:20 385

空空如也

空空如也

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

TA关注的人

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