摘要:
题意:倒水问题,现在有两个容积为a和b的水壶,对每个水壶可以进行4种操作,两个水壶之间相互倒水(一个水壶倒空或者一个水壶倒满为止),从水农头那里灌水(将水壶灌满为止),向外倒水(将水壶倒空为止),问对这两个水壶进行这样的一系列操作是否可以量出容积为c的水(两个杯子中有一个水壶中的水的容积恰好为c) 由于题目是"Special Judge",即答案不是唯一的,题目给出了三项假设: 1> 只有两个水壶 2> 对于每个输入,都有一个确定的输出 3> 0<c[a]<=c[b]和N<=c[b]<=1000 也就是水壶A肯定比水壶B小,水壶B肯 阅读全文
摘要:
注意乘法的模拟,位数的控制,还有是小数点的控制,最后是0的控制#include<iostream>#include<cstdio>#include<string.h>using namespace std;char str[10];int n, dot;int res[999999], a[999999], b[999999];int len, lena, lenb;void mul(){ int i,j; memset(res,0,sizeof(res)); for(i=1;i<=lena;i++)//这是大数相乘的精髓 { for(j=1;j< 阅读全文
摘要:
最近看题的时间多了,感觉回到了大一学C语言的时候,那时不会C,只能用笔算,只能自己想,但是数又很大完全用笔算是不可能的,只能找到数中的规律,找到公式的递推式才能解决,后来有了Dp的概念,那时就更加头疼,概念更加的抽象不再是简单的数学公式,变成了有意义的生活问题,这中间必须有一个装换,从生活问题到数学问题,从数学问题再到编程的状态方程,有了这个公式才有下一步的编程实现。同样对于搜索、二分图、并查集、博弈等等的问题,只是解决的问题多了总结出来的一套公认可行的算法,也就是一个固定公式,只是对于具体问题需要具体分析进行解决。 阅读全文
摘要:
注意层次,用一维数组代替二维数组计算,在视图上标出来,每一次都用循环计算一次#include <stdio.h>int main(void){ int i, j; __int64 a[36] = {1}; __int64 b[36] = {0}; for (i = 1; i < 36; i++) { for (j = 1; j < i; j++) a[j] += a[j-1]; b[i] = a[i] = a[i-1]; } for (j = 1; scanf("%d", &i), i+1; j++) ... 阅读全文
摘要:
#include <stdio.h>#include <string.h>#define MAX 1001const int INF= 0x7f7f7f7f;int t,s,d,tt[MAX][MAX],ss[MAX],dd[MAX],path[MAX],maxs;int min(int n,int m){ return n>m?m:n;}void init(){ int i; memset(path,INF,sizeof(path)); memset(tt,INF,sizeof(tt)); for(i=0;i<MAX;i++) { ss[i]... 阅读全文