自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UVA 10029 - Edit Step Ladders

/*是最长子序列的变形题  直接做的话会TLE 因为有25000组数据   但是我们可以减少结点数目  通过改变当前单词 在利用二分查找 是否有这个单词 可以减少时间*/#include#includeint d[25010];char str[25010][20];int add(char *t,int pos,char c){    ch

2013-02-27 20:22:39 510

原创 10067 - Playing with Wheels

#include#include#include#includeint first[5],end[5];int vis[20010];using namespace std;struct D{    int d;    int p[5];};int hash(int *s){    int temp=0;    for(int i = 0

2013-02-27 13:42:38 453

原创 10249 The Grand Dinner

#include#include#includeint min(int a,int b){    return a>b?b:a;}struct S{    int id,x;    int c[110];} a[110],b[110];int cmp(const void *a,const void *b){    struct S

2013-02-27 13:42:03 494

原创 10199 - Tourist Guide

/*有关割点的问题*/#include#include#include#includeusing namespace std;char a[110][32];int dfs_clock,pre[210],iscut[210],low[210];vectorg[210];int cmp(const void *a,const void *b){

2013-02-26 23:58:48 423

原创 10120 - Gift!

/*这是个数学规律的题   n》49的时候 全部可以let   在此附加推导过程的链接http://www.algorithmist.com/index.php/UVa_10120惭愧..看了好久没看懂*/#include#includeint a[100],b[100],n,m;int judge(int *s){    for(int i =

2013-02-26 18:04:01 694

原创 11389 - The Bus Driver Problem

/*简单的贪心问题, 要求出最小的额外支出 只需要 一个正序一个逆序就可以*/#include#include#includeint n,d,r;int a[110],b[110];int cmp(const void *a,const void *b){    return *(int *)a-*(int *)b;}int cmp1(con

2013-02-26 13:30:20 445

原创 11714 - Blind Sorting

/*这是关于第K大数最小比较次数的一个题一个序列  :  数两两比较 大的进入下一层  形成一个堆  这样 得到最大数至少需要n-1次寻找第二大的数 只需要比较那些 与最大数比较过的数 也就是每层有一个数 (除去最后一层)需要(int)log2(n-1)次  。*/#include#includeint main(){    int n;    whil

2013-02-26 00:37:09 553

原创 UVA 1346 - Songs

/*    这是一个贪心的题目,要求求出最小的sum = b1+..+bn  ,bi= fi*(a1+..+ai);假设以求出最小的sum  得到了最优序列 那么 bi+b[i+1] = fi*(a1+..ai) + fi+1*(a1+..+a[i+1])sum1 = (a1+..ai-1)*(fi+f[i+1]) + f[i+1]*a[i+1]+ f[i+1]*a[i] + fi*a

2013-02-25 20:30:46 870

原创 UVA 1368 - DNA Consensus String

/*字符串类的水题, 就是给m个DNA序列, 让你找出一个DNA序列 这个序列要求 跟给的m个序列不同之处最小,也就是最相似*/#include#includechar DNA[51][1010],s[1100];int pos[4]= {0,2,6,19},m,n,d[1100];int main(){    int t,pd[26];    sc

2013-02-25 16:56:05 4256

原创 UVA 1339 - Ancient Cipher

/*水题,只是题意有点难懂, 就是判断2个字符串之间是不是有变化关系 任意一个字母都会有不同的变化,最后变成另一个字符串。但不同的2个字符 不会变成同一个字符,也就是说 字符变化没有明确的规律 所以只需要判断每个字符出现的次数就行,2个次数序列比较下就可以,*/#include#include#includechar a[110],b[110];int pa

2013-02-25 16:35:25 2317

原创 UVA 11039 - Building designing

/*水题,题目大意就是 给出一组数 要求从大到小排列 但是相邻的2个数 必须是异号 问:这个序列最多能排多少个数?很简单 去掉符号排序,然后一个循环判断符号就可以*/#include#include#includestruct Bu{    int size;    int color;} a[500010];int cmp(cons

2013-02-23 22:14:14 391

原创 UVA 11636 - Hello World!

/*LRJ新书的第一题,是个水题,不过还是因为输入方式的问题导致了TLE。。这题打表跟直接算 所耗的时间是一个样的。(经验证)*/#includeint copy[100];int main(){    int n;    copy[0] = 1;    for(int i = 1; ; i++)    {        copy[i

2013-02-23 21:56:51 385

原创 10881 - Piotr's Ants

/*这题是新白书上的例题  看了上面的做法 我想了好久才想明白。首先在距离的概念上 2个蚂蚁相遇  掉头 等于 对穿而过。所以在距离上可以直接计算终态但每只蚂蚁位置的ID会变化,所以在这个问题上我纠结了很长时间才明白第i个蚂蚁无论怎么走还是在第i个位置上 如:第i个蚂蚁往右走 若遇到第i+1个 会掉头,还是在第i个位置同理往左走也一样, 所以只需要记录蚂蚁的初始位置就可以。

2013-02-21 18:59:47 318

原创 UVA 11464 - Even Parity

/*我采用的是白书上的枚举方法。 枚举第一行 2^15种可能, 根据第一行计算出后面行的可能存在方式。然后与输入的进行比较。*/#include#include#define INF 1int n,a[20][20];int min(int x,int y){    return x}int check(int s){    int b[20][

2013-02-18 23:04:05 463

原创 UVA 11384 - Help is needed for Dexter

/*算是一个简单 是数学规律吧 如 : 123456  最简单的步骤是456减4 得123012 然后 223 减2 得101010 再减一得000000可以看的出来 n=6时 只需要一步就可以达到n=3的状态 123012 所需的步骤与3相同 不是么~?所以可以得出简单的规律 递归代码如下。*/#include#includeint f(int n){

2013-02-18 21:31:45 823

原创 UVA 11520 - Fill the Square

#include#includechar g[11][11];int n;int judge(int x,int y,char c){    if(g[x+1][y]==c&&x        return 0;    if(g[x-1][y]==c&&x>0)        return 0;    if(g[x][y+1]==c&&y

2013-02-18 21:15:43 501

原创 10271 - Chopsticks

/*逆序输入、DP*/#include#include#define INF 1int a[5010],d[1100][5100];int min(int a,int b){    return a>b?b:a;}int main(){    int t,k,n;    scanf("%d",&t);    while(t--)

2013-02-18 19:12:23 373

原创 11300 - Spreading the Wealth

/*利用中位数求解*/#include#include#include#includelong long a[1000001],c[1000001];using namespace std;int main(){    int n;    while(scanf("%d",&n)==1)    {        long long M=0;

2013-02-17 16:20:41 457

原创 1388 - Graveyard

/* 一定有一个不移动的点 作为坐标原点,再计算需要移动的点*/#include#include#includeint main(){    int n,m;    while(scanf("%d%d",&n,&m)==2)    {        double ans = 0;        for(int i = 1; i         {

2013-02-17 16:15:30 389

原创 UVA 11729 - Commando War

/*这题是一个简单的贪心问题,J从大到小排序可得最优解 */#include#includeusing namespace std;struct War{    int b,j;}a[1010];bool cmp(War p,War q){    return q.j}int main(){    int n,cas=0;

2013-02-15 19:13:02 375

原创 UVA 11292 - Dragon of Loowater

/*很简单的一个题, 从小到大排序,只要骑士x大于等于龙的y 就+x;每个骑士只能雇用一次*/#include#include#includeint a[20010],b[20010];int cmp(const void *a,const void *b){    return *(int *)a-*(int *)b;}int main

2013-02-15 18:45:26 272

原创 UVA 1315 - Crazy tea party

/* 一个正序圆圈变成一个逆序圆圈 所需的最小步骤, 在纸上模拟一下过程就能得出最佳答案。*/#include#includeint min(int a,int b){    return a>b?b:a;}int main(){    int t,num,n;    scanf("%d",&t);    while(t--)    {

2013-02-15 18:32:53 788

原创 UVA 10746 - Crime Wave - The Sequel

/*题意 : n个银行 m个警察 要求每个银行都有警察过去 可以想象成二分图来解决二分图的最优匹配 求出最小权值  KM算法即可*/#include#include#includeint n,m;double w[30][30];double lx[30],ly[30],slack;int left[30],r[30];bool s[30],t[30];

2013-02-14 21:41:13 528

原创 hdu 1083

/* 二分图匹配, p门课程n个学生 找出p个学生代表 不能有重复的 这是我对题意的理解也就是X Y 点集一一对应*/#include#includeint p,n; // ke数 点数int g[410][410],vis[410],pr[410];bool SP(int u){    int v;    for(v = 1; v

2013-02-14 15:51:50 288

转载 二分图最大匹配算法

二分图的最大匹配就是要在二分图的边集E中找到一个子集S,使S中的任两条边没有公共顶点,且|S|达到最大。二分图有很多实际应用,如工作分配问题。同时二分图最大匹配问题又可以转化成“最小顶点覆盖”、“最小路径覆盖”、“最大独立集“等问题,因此显得非常重要。下面就介绍二分图最大匹配算法。二分图最大匹配可以转换成最大流问题来解。假设二分图的两个顶点集分别为X, Y,那么我们在图中添加一个源s,和一

2013-02-14 14:58:30 916

转载 二分图最大匹配(匈牙利算法)

二分图最大匹配(匈牙利算法)  这两天自学了一下二分图的最大匹配(匈牙利算法)的算法,现在稍微总结一下。(1)前提说明:(用到的定义说明)1。二部图:  如果图G=(V,E)的顶点集何V可分为两个集合X,Y,且满足 X∪Y = V, X∩Y=Φ,则G称为二部图;图G的边集用E(G)表示,点集用V(G)表示。2。匹配:  设M是E(G)的一个子集,如果

2013-02-14 14:38:06 622

原创 10258 - Contest Scoreboard

#include#include#includestruct B{    int ok;//参赛标记    int num,time,name;// 题数 时间 队名    //int pt;// 罚时    int vis[10][5]; // 题目AC标记 时间 罚时 0 1 2} a[110];struct C{    int time

2013-02-12 22:20:54 448

原创 UVA 10315 - Poker Hands

/*我去! 挑战编程上的神题!  写了500行 调试了3小时艰难AC! */#include#include#includeusing namespace std;struct S{    char v1,s;    int v;} a[6],b[6];int cmp(S x,S y){    return x.v>y.v;}int

2013-02-11 23:17:18 382

原创 UVA 10205 - Stack 'em Up

#include#includeint map[110][60];char suit[10][20] = {"Clubs","Diamonds","Hearts","Spades"};char value[15][10] = {"2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"};int ma

2013-02-11 00:02:03 382

原创 UVA 11198 - Dancing Digits

/*刘汝佳的四个神题之一, 就是一个bfs+hash判重的最短路问题。*/#include#include#includeint a[10],prim[110];int head[1001000],next[1001000];struct S{    int step;    int s[10];} q[1001000];int judg

2013-02-10 20:09:05 316

原创 UVA 10624 - Super Number

/* 刘汝佳的神题啊 2796ms擦边AC....*/#include#includeint n,m,flag;char s[40],tp[40];int judge(int x){    int temp=0;    for(int i = 0; i     {        temp = temp*10+s[i]-'0';

2013-02-07 18:11:18 460

原创 UVA 10391 - Compound Words

/* hash的一个题 偷懒用的map做就是找由2个字典单词组成的 单词*/#include#include#include#include#include#includeusing namespace std;map vis;char s[120100][110];int solve(int n){    for(i

2013-02-07 16:05:35 402

原创 hdu-1269

/*强连通分量 模板题 tarjan算法写的*/#include#include#include#includeusing namespace std;int scc[100100],m,n;int dfn[100100],low[100100],times,ma,mb,scc_cnt;stack q;vector map[100100];int dfs

2013-02-07 14:24:26 325

原创 hdu-1103

/*其实就是一个优先的问题,直接模拟的*/#include#include#includeint cmp(const void *a,const void *b){    return *(int *)a-*(int *)b;}int main(){    int num[40],str[40][1100];    while(scanf("%d %

2013-02-07 14:22:46 663

原创 hdu1030

/*数学规律,第一种方法:找3种层数之差加起来  横向 左斜  右斜  第二种: 找出上面的点 的辐射范围*/#include#include#include#includeint main(){    int m,n;    while(scanf("%d%d",&m,&n)==2)    {        int temp;        i

2013-02-07 14:21:24 337

原创 hdu1007最近点对

#include#include#include#include#includeusing namespace std;struct D{    double x,y;} a[100100];int tmp[100100];double cmp(D a,D b){    return a.x}double cmpy(int p,i

2013-02-07 14:19:13 319

原创 UVA 10129 - Play on Words

/*找欧拉路,先判断图是否连通,*/#include#include#includeint numf[30],nume[30],vis[30];int map[30][30];int dfs(int x){    vis[x]=0;    for(int i=0; i         if(vis[i]&&map[x][i])

2013-02-07 14:17:02 1117

原创 UVA 10047 - The Monocycle

/* 四维的BFS  */#include#include#include#includeusing namespace std;int n,m,flag;int d[5][5]= {{-1,0},{0,1},{1,0},{0,-1}};char map[30][30];int vis[30][30][30][30];struct node{

2013-02-07 14:14:07 287

原创 UVA 705 - Slash Maze

/*判环的个数 和最长路径 这个题需要将输入的 / \ 转化  ‘\’ 为200  ‘/’为  001                                                           020           010                                                           002

2013-02-07 14:12:55 316

原创 UVA 532 - Dungeon Master

/* 简单的六方向bfs*/#include#include#includeusing namespace std;int l,r,c;int ex,ey,ez,max1,count,ok;char map[110][110][110];int vis[110][110][110];int d[4][6]= {{0,0,0,0,1,-1},{0,0,1,-1

2013-02-07 14:09:45 277

空空如也

空空如也

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

TA关注的人

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