自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 LA 4394 String painter 区间DP -

题目地址:http://vjudge.net/problem/UVALive-4394很明显的区间DP区间DP的套路就是 d[i][j]的在区间 (i,j) 刷的次数转移也一般是 d[i][j]->d[i][k]+d[k+1][j]; 也就是一个区间分成两个区间那么对于这道题就是想想怎么转移,也就是怎么将一个区间转移成两个区间d[i][j]->d[i][k]+d[k+1

2016-11-26 11:23:53 423

转载 最优三角剖分

找不到纯三角剖分的题目..转自:http://www.cnblogs.com/Jason-Damon/p/3298172.html题目描述:用多边形顶点的逆时针序列表示凸多边形,即P={v0,v1,…,vn-1}表示具有n条边的凸多边形。       给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权函数w。要求确定该凸多边形的三角剖分,使得即该三

2016-11-21 14:54:51 2408

原创 Codeforces Round #380 C. Road to Cinema .

题目地址:http://codeforces.com/contest/738/problem/C#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)const int INF=0x3f3f3

2016-11-20 20:36:22 306

转载 求两圆相交的面积

转自博客:http://blog.sina.com.cn/s/blog_850498e20100w6fq.html假设半径小的圆为c1,半径大的圆为c2。c1的半径r1,圆心坐标(x1,y1)。c2的半径r2,圆心坐标(x2,y2)。d为两圆圆心连线的长度。相交面积为Sd=sqrt((x1-x2)^2+(y1-y2)^2)(1)如果r1+r2那么两圆相离,相交面积S=0

2016-11-20 16:54:20 946

原创 HRBUST 1600 线性代数中的矩阵问题 区间DP .

题目地址:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1600区间DP入门题#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int

2016-11-20 11:35:08 293

原创 LA 2038 Strategic game 树形DP .

题目地址:http://vjudge.net/problem/UVALive-2038 以前做过类似的题 就是,无根转有根 然后普通的DP d[u][i] 表示u节点的父亲有没有被选中,i==1表示被选中,反之没有 为什么弄u的父节点呢,因为 如果弄u的节点信息,那么当u没被选中,子结点至少有一个要被选中,那么只能枚举被选中的那个,无法递推,有后效性#include <bits/stdc+

2016-11-19 19:31:17 242

原创 UVA 10817 Headmaster's Headache DP *

题目地址:Headmaster’s Headache 刘汝佳的算法如下#include <bits/stdc++.h>using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)const int INF=0x3f3f3

2016-11-19 14:47:10 310

原创 UVA 10564 Paths through the Hourglass .

题目地址:Paths through the Hourglass这题目好烦好烦好烦!! 因为要算种类数,所以,d[i][j][k]表示从下往上走到(i,j)格子含k数字 有几种方法#include <bits/stdc++.h>using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,

2016-11-19 14:05:31 251

原创 LA 3530 Martian Mining DP .

题目地址:Martian Mining题目的意思就是,每个格子可以放 朝上的管子或者朝左的管子,问最多能得到多少矿d[i][j][k]表示到i,j格子且此格子是k放置的, 最多能得到多少矿后来写出来后发现不行,状态转移不行,你知道 此格子怎么放,周围的格子怎么放,但是要判断矿能不能送到目的地还需要,将沿途的所有k==1的格子加上所以换个状态定义,d[i][j][k]表示i,j这一个格子,若k==1,

2016-11-19 10:14:16 347

原创 LA 4727 Jump DP *

题目地址: LA 4727 Jump 转自博客:shiqi_614 约瑟夫环的问题。 题目给你n,k。n即约瑟夫环的长度,k是淘汰掉从当前开始数的第k个人,然后问你被淘汰的最后三个人是谁。 逆向思维。如果某个人A是最后被淘汰掉的,当最后只剩下一个 人(即A)时,A一定是在0位置(我们从0位置开始,方便取余运算)。那么当只剩下两个人时,A的位置又是在哪呢?

2016-11-18 21:57:25 273

原创 UVA 11795 Mega Man's Mission -

题目地址:http://vjudge.net/problem/UVA-11795如果 原来的枪不会掉的话,那么首先先杀谁都没什么关系了d[i][j] 表示杀了i人

2016-11-18 21:09:32 362

原创 LA 4731 Cellular Network -

题目地址:http://vjudge.net/problem/UVALive-4731如何 分组 问题 以往遇到的这种题目,需要分组的,都是二进制枚举子集,暴力求解的,但这里数据量达100,所以根本不可能这个应该是DP,DP的状态压缩也不可能,都不知道怎么表示状态,那么只有贪心了 ,贪心也没有思路..看题解:先从大到小排序,那么就是连续的数字中分组了,那么就可以DP

2016-11-18 12:06:26 353

原创 UVA 11404 Palindromic Subsequence -

题目地址:http://vjudge.net/problem/UVA-11404一开始以为是逆序后再求  LICS , 完全不知道怎么做然而 只是个  逆序后求 最长且字典序最小的 公共子序列#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i

2016-11-18 08:58:23 195

原创 UVA 11552 Fewest Flops .

题目地址:http://vjudge.net/problem/UVA-11552hhh,自己写出来了1.状态如何表示:要达到两种目的:1)能记录该祖中有几块,2)每组中的字母有几个我选择用 s[i][j] 表示 i组中,j+'a'+1字母有几个,特别的,用s[i][0]记录i组中有几块2.状态方程怎么定义,怎么转移肯定有一维i表示在第几组,因为每次选字母时和

2016-11-17 21:32:05 228

原创 UVA 10534 Wavio Sequence -

题目地址:http://vjudge.net/problem/UVA-10534嗯       从左向右求一遍LIS,从右到左求一遍LIS某个数 两遍LIS大小都一样 且是奇数,那么就是符合题意的了求LIS的时候要用O(nlogn)的算法 就是用一个数组g[i],保存1~i同长度时最小数字#include using namespace std;#define REP(i,

2016-11-17 14:57:33 178

原创 LA 4256 Salesmen .

题目地址:http://vjudge.net/problem/UVALive-4256明显用的是动态规划最先想到的是 d[i] 表示 1~i个最少需要修改几次然而 ,这个 状态无法表示修改了什么数,修改成什么,所以肯定不行当状态无法表示的时候,有两种方法:1,DFS状态转移十分方便,就是要很好的剪枝2,给状态增加一维,比如d[i][j]表示i位置数字式j

2016-11-17 09:56:54 242

原创 UVA 11584 Partitioning by Palindromes .

题目地址:http://vjudge.net/problem/UVA-11584d[i]表示字符0~i划分成最小回文串的个数#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)const

2016-11-16 19:55:00 201

原创 LA 3716 DNA Regions 数形结合 -

题目地址:http://vjudge.net/problem/UVALive-3716和LA4726 一样,前缀和保存1~i个的不同的数量于是得到 点p(i,sum(i)),ans=min{k=((sum(j)-sum(i-1))/(j-i)|k满足题意 }那么就是对于每个点t,扫描它之前的点,找出一个 斜率最小且满足题意的点还可以再优化,下凸点在后面是没用

2016-11-15 21:55:59 321

原创 LA 5052 Genome Evolution -

题目地址:http://vjudge.net/problem/UVALive-5052题目意思就是 A中[i,j] (j>i) 中的元素数量要和 B中[a,b] (b>a)中的 一样,问有几组?最主要是保存数字的位置关系 (连续)第一思路:因为只要是连续就好了  ,  想想前缀和的方法: sumA[i]保存 1~i个元素中  n这个数有m个, 然后找sumA[j]-sumA[i

2016-11-15 09:55:52 240

原创 LA 4356 Fire-Control System -

题目地址:http://vjudge.net/problem/UVALive-4356肯定是暴力暴力 先定半径,枚举点效率高点点可以事先极角排序,就可以利用atan2算角度,atan2算的是与x正半轴的夹角(180,180],排序后是顺时针的转,所以两个角度相减得到的是顺时针转的角度,当转过一圈,就要加2*PI然后可以枚举半径,得到所有的小于R的点,枚举每个点出发,计算包含

2016-11-13 21:54:31 229

原创 暴力的优化方法总结

暴力就是所有解都试一下,找出最优解1.贪心一些显而易见的不可能的解事先排除数组排序啊。事先处理一些数据什么的2.枚举的顺序(定一个量,枚举另一个)一开始枚举不同的量的时间复杂度可能不一样UVa 10125 Sumsets 枚举4个数,变为枚举2个数UVa 10391 Compound Words 枚举两个单词拼成一个,不如枚举一个单词拆成两个

2016-11-13 15:40:05 826

原创 LA 4851 Restaurant 找规律 -

题目地址:http://vjudge.net/problem/UVALive-4851找规律案例中的合法点:注意:A,B也算个餐馆,也要考虑进去代码如下:#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) f

2016-11-13 12:32:42 285

原创 UVA 1451 Average 数形结合+单调队列 *

题目地址:http://vjudge.net/problem/UVA-1451#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)const int maxn=100000+5;char

2016-11-12 09:01:08 268

原创 UVA 1471 Defense Lines 单调队列 -

题目地址:http://vjudge.net/problem/UVA-1471#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)const int maxn=200000+5;int a

2016-11-11 08:54:53 246

原创 UVA 11572 Unique Snowflakes .

题目地址:http://vjudge.net/problem/UVA-11572第一种用set做#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)int A[(int)1e6+5];

2016-11-10 09:15:33 278

原创 UVA 11054 Wine trading in Gergovia .

题目地址:http://vjudge.net/problem/UVA-11054#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;i>=(int)(b);--i)typedef long long LL;int mai

2016-11-09 20:33:23 209

原创 UVA 10391 Compound Words -

题目地址:http://vjudge.net/problem/UVA-10391一开始是想枚举任意两个单词/*for i 1 n for j i+1 n if find(str[i]+str[j])!=NULL then saveO(n*n*logn)*/但复杂度太高,然而单词长度是很小的,所以不如直接拆分单词,找组成这两个单词的单词是否存在 #include

2016-11-09 19:58:42 227

原创 UVA 10763 Foreign Exchange .

题目地址:http://vjudge.net/problem/UVA-10763题目明显是 A到B要找个B到A的学生31 22 33 1案例按理说是错的,但却能AC,就是按出入度记录(只要成环就是对的)思路:A->B的学生数量和B->A的学生数量要一样#include using namespace std;#define REP(i,a,b)

2016-11-09 18:06:26 171

原创 LA 2963 Hypertransmission -

题目地址:http://vjudge.net/problem/UVALive-2963目标:不稳定的星球越多越好,其次才是R越小越好最简单的就是直接暴力,枚举所有R(任意两点之间的距离),计算在此R内不稳定的星球的数量:枚举每个点,他们在R长度内,到其他星球A和B的数量但是这样子有n*m*m复杂度。想想有什么能改进的因为R肯定是某任意两点之间的距离,将其从小到达枚举的,那么在算第二

2016-11-08 18:59:10 255

原创 UVA 10125 Sumsets .

题目地址:http://vjudge.net/problem/UVA-10125一个集合中 ,三个不同的数加起来,等于集合中的另一个数集合有n=1000个数最简单的方法是枚举4数个,O(n*n*n*n)肯定不可能试着把式子变一下型:a+b+c=d->a+b=d-c ,或者a+b=c-d,(a,b,c,d不是同一个数字)

2016-11-08 14:32:38 199

原创 UVA 10827 Maximum sum on a torus .

题目地址:http://vjudge.net/problem/UVA-10827就是普通的最大子矩阵和,因为是环面,所以没上边界和下边界,但不能重复加同一个地方首先想到的就是,上下拼接,左右拼接#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,

2016-11-07 18:39:15 207

原创 LA 3621 Power Calculus .

题目地址:http://vjudge.net/problem/UVALive-3621决策就是,之前算过的都能用在这一步的计算,所以把之前的数字全加一遍或者减一遍就好了#include using namespace std;#define REP(i,a,b) for(int i=a;i<=(int)(b);++i)#define REPD(i,a,b) for(int i=a;

2016-11-07 10:32:58 356

原创 LA 3406 Bingo *

题目地址:http://vjudge.net/problem/UVALive-3406肯定是暴力主要是怎么枚举序列,怎么剪枝从表中任选字母肯定不行的,因为最多有4*4*4个字母所以反着想想:假设我们已经达成目标,知道哪些card的行(或列)Bingo,再来判断最短的序列,不就简单多了。所以枚举每个card的Bingo的那一行(或列),那么也就10*10*10*10个不同种类最多

2016-11-06 21:44:29 466 2

原创 UVA 1354 Mobile Computing 枚举二叉树 *

题目地址:http://vjudge.net/problem/UVALive-3403要使天平平衡,满足n*a=m*b (总量为n,m),所以不管n,m多少,总可以找到两个a,b使天平平衡,所以,只需要递归的暴力枚举每个天平的左右两端的重量,保存其最大长度就好那么怎么枚举重量呢,因为挂坠也就6个,所以可以用二进制表示,算出所有挂坠任意组合的子集考虑数据结构:1)枚举出所有二叉树,那

2016-11-06 08:18:27 455

原创 UVA 10825 Anagram and Multiplication 暴力 -

题目地址:http://vjudge.net/problem/UVA-10825m位n进制整数kk*(2~m)的每一位都是原来的m位暴力数位DP?但这样时间效率很低好吧 ,是通过枚举第一位一个一个算出所有不同位置上的数字1)

2016-11-04 12:23:04 286

空空如也

空空如也

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

TA关注的人

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