
搜索
Joyyiwei
这个作者很懒,什么都没留下…
展开
-
uva 1368
题意:找出与输入的这些串差别最小的串,我们试着去枚举每一个位置,然后找到差别最小的字符,依次类推#include #include #include #include using namespace std;const int MAXN = 1100;char str[60][MAXN],ans[MAXN];char dna[] = {'A','C'原创 2013-08-02 16:38:14 · 782 阅读 · 0 评论 -
uva 11205
题意 :从矩阵中选出最少的列,使得选出来的矩阵可以区别开#include #include #include using namespace std;int hang,lie;int map[110][20];int vis[20];int ans;bool found;void check(){ for(int i = 0 ; i < hang-1 ; i++原创 2013-08-02 15:09:45 · 761 阅读 · 0 评论 -
uva 253
题意:判断前半个字符串是否通过旋转能够得到后半个字符串,根据原文我们可以先写出不同数字作为1号位置的情况,然后就是4种情况的判断#include #include #include using namespace std;int dir[6][6]={{1,2,3,4,5,6},{2,6,3,4,1,5},{6,5,3,4,2,1},{5,1,3,4,6,2},{3,1,2,原创 2013-08-02 16:19:09 · 790 阅读 · 0 评论 -
uva 10167 枚举
题意:找出一条直线平分点#include #include #include using namespace std;int x[100],y[100];int main(){ int n,da,xi,flag,a,b; while(scanf("%d",&n) && n) { flag = 0 ; for(int i = 0 ; i <2*n ; i++)原创 2013-08-02 15:15:36 · 806 阅读 · 0 评论 -
uva 146
题意:求比这个序列大的下一个序列,其实如果没有下一个序列的话,也就证明了序列已经从大到小排序了,所以我们只要从后往前找到一个比它前面大的字符,那么就证明还可一生成下一个序列#include #include #include using namespace std;int main(){ char a[100],i,j; while (gets(a) && a[0] !原创 2013-08-10 08:58:49 · 928 阅读 · 0 评论 -
uva 10098
题意:都是生成排列的,用 next_permutation(),排序前,先保证他是最小序列#include #include #include #include using namespace std;char a[15];int main(){ int t; scanf("%d",&t); getchar(); while (t--) { gets(a);原创 2013-08-10 09:05:12 · 718 阅读 · 0 评论 -
uva 729
题意:给你一串二进制串,而前N-M是0,后M位是1,让你生成它之后的全排列,next_permutation()解决#include #include #include #include using namespace std;char s[20];int main(){ int t; scanf("%d",&t); while (t--) { int a,b;原创 2013-08-11 16:39:47 · 702 阅读 · 0 评论 -
uva 11210
题意:看了题解才明白题目可能胡的情况,要求让你在所有还能拿的牌中找出可能胡的牌,最简单的胡法是,在有对子的情况下,再找出三张相同的或者顺子#include #include #include using namespace std;const char* mahjong[] = {"1T", "2T", "3T", "4T", "5T", "6T", "7T", "8T", "9T",原创 2013-08-25 21:30:10 · 926 阅读 · 0 评论 -
uva 10400 Game Show Math
题意:满足表达式,用DFS记忆化搜索,把到当前运算符所得的结果记录下来,起初用回溯一直错#include #include #include #include using namespace std;int flag,n,b[101],ans,a[101],vis[100][64001];void dfs(int sum,int deep){ if (deep > n &原创 2013-08-30 19:12:10 · 748 阅读 · 0 评论 -
POJ - 2631 Roads in the North
题意:求树上最远的距离,两次的DFS就行了#include #include #include #include using namespace std;const int MAXN = 10110;struct node{ int to; int len; int next;}eg[2*MAXN];int head[MAXN];int idx,原创 2013-10-19 01:04:38 · 756 阅读 · 0 评论 -
POJ - 1020 Anniversary Cake
题意:有一块边长为BoxSize的正方形的大蛋糕,现在给出n块不同尺寸的正方形的小蛋糕的边长,问是否能把大蛋糕按恰好切割为这n块小蛋糕,要求每块小蛋糕必须为整块。思路:有技巧性的DFS,这里有一篇写的很好的:点击打开链接#include #include #include #include using namespace std;int BoxSize,n;int SizeN原创 2013-11-17 22:01:48 · 936 阅读 · 0 评论 -
UVA - 11520 Fill the Square
题意:填写矩阵使得每个位置与周围的都不相等#include #include #include #include using namespace std;const int MAXN = 20;int n;char map[MAXN][MAXN];char fill(int row,int col){ for (int ch = 'A'; ch <= 'Z'; ch原创 2013-11-19 19:20:32 · 974 阅读 · 0 评论 -
FZU 2019 排列
题意:给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。思路:枚举起点终点是O(n^2)是会超时的,是中位数的话证明:大于他的和小于他的数是相等的,那么扫描一遍b左边,大于的的话cnt++,否则cnt--,如果cnt==0的话,证明这一边有一个答案,然后再记录cnt值出现的情况,然后扫描一遍b的右边,大于的话cnt--原创 2013-11-20 15:42:27 · 1520 阅读 · 2 评论 -
FZU 2064 找位置
Problem Description一年一次的FZUACM宣讲会又开始 了,kk和几个同学到的时候位置已经不多了。但是他们又想坐在同一排而且位置要连在一起。现在给你宣讲会现场的情况请问有多少种座法满足条件,对于两种坐法如果有一个位置不同就算是两种不同的坐法。 Input第一行一个整数T,表示有T组数据。每组数据第一行三个正整数N M W(1接着N行每行M个数(0或原创 2013-11-22 16:19:57 · 928 阅读 · 0 评论 -
FZU 2056 最大正方形
Problem Description现在有一个n*m的矩阵A,在A中找一个H*H的正方形,使得其面积最大且该正方形元素的和不大于 limit。 Input第一行一个整数T,表示有T组数据。每组数据 第一行三个非负整数 n m limit接着 n 行,每行 m 个整数。0 Output对于每组数据,输出H*H。 Sample Input22 2 2原创 2013-11-23 10:28:12 · 1058 阅读 · 0 评论 -
POJ - 1012 Joseph
题意:约瑟夫环的问题,前K个人是好人,后K个人是坏人,求最小的M,枚举M,套用公式ans[i]=(ans[i-1]+m-1)%(n-i+1),报数是从1开始的#include #include #include #include using namespace std;int main(){ int Joseph[14] = {0}; int k; while (原创 2013-11-23 16:17:02 · 820 阅读 · 0 评论 -
ZOJ Alice's Print Service
题意:求买纸的最小值,用best[i]数组记录第i之后的最优值#include #include #include #include using namespace std;const int MAXN = 100010;long long p[MAXN],s[MAXN],best[MAXN];int n,m;int main(){ int cas; sc原创 2013-11-24 19:47:52 · 1015 阅读 · 0 评论 -
HDU - 4527 小明系列故事――玩转十滴水
题意:中文题,看了学长的发现自己没注意到要先同一秒的先走完,BFS#include #include #include #include using namespace std;const int MAXN = 10010;const int INF = 0x3f3f3f3f;int m;int map[8][8];int dir[][2] = {{-1,0},{1,0},原创 2013-11-11 18:58:41 · 970 阅读 · 0 评论 -
UVA - 11464 Even Parity
题意:改变矩阵中的0变为1,使得矩阵上每个数的周围的和是偶数,求最小的改变个数,搜索的题目,先确定第一行的状态然后就是一行行的推了#include #include #include #include using namespace std;const int MAXN = 30;const int INF = 0x3f3f3f3f;int n;int map[MAXN]原创 2013-11-11 21:02:22 · 819 阅读 · 0 评论 -
FZU 2102 Solve equation
题意:求满足A=k*B+d的最大的k值,输出k,d的值,A,B有C进制转化过来的,最大的K值只要直接用A/B,应用整型的取整就可以了#include #include #include #include #include using namespace std;int A,B,C;int main(){ int t; scanf("%d%*c",&t);原创 2013-11-26 19:24:51 · 715 阅读 · 0 评论 -
FZU 2111 Min Number
题意:对于一个数可以交换第i位,第j位的数字,求经过这样的M次步骤,能得到的最小值思路:显然每次都是将最小的值移到前面去,那么我们i记录已经确定了几个最小的值,每确定一次就将最小值移到当前的下标,否则m++,继续找,注意一些第一位是0,和最小值就是当前下标值的处理#include #include #include #include using namespace std;const原创 2013-11-26 20:28:09 · 792 阅读 · 0 评论 -
HDU - 1016 Prime Ring Problem
题意:素数环#include #include #include #include #include using namespace std;const int MAXN = 40;int n;int res[MAXN];int isprim[MAXN],vis[MAXN];void prim(){ memset(isprim,1,sizeof(isprim原创 2013-11-12 18:53:41 · 777 阅读 · 0 评论 -
FZU - 2109 Mountain Number
题意:求满足奇数位的数大于与它相邻的偶数位上的数,求[L,R]之间有多少个思路:考虑首位与不考虑首位是不同的,这是关键啊,然后逐位考虑每一位上的数,记忆化搜索#include #include #include #include using namespace std;const int MAXN = 20;int dp[MAXN][MAXN][2],num[MAXN],le原创 2013-11-28 20:20:44 · 930 阅读 · 0 评论 -
UVA - 11384 Help is needed for Dexter
题意:每次从序列中选出几个数同时减去一个数,求最少的操作步骤,找规律:f(n) = f(n/2) + 1; 我们保留1~n/2,把剩下的数同时减去n/2+1,得到序列1,2...,n/2,0,1...(n-1)/2,它等价于1,2...n/2,所以f(n) = f(n/2)+1;#include #include #include #include using namespace原创 2013-11-28 21:00:46 · 716 阅读 · 0 评论 -
Vijos-P1193 扫雷
题意:相信大家都玩过扫雷的游戏。那是在一个n*n的矩阵里面有一些雷,要你根据一些信息找出雷来。万圣节到了,“余”任过流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字表示和他8连通的格子里面雷的数目。现在棋盘是n*2的,第一列里某些格子是雷,而第二列没有雷,如:o 1* 2* 3* 2o 2* 2* 2 ('*'代表有雷,'原创 2013-11-29 22:41:15 · 1372 阅读 · 0 评论 -
UVA - 11078 Open Credit System
题意:求出数列中差值最大的数是多少,O(n)的算法是:因为它要求i#include #include #include #include using namespace std;int A[100000],n;int main(){ int t; scanf("%d",&t); while (t--){ scanf("%d",&n);原创 2013-11-30 18:31:17 · 716 阅读 · 0 评论 -
UVALive - 3621 Power Calculus
题意:给出x和正整数n,问最少需要几次乘除法可以得到x^n思路:迭代搜索+减枝#include #include #include #include using namespace std;const int MAXN = 1010;const int INF = 10000007;int arr[MAXN],num;int dfs(int n,int step){原创 2014-01-01 01:16:26 · 2404 阅读 · 0 评论 -
UVA - 10825 Anagram and Multiplication
题意:有m位n进制整数非常神奇:乘以2,3...,m之后,所有得到的数恰好是原数各数字的一个排列,输入m,n,求出这样的整数(最多只有一个)思路:枚举0~n-1的数,因为乘以m次后得到不同的排列,所以我们可以根据这个求出m个数来,然后再用排列树搜索答案,最后check一下原创 2013-12-18 22:20:16 · 1085 阅读 · 0 评论 -
Vijos P1016北京2008的挂钟
题意:开9维的BFS,看了别人的优化方法是:用到了优先队列,因为求的最短的操作路径,所以用当前的步数作为优先队列的条件,步数少的优先原创 2013-12-17 20:39:52 · 1346 阅读 · 0 评论 -
UVALive - 4324 Ugly Windows
题意:就所给的图有几个完整的矩形,按字典序输出思路:按字典序搜索,细节是:严格的一个矩形#include #include #include #include using namespace std;const int MAXN = 110;char arr[MAXN][MAXN];int n,m;int main(){ while (scanf("%d%d",原创 2014-01-07 21:37:27 · 992 阅读 · 0 评论 -
UVALive - 4356 Fire-Control System
题意:在平面上有n个点,求一个圆心在原点的扇型,至少有k个点在里面,要求扇型面积尽量小思路:首先先枚举半径,然后找到半径小于等于枚举值的点,其中要求点要连续,按正弦值的从小到大排序,因为我们要包括从大到小的连续查找,所以我们开一个两倍的储存数组,然后从我们找到的符合要求的点中,求出最小的扇型面积,注意当大于n的时候需要加一个圆的面积了,还有就是精度的问题,看了别人的才注意过来#includ原创 2014-01-23 00:36:28 · 1787 阅读 · 2 评论 -
UVALive - 3693 Balancing the Scale
题意:在给出的16个数中,求使得满足x1* 4 + x2* 3 + x3* 2 + x4 =x5 + x6* 2 + x7* 3 +x8* 4 y1* 4 + y2* 3 + y3* 2 + y4 =y5 + y6* 2 + y7* 3 +y8* 4 这两个等式的个数有多少。思路:状态枚举,先枚举四个数,然后查找是否有与这四个数组成的等式和的结果原创 2014-01-25 12:47:47 · 1140 阅读 · 0 评论 -
UVALive - 3403 Mobile Computing
题意:给出房间的宽度r和s个挂钩的重量。设计一个尽量宽,但宽度不超过房间宽度的天平,挂着所有的挂钩。挂钩的宽度不计,且不相同的挂钩可以互相重叠思路:每次将当前集合分成两个不相交的子集合,每次都构造出子集的最大的天平,最后从子集中选出最大的#include #include #include #include #include using namespace std;const in原创 2014-01-19 17:12:39 · 1328 阅读 · 0 评论 -
UVALive - 2963 Hypertransmission
题意:需要在n个星球上各安装广播器,范围为R,每个星球是A节目或者B节目,令N+(i)表示范围内与自己相同节目的个数(包括自己),N-(i)表示不想同的个数,如果N+(i) 思路:先预处理出任意两个星球的距离,然后排序,R一定是这些距离中的一个,从小开始枚举,同种距离的一起处理,不断的更新信息求出最小值#include #include #include #include #i原创 2014-01-19 21:54:19 · 1355 阅读 · 0 评论 -
UVALive - 3667 Ruler
题意:给出n种距离,设计一个有m个刻度的尺子,使得每个刻度都可以直接量出,要求在m尽量小的情况下尺子的总长度尽量短,第一个必须是0,输出保证m思路:首先先确定出最小的m,Cm(2)解出可能的最小的m,那么接着开始枚举m,每次得到的一个解都是有给出的n种距离和已有的解的出来的,那么这个解又能得到与之前得出来的解的差和与最大尺度差的两种解,还有几个地方需要减枝,比如解是严格的递增的,还有如果超过最原创 2014-01-18 23:47:39 · 1383 阅读 · 0 评论 -
UVA - 11624 Fire!
题意:求Joe走出迷宫的最短时间,有障碍,还有向四周蔓延的火思路:将火的位置也加进BFS里面#include #include #include #include #include using namespace std;const int MAXN = 1200;struct node{ int x,y,f,t; };int dx[] ={1,-1,0,原创 2014-02-27 21:09:33 · 1923 阅读 · 2 评论 -
HDU - 1203 I NEED A OFFER!
题意:中文题思路:求至少的话,就求都没有的情况,01背包#include #include #include #include using namespace std;const int MAXN = 10005;int a[MAXN];int ai,n,m;double f[MAXN],b[MAXN];int main(){ while (scanf("%d%d"原创 2014-03-11 12:25:32 · 748 阅读 · 0 评论 -
HDU - 1171 Big Event in HDU
题意:给你n个物品,每个物品有价值和数量,让你尽量平分总价格,第一个数要大于第二个思路:做出类似的,从中间开始01背包#include #include #include #include using namespace std;const int MAXN = 110;int n,sum,a[MAXN<<3];int f[300010];int num;int ma原创 2014-03-11 16:38:20 · 797 阅读 · 0 评论 -
HDU - 2844 Coins
题意:问可以得到多少种可能凑成的价格思路:完全背包的模板#include #include #include #include using namespace std;const int MAXN = 110;int val[MAXN],num[MAXN];int f[100005],n,v;int main(){ while (scanf("%d%d",&n,&v)原创 2014-03-12 19:27:59 · 710 阅读 · 0 评论 -
HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
题意:急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?后记:人生是一个充满了变数的生命过程,天灾、人祸、病痛是我们生命历程中不可预知的威胁。月有阴晴圆缺,人有旦夕祸福,未来对于我们而言原创 2014-03-13 13:21:58 · 899 阅读 · 0 评论