自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笔记

个人笔记,欢迎交流!

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

原创 poj3225 Roadblocks

题意:某道路共有R条道路,N个路口。问从1号路口到N路口的次短路是?次短路是比最短路长度次短的路径。 思路:Dijkstra 算法虽然只能求最短路,但是我们修改一下。次短路:要么是到终点的前某一个点的最短路加上它到终点的路,或者是要么到它的次短路加上到终点的最短路。因此,对于每个顶点,我们记录的不仅是最短路,还有 次短路距离。接下来就是和Dijkstra()一样的做法,不断更新这两个距离就可以求出

2016-04-02 18:25:13 324

原创 hdu1160 FatMouse's Speed

题意:求一个上升序列长度,和输出序号。这里就需要我们标记最初序号,用一个pre[]回溯回去。总之很水的dp。#include<bits/stdc++.h>using namespace std;struct node{ int w,v,t;}a[1000+10];bool cmp(node a,node b){ return a.w==b.w ? a.v>b.v : a

2016-04-02 10:52:12 303

原创 poj3040Allowance

题意:农夫约翰要给奶牛Bessie发工资了 ,每周至少 C 元。约翰手头上有面值V_i的硬币B_i个,这些硬币的最小公约数为硬币的最小面值。求最多能发几周? 思路:首相将面额大于等于C的硬币,直接发送。对于生下硬币,先从大到小排序,凑出最接近C的面额,不超过C,然后在从小到大,凑出刚好大于等于C的面额。然后修改它们数量,一直重复这个操作。最后所有都凑不出C为止,思路好想,操作不好写。#includ

2016-04-01 20:30:45 692

原创 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 327

原创 UVA208 Firetruck

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

2016-03-18 01:01:32 335

原创 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 389

原创 poj2010 Moo University - Financial Aid

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

2016-03-16 12:58:01 435

原创 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 430

原创 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 411

原创 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 372

原创 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 344

原创 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

转载 Java解决高精度计算问题

学习参考于这几个博客:http://blog.csdn.net/guo_love_peng/article/details/6634150http://blog.csdn.net/hqd_acm/article/details/5751686http://blog.csdn.net/w00w12l/article/details/7290750自己总结一下:1.

2016-02-29 18:34:39 853

原创 hdu1753 大明A+B

import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;import java.text.*;import java.util.*;import javax.crypto.CipherInputStream;import java.io.*;import java.lang.refl

2016-02-28 23:55:48 273

原创 hdu 1715 大菲波数

java做高精度真好用。import java.math.BigInteger;import java.util.Scanner;import java.text.*;import java.util.*;import javax.crypto.CipherInputStream;import java.io.*;import java.lang.reflect.Array;public

2016-02-28 23:41:13 293

原创 hdu1316 How Many Fibs?

import java.math.BigInteger;import java.util.Scanner;import java.text.*;import java.util.*;import javax.crypto.CipherInputStream;import java.io.*;import java.lang.reflect.Array;public class Main {

2016-02-28 23:27:20 375

原创 hdu 1063 Exponentiation/poj 1001

求高精度小数的n次幂。 并要求结果,省去前导0,和省去小数点前0. toPlainString() 转换成朴素字符串表示,防止toSting 变成科学计数法。import java.util.*;import java.math.*;import java.io.*;public class hdu_1063{ public static void main(String[] args

2016-02-28 22:40:41 324

原创 poj2305 Basic remains

高精度整数转进制取模。 Biginteger a=cin.nextBigteger(b); //高精度整数a以b进制读入。 a.toString(b)//a以b进制字符串形式输出import java.io.*;import java.math.*;import java.util.Scanner;public class poj_2305 { public static void

2016-02-28 16:56:10 334

原创 poj1311 Octal Fractions

将一个8进制的高精度的小数转换成10进制小数。 java BigDecimal水果,详见代码import java.util.*;import java.io.*;import java.math.*;public class Poj_1131 { public static void main(String[] args){ Scanner cin=new Scanne

2016-02-28 16:36:30 451

原创 hdu1024 Max Sum Plus Plus(最大子段和加强版)

关键字:dp   滚动数组题意:输入n,m表示 一排n个数,求m个不相交的子段,他们和最大。思路:果断dp啊,最大子段和的变形,联想最大子段和的dp[i] 设以当前i为结尾的子段和最大的结果,这里设dp[i][j]为以j结尾构成了i段不相交子段和的最大结果。我们就要思考当前dp[i][j]是由那些状态转移过来?思考这里对于每个数字,我们的策略是要么选择他作为当前这段的,要么让它单独

2016-01-24 19:03:15 505

原创 uva10625 Undraw the Trees

给一个图,由字符串构成的树,让你前序遍历输出这个树,并不需要构建一棵树,直接递归输出,详看代码。#includeusing namespace std;char s[210][210];int n;void dfs(int r,int c){ printf("%c(",s[r][c]); if(r+1<n&&s[r+1][c]=='|'&&s[r+2][c]=='-'

2016-01-22 23:21:34 539 2

原创 poj2230 Watchcow

题意:输出一条经过每条边有且只有两次的通路,把这个无向图当做有向图dfs搜一次欧拉回路。但是注意邻接矩阵存图MLE,所以我选择vector处理的邻接表。#include<cstdio>#include<vector>#include<stack>#include<cstring>#include<iostream>using namespace std;const int maxn=10

2016-01-22 18:20:32 124

原创 hdu3018Ant Trip(欧拉道路的判断)

题意:给你点和边,问至少可以几笔把所有边画完,孤立的点没有边,不需要画。 思路:在无向图里,满足一笔画就是欧拉图,奇数点度的数量两个或无,如果出现更多奇度点,说明不能一笔画,而一笔画可以最多消掉两个奇度的点,所以每个连通块里需要画的次数就奇度点个数/2。 于是,整幅图需要画的次数,等于所有奇度点个数之和/2+欧拉图的个数。</c++>#include<bits/stdc++.h>typede

2016-01-22 15:34:04 549

原创 uva10129Play on Words(判断欧拉道路的存在)

题意:每个首尾字母一样的单词可以相连,问是否存在一条能连通所有单词的通路。典型判断欧拉道路是否存在。判断欧拉通路条件是,图首先是连通的,无向图里面,最多有两个点度数为奇数,有向图是入读等于出度,最多有两个点,一个点入度比出度大一,另一个点出度比入度大一。这题判断图连通性,可以选择并查集或者dfs.并查集#includeusing namespace std;int f[1100

2016-01-22 11:29:11 553

原创 poj3046 Ant Counting

题意:挑战dp上 多重数分组问题,告诉你有n种数,每种数有ai个,问组成 m有多少种可能。最初的递推方程式:dp[i][j]=(求和)dp[i-1][j-k] (k#include#include#includeusing namespace std;int T,A,S,B,dp[2][110000],a[1100];const int mod=1000000;int

2016-01-20 18:08:27 367

原创 hdu1080 Human Gene Functions

题意:最大公共子序列的变形。思路:见代码,太水了,就不写了#includeusing namespace std;char S[110],T[110];int ans[110][110],dp[110][110];void init(){ ans['A']['A']=ans['C']['C']=ans['G']['G']=ans['T']['T']=5; an

2016-01-20 11:49:42 462

原创 uva 624 CD(记录路径)

题意 : 01背包问题,但是需要记录最优状态的路径,并输出。思路:用一个vis二维数组记载,每一步是否转移,因为 dp[i][j]只能是dp[i-1][j]或是dp[i-1][j-t[i]]+t[i]其中大的转移过来,如果dp[i][j]=dp[i-1][j]说明当前没选,vis[i][j]=0;否则vis[i][j]=1,然后再从终点回溯过来。#include #include #i

2016-01-19 22:30:02 370

原创 uva816 Abbott's Revenge(bfs 模拟代码题)

锻炼打代码的能力....#includeconst int inf=0x7fffffff;using namespace std;struct Node{ int x,y,dir;};int dir;int has_edge[10][10][5][4],d[10][10][5],r0,r1,r2,c0,c1,c2;Node p[10][10][5];const char*

2016-01-18 22:41:22 869

原创 hdu1423 Greatest Common Increasing Subsequence

题意:求最长公共上升子序列的长度。思路:结合了LCS,LIS两个算法的思想,最初我根据:LCS很容易想到定义 dp[i][j] 表示第一格串前i个和第二个串的前j个最长公共上升子序列,#includeusing namespace std;int a[700],b[700],dp[700][700];const int inf=0x7fffffff;int main(){

2016-01-18 18:40:37 346

空空如也

空空如也

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

TA关注的人

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