UVA
文章平均质量分 50
飞上天空的鱼
这个作者很懒,什么都没留下…
展开
-
UVA 11584 - Partitioning by Palindromes
/*题意: 求给出串中 最少有多少个回文 dp */#include#include#define INF 1char s[1010];int d[1010];int min(int x,int y){ return x>y?y:x;}int judge(int x,int y){ for(int i = x; i原创 2013-04-22 17:14:55 · 1187 阅读 · 0 评论 -
UVA 1423 - Guess(前缀和之差+拓扑排序)
/*首先把题目转化为 连续和转化为前缀和之差 再进行拓扑排序 就能得出正确答案。*/#include#include#define M 110int c[M],G[M][M];int topo[M],t,n,sign;bool dfs(int u){ //printf("%d.",u); c[u] = -1; for(原创 2013-03-09 23:40:12 · 772 阅读 · 0 评论 -
10740 - Not the Best
/* 第k短路的问题, 用A*+dij就可以。*/#include#include#include#include#define INF 1using namespace std;struct Edge{ int from,to,dist;} a[110*110];struct Node{ int u,g,w;原创 2013-04-01 18:48:05 · 557 阅读 · 0 评论 -
UVA 11280 - Flying to Fredericton
/* 最短路问题, 题意:给出一个q 代表 到达目的地的过程中最多可以停几站。 方法: 用一个dp数组 dp[i][j] 代表第i站的时候停站j次的最小花费。 然后bfs就可以*/#include#include#include#include#include#include#define M 1010us原创 2013-03-19 17:54:54 · 699 阅读 · 0 评论 -
UVA 11367 - Full Tank
/*最短路问题 可以分解为2种走法 1:原地加一单位油,2:到下一个地点。*/#include#include#include#include#define M 10010using namespace std;struct Edge{ int from,to,dist; Edge(int x,int y,int z)原创 2013-03-18 22:49:41 · 870 阅读 · 0 评论 -
10342 - Always Late
/*求次短路 方法: 求出最短路 枚举每一条边 temp = d1[e.from]+d2[e.to]+e.dist; 找到次短路要注意的是 遇到 x x这种点对 不一定是输出“?” 可能有x ->y y ->x这种情况*/#include#include#include#include#define INF 1using namespace std;原创 2013-03-30 14:26:30 · 646 阅读 · 0 评论 -
11573 - Ocean Currents
/*一个很不错的bfs 要注意先走不花时间的路径 这样才能使bfs栈中按时间顺序排列*/#include#includeint r,c,n;char a[1010][1010],vis[1010][1010];int rs,cs,rd,cd;int dir[3][9] = {{-1,-1,0,1,1,1,0,-1},{0,1,1,1,0,-1,-1原创 2013-03-14 23:37:07 · 545 阅读 · 0 评论 -
UVA 10441-Catenyms
/*欧拉图 用并查集判连通性 dfs输出路径*/#include#include#include#define M 1100struct EU{ int l,r,y,next,vis; char w[22];} a[M],b[M];char s[M][22];int head[30],deg[30];int in[30],out[30],n,f[3原创 2013-03-12 22:09:23 · 855 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
UVA 1339 - Ancient Cipher
/*水题,只是题意有点难懂, 就是判断2个字符串之间是不是有变化关系 任意一个字母都会有不同的变化,最后变成另一个字符串。但不同的2个字符 不会变成同一个字符,也就是说 字符变化没有明确的规律 所以只需要判断每个字符出现的次数就行,2个次数序列比较下就可以,*/#include#include#includechar a[110],b[110];int pa原创 2013-02-25 16:35:25 · 2317 阅读 · 0 评论 -
11714 - Blind Sorting
/*这是关于第K大数最小比较次数的一个题一个序列 : 数两两比较 大的进入下一层 形成一个堆 这样 得到最大数至少需要n-1次寻找第二大的数 只需要比较那些 与最大数比较过的数 也就是每层有一个数 (除去最后一层)需要(int)log2(n-1)次 。*/#include#includeint main(){ int n; whil原创 2013-02-26 00:37:09 · 553 阅读 · 0 评论 -
10841 - Lift Hopping in the Real World
/*乘坐电梯问题的升级版 要求的是 最差情况下的最短路题意:从0层到k层 求最短路 换一次电梯+5s 但每次乘坐电梯的时候无法确定电梯在哪一层 所以要等一段时间才可以乘坐求出最坏情况下所用的时间 也就是每次乘坐电梯 的时候电梯离你的位置最远。*/#include#include#include#include#include#define INF 1原创 2013-04-03 13:19:39 · 609 阅读 · 0 评论 -
10967 - The Great Escape
/*最短路的变形问题 特别判断旋转门就可以了*/#include#include#include#include#define INF 1using namespace std;int n,m,vis[110][110],ms,ld,d[10010],mad[110][110];char map[110][110];int dx[]= {1,-1,0,原创 2013-04-03 22:27:35 · 612 阅读 · 0 评论 -
UVA 10600 - ACM Contest and Blackout (次小生成树)
/* 次小生成树的问题, 方法:求出最小生成树 并且标记路径 F[i][j] 代表最小生成树中i->j中最大的一条边 如果map(i,j)> F[i][j]则替换这条边 枚举每一条不在最小生成树中的边 替换之 找出最小的。*/#include#include#define INF 1int map[110][110],n,m;int vis[110]原创 2013-04-11 14:45:46 · 986 阅读 · 0 评论 -
UVA 1445 - Cubist Artwork
/* 水题, 由正视图跟侧视图的关系可知 只要去掉2数组中相同的元素(去其中一个) 然后相加就可以得到答案*/#include#includeint a[20],b[20],vis[20];int main(){ int n,m; while(scanf("%d %d",&n,&m)==2) { if原创 2013-04-10 22:55:03 · 1184 阅读 · 0 评论 -
10717 - Mint
/* 找2个跟给出高度h最接近的 2个数( (随机4个硬币厚度)公倍数 的倍数)直接枚举就行*/#include#include#define INF 1int n,m,a[60],h,vis[60],L,R;int num[5];int lcm(int a,int b){ int temp,x=a,y=b; while(a%b)原创 2013-03-28 15:47:12 · 483 阅读 · 0 评论 -
10791 - Minimum Sum LCM
/* 如果n是素数 答案必为 n+1 如果不是素数 则需进行质因数分解 如 16 = 2*2*2*2 答案则为2+2+2+2 12 = 2*2*3 答案为2+2+3*/#include#include#includelong long n;long long solve(){ long long ans=0; long原创 2013-03-28 14:58:20 · 574 阅读 · 0 评论 -
UVA 1419 - Ugly Windows
/* 找出当前界面的 x,y 的左右坐标 枚举边界,并且判断界面内是否全为‘.’ */#include#include#include#define INF 1using namespace std;char s[110][110];int aph[30],n,m,ln;int judge(int x){ int lx,ly原创 2013-04-10 18:18:05 · 976 阅读 · 0 评论 -
UVA 11536 - Smallest Sub-Array
/* 讲符合要求的子序列 从两端缩短 ,得到最小值*/#include#include#includeusing namespace std;int vis[1000001];int f[1000001];int n,m,k;int init(){ memset(f,0,sizeof(f));}int main(){原创 2013-04-10 10:48:18 · 816 阅读 · 0 评论 -
UVA 11127 - Triple-Free Binary Strings(二进制+搜索+位运算)
/*题意:给一组二进制数 但中间有的数是星号* 代表着既可以为0也可以为1, 若有一个二进制串 s ,另一串 T=sss求出给出的二进制数中 有多少不存在T的情况。这个题我是搜索搜过去的,需要进行剪枝, 当搜到三位数以上的时候 就开始判断是否有T 若有 return本题 若使用字符串判断T的话 果断会TLE, 可以用二进制数来做, 我刚开始用map判断结果TLE 后来改成se原创 2013-04-09 21:13:03 · 1146 阅读 · 0 评论 -
UVA 11572 - Unique Snowflakes
/* 题意:给一个特定的序列 求出一个连续的子序列 要求子序列中没有重复的数字,求出最长长度。*/#include#include#includeusing namespace std;mapvis;int a[1000010];int main(){ int n,t; scanf("%d",&t); while(t--)原创 2013-04-09 22:48:16 · 1489 阅读 · 0 评论 -
UVA 10730 - Antiarithmetic?
/*从一个给定的序列中 判断是否存在等差数列 方法 标记每个元素存在的位置,对元素从1到n进行循环 等差从1到m(m=i+j*2)循环 暴力解决*/#include#includeint n,num[10010];int solve(){ for(int i = 0; i for(int j = 1; j+j+i原创 2013-04-09 11:56:29 · 1621 阅读 · 0 评论 -
UVA 10810 - Ultra-QuickSort(归并排序)
/* 这个题用循环爆的话会TLE 所以有两种方法 1、归并排序 2、树状数组 本题给出的是归并排序的方法 归并排序: 以分治为主要思想 不断二分, 两个相邻的 数组进行归并 得出最小步数。*/#include#includelong long a[500010],b[500010],num;long long merge_sort(long lo原创 2013-04-09 11:20:55 · 2035 阅读 · 0 评论 -
10317 - Equating Equations
/* 一个搜索题 需要剪枝 把等式 a+b=c+d 转化为 a+b-c-d 这种形式 算出所有数值之和 如果不为偶数 则直接输出no先计算出加号的数量 lp 也就是lp+1个数相加 进行搜索 dfs需要进行几层剪枝: 如果当前tsum《=sum/2 则进行下一层搜索*/#include#include#includechar s[11000原创 2013-04-08 16:25:09 · 837 阅读 · 0 评论 -
10104 - Euclid Problem
/*欧几里得扩展问题 模版。。*/#includeint Gcd(int a, int b, int &x, int &y){ if(b == 0) { x = 1; y = 0; return a; } int r = Gcd(b, a % b, x, y); int t原创 2013-04-06 11:10:15 · 763 阅读 · 0 评论 -
10098 - Generating Fast暴力题 没啥可说的
水题。。。。#include#include#includechar a[11],b[11];int len;int cmp(const void *p,const void *q){ return strcmp((char *)p,(char *)q);}int sort(int n){原创 2013-04-05 19:59:25 · 595 阅读 · 0 评论 -
146 - ID Codes 暴力。。
其实做了10098后,在做这个就好好理解一点了。这个题刚开始没看懂什么意思 郁闷了好久才明白过来。 从后向前 一部分一部分 的字典序,我是这样理解的。举个例子吧:aabbcaabcbaacbbababcabacbabbacabbcaabcababcbaacabbacbab原创 2013-04-05 19:58:46 · 791 阅读 · 2 评论 -
10246 - Asterix and Obelix
/* 枚举每一个城市作为宴会地点 然后构图 图中不能有比这个城市价格更高的点、*/#include#include#include#include#define INF 1using namespace std;int c,r,q;int val[100],cost[100],dp[100][100];struct Edge{ i原创 2013-03-21 21:34:37 · 737 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
UVA 127 - Accordian Patience
#include#include#includechar a[2][100];char p[300];struct data{ char suit[52]; char size[52]; int num;} pk[55];int top[52];int three(int i,int len){ int原创 2013-02-07 14:04:23 · 425 阅读 · 0 评论 -
UVA 141 - The Spot Game
/*很简单的一个题 枚举判重就可以。*/#include#includeint n;struct M{ int map[55][55];} p[110*4];int change(int z){ for(int i = 1; i for(int j = 1; j p[z+1].map[j][n-原创 2013-02-07 13:54:10 · 330 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论