自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笔记

个人笔记,欢迎交流!

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

原创 hdu5652 India and China Origins

题意:在一个地图上 有山峰(1表示),中国印度在地图上下,在原有地图上增加一些山峰,问何时中国和印度不连通。 思路:开始想着每个操作后暴力图上上下点看是否连接,果然TLE。 正确解法是并查集,可以考虑从地图左边到右边是否出现一条路阻断联通,即 左边某点到右边某点是否有关系,就可以判断上下联通。#include<bits/stdc++.h> using namespace std; const i

2016-03-28 00:41:32 361

原创 hdu5651xiaoxin juju needs help(大组合数模板)

题意:问一个字符串任意排列,能组成多少个回文串。 思路:统计每个字母出现次数,如果超过两个次数是奇数就不满足回文串。满足回文串的话,统计数量就是统计半边字母的排列组合的情形。 很容易想到组合的公式。但由于数据是500很大,只能求救模板…const int maxn=500+10; const long long mod=1000000007; long long c[maxn][maxn],a[

2016-03-28 00:36:19 326

原创 UVA208 Firetruck

题意:给你一些城市相连的关系,问你能否从第一个城市,到第k个城市,并按照字典序输出路径。 城市个数小于20,直接搜有个很坑爹的地方,数据里面会有第一个城市无法到k的情况,所以在暴力全排列的时候,你判断一下第一个城市是否能到第k个城市。还有一个剪枝处理是妙用floyd,得到城市之间是否有通路的关系数组,进行剪枝。方法一:先判断第一个城市到第k个城市是否有解。#include <fstream> #i

2016-03-18 01:01:32 334

原创 poj2376 Cleaning Shifts(区间贪心)

题意:给你n组区间,和一个范围M,每个区间起点终点,你选择最少的区间,把整个范围M铺满。 贪心:对区间起点,终点排序后,选择下一个能选的所有区间里,终点最远的。#include <fstream> #include <iostream> #include <string> #include <cstring> #include <complex> #include <math.h> #includ

2016-03-18 00:22:00 239

原创 uva10603 Fill

题意:给你三个杯子容量,a,b,c和目标d,起初a,b,都是空的,c是满的,三个杯子随意倾倒,问最少的倒水量是一个杯子水的容量满足d,如果没有满足d的情况,输出最接近d的最少倒水量。 思路: 这里 水的容量范围是200,枚举所有状态 不会超过201^2=40401,所以这里可以直接广搜一边,但是注意这里求得是倒水量的最少,不是最少步数,就需要借助一个优先队列对水量少状态的优先。#include

2016-03-17 23:58:02 449

原创 uva 140 Bandwidth

题意:《算法竞赛入门》 196页 思路 : 输入比较特殊,其他正常可以暴力枚举全排列。中间考虑剪枝,在搜索的过程出现的最大带宽比已有还要大就return。但是这题数据太弱了,不剪29ms,剪枝0ms. 由于是全排列问题,也可以直接调用next_permutation()函数简化代码。 dfs无剪枝#include<bits/stdc++.h> using namespace std;

2016-03-17 12:28:18 388

原创 poj2010 Moo University - Financial Aid

题意:一共有C名小牛,学校准备招收N名小牛入学,打算一共提供F奖学金,每名小牛有两个属性,成绩和希望得到的奖学金,问招收的N名小牛的中位数最大的情况是 ? 思路:先将C名小牛按照成绩排序,然后枚举每个小牛成绩作为中位数的情况是否满足 题意。 low[i],up[i]数组表示以i为中位数的小牛前面奖学金要求最少总和,和i后面要求奖学金数量最少总和。统计过程,借助优先队列,最大堆。#include<

2016-03-16 12:58:01 434

原创 poj3614 Sunscreen (优先队列+贪心)

题意:有n头牛,和m种防晒霜,每头牛有两个属性,下限a,上限b,要求防晒霜的防嗮属性在这个范围内才有效,每种防晒霜有两个属性,防嗮属性和瓶数。问最多能使多少头满足条件牛? 思路:明显贪心,问题是怎么贪? 从防晒霜考虑,所有防晒属性下限大于防晒霜的牛都可以使用这个防晒霜,那我们优先选择满足里面上限最小的,这样后面的牛选择空间就大了。 操作,将牛按照下限,防晒霜排好序。 每次将满足牛下限小于防晒

2016-03-16 11:35:54 489

原创 hdu3047 Zjnu Stadium(简单的路径压缩)

题意:在一个很大体育馆里,有300列的座位,行数无限,最初已知根距离值默认0,其他座位最初距离根位置未知,有一个操作 A B X,意思是A B座位同根,并且B距离根距离相对于A大X,dist[B]=dist[A]+X; 给你一些这样形式的信息,问不正确有多少? 不正确的信息一定是当前与前面已知信息冲突, 比如 A ,B X 满足冲突条件是 A B,在已经有同根的关系下,并且dist[B]-di

2016-03-16 10:57:57 428

原创 Aoj2170 Marked Ancestor

题意:给一个并查集关系的树,最初除了根是亮的,只有亮的状态,才对第二个操作有用。有两个操作,一个是:M x,意思是将x这个点点亮,第二个是 Q x,意思是统计距离x最近被点亮点的值。最后输出Q操作得到值之和。 思路:这题操作是并查集基本操作变形,可以把M x操作看做是把x这个点从整个树里连着他的子孙脱离,自己变成根。Q x寻找x的根值就好了。注意不用路径压缩。#include <fstream>

2016-03-14 19:38:50 363

原创 poj1703 Find them, Catch them

题意:在一个城市里有两个黑手党,有两个操作询问你他们的关系,和表明那连个人不是一个黑手党的(重点是表明他们不是一个集合),你判断有三种,不知道,是,不是。 思路:由于操作是表明不是一个团伙,这里的关系和poj1182很像,比普通是否在一个集合又多了一层关系,所以就用并查集分组的思想。#include <fstream> #include <iostream> #include <string> #

2016-03-14 19:30:54 297

原创 poj2236 Wireless Network

两点距离,满足小于d就可以连接。其他并查集模板题。#include <fstream> #include <iostream> #include <string> #include <cstring> #include <complex> #include <math.h> #include <set> #include <vector> #include <map> #include <queue

2016-03-14 19:17:57 269

原创 poj1182(维护并查集里更复杂的关系)

链接:http://poj.org/problem?id=1182 题意:有N只动物,1~N,每只动物只能属于A,B,C三类中的一类,A,B,C 满足 A吃B,B吃C,C吃A,的关系。 给出两种类型的关系,问那些是假的。 第一种,1,x,y 表示x,y 属于一种类型的动物 第二种 ,2,x,y 表示x吃y。 假的 信息有三种情况: 1.x,y>N

2016-03-14 19:07:57 410

原创 hdu1043 Eight

A*算法 f(n)=g(n)+h(n)#include<cstring> #include<cstdio> #include<iostream> #include<cmath> #include<queue> using namespace std; int aim=1,vis[1000000]; int nxt[4][2]={-1,0,1,0,0,-1,0,1}; int fac[]={1,1,2

2016-03-05 18:17:30 386

原创 uva725 Division

题意:从小打到输出 abcde/fghij=n的表达式,其中a~j是0~9的全排列。 输入商n,输出满足的式子。 暴力枚举 fghij就好了。#include <fstream> #include <iostream> #include <string> #include <cstring> #include <complex> #include <math.h> #include <set>

2016-03-03 20:16:47 705

原创 uva1600 Patrol Robot

题意:每个机器人有一个连续穿越k道墙的属性,然后这里走过的点可能会重复路过,对于每个点需要加一个属性,第几次穿墙路过此地。所以这题标记数组是三维的,其他就是广搜模板。#include<bits/stdc++.h> #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) #define p

2016-03-03 16:19:06 371

原创 uva439 Knight Moves

广搜 模板题#include<bits/stdc++.h> using namespace std; queue<pair<int,int> >que; int sx,sy,mx,my; int nxt[8][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{1,-2},{2,-1}},v[10][10]; int main() { char a[1

2016-03-03 16:11:57 391

原创 uva536 Tree Recovery

重建树。#include<bits/stdc++.h> using namespace std; int l[30],r[30],pre[30],in[30],n,flag[30],ok; int bulid(int l1,int r1,int l2,int r2) { if(l2>r2) return 0; int t=pre[l1]; int p=l2; whil

2016-03-03 15:48:50 464

原创 uva673 Parentheses Balance

括号匹配。 就注意一点,cin原来是不读回车的. getline()可以将缓冲区的回车带走。import java.util.*; import java.io.*; import java.math.*;public class poj_1205 { public static void main(String[] args){ BigInteger f[]=new B

2016-03-03 15:47:29 343

原创 poj1205 Water Treatment Plants

高精度+dp 的水题 题意:有n个城市,每个城市有三种排污水的选择,在自己城市排出,排向左边的城市(如果左边有城市),排向右边的城市(如果右边有城市),问一共有多少种排水方式。 思路:设dp[i]表示有i个城市排水方案数,再加一个城市dp[i+1]可以由三种方案构成 第一,第i+1个城市选择从自己排出,前面i个城市保持不变。 第二,i+1城市向i城市运输,从i城市排出,前面i个城市;不受影响

2016-03-03 15:44:49 462

空空如也

空空如也

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

TA关注的人

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