摘要:
这题说的是给了 n个数然后又 k次 的交换任意位置的 数字的机会 计算最长的连续子序列的和这要撸 模拟整个 过程 并不能就是算最长的递增序列 如果只是 找最长的 和序列的 话 会存在 很多问题 在替换的时候 每一个决策 都影响着 下一个决策 这样 存在谁与谁替换 这样的状态有 200!种 那就枚举每... 阅读全文
摘要:
题目说的是 给了一个n*m的矩阵然后 一个石头 可以向上下左右 移动 记住 一旦移动 了就自由朝着这个方向一直移动 知道停下来停下来的 三个条件1 遇到边界 表示游戏结束游戏失败2 遇到block 就是下一步就会遇到 block 然后停下来 block消失3 遇到目标点 停下来游戏成功每次停下来后要... 阅读全文
摘要:
Description动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y",表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1) 当前的话与前面的某些真的话冲突,就是假话;2) 当前的话中X 阅读全文
摘要:
uva 10803 计算从任何一个点到图中的另一个点经历的途中必须每隔10千米 都必须有一个点然后就这样 floy 及解决了 ***********************************************************************************... 阅读全文
摘要:
#include#include#includeusing namespace std;__int64 pow_mod1(__int64 a,__int64 n,__int64 m){ if(n==0) return 1; __int64 ans,x=pow_mod1(a,n/2,m); ans=(x*x)%m; if(n%2) ans=(ans*a)%m; return ans;}__int64 pow_mod2(__int64 a, __int64 b, __int64 c){ __int64 ans = 1; a = a % c; while(b>0) { if(b%2==1) a 阅读全文
摘要:
/* 很好的字符串 比较方法 很多个字符串 组成的 数字 需要最大 然后 比较 a和b 是 比较a+b 和b+a 的大小*/#include#include#include#includeusing namespace std;struct point{ char str[100];}T[55];bool cmp(point A,point B){ int i,a=strlen(A.str),b=strlen(B.str); point C=A,D=B; for(i=0;iD.str[i]; } return true;}int main(){ int n,i; c... 阅读全文
摘要:
/* 最长公共子序列*/#include #include #include const int maxn=105;int N[maxn],M[maxn];int dp[2][maxn];int main(){ int i,j,n,m,num=0; while(true){ scanf("%d%d",&n,&m); if(n==0&&m==0) break; for(i=0;idp[d^1][j]?dp[d][j-1]:dp[d^1][j]; } d=d^1; } printf("Twin Towers #%d\n",++ 阅读全文
摘要:
/* (栈)这里 有一个需要知道的 如果一个点走出了 原来的 位置 那么它最早的那个位置的 当他在回到原来位置的时候 可能还会有 块在那个下面 根据这点 我们就可以 大胆 的进行出栈入栈操作 */#include #include #include using namespace std;int L[30],N[30][30],num[30],t1,t2,A,B,KH[30],n;void dec(int er){ int i,LOC=L[er]; for(i=num[LOC];i>=1;i--){ if(N[LOC][i]==er) break; int d=N[LOC... 阅读全文
摘要:
/* 最长递减子序列, 题目说的是 每头大象都有体重和IQ 要证明 随着 体重的增加智商 在不断的减少的最长序列 解 : 先对 体重进行一次排序 ,排完后 LIS(最长递增(减)子序列) */#include #include #include #include #include using namespace std;struct Elephant{ int num,W,S; bool operator T[j].W&&(dp[i]maxv) maxv=dp[i]; } for(i=num-1;i>=0;i--) if(dp[i]==maxv) break; ... 阅读全文
摘要:
/* 暴力 过了 要使得两半的 樱桃数目相等 去试每一个斜率 还好他这里要的是 A、B 都为正整数 这样范围就锁定在200*100 个点范围内*/#include #include #include using namespace std;struct point{ int x,y;}node[110];void solve(int num){ int i; for(int A=-100;A0)L++; if(d<0)R++; if(d==0) break; } if(L==num/2&&R==num/2&&i==num){ printf("%d 阅读全文