摘要:
这道题类似数学中的找规律不断往前计算f[n],直到出现一组数据(两个相邻的数)和前面的(两个相同的数)相同,那么就形成了循环因为始终mod7,那么每个数字只有0~6 7种可能,两个为一组,最多49种可能,也就是往前计算最坏情况也只要计算49次就好了 1 #include 2 #include 3... 阅读全文
摘要:
dp[i] 表示以第i块木块放在最顶端得到的最高高度dp[i] = max{dp[i] , dp[j]+block[i].h} j 2 #include 3 #include 4 #include 5 using namespace std; 6 #define N 1000 7 struct... 阅读全文
摘要:
利用一个数组 a[N]来保存自己所需要的数据,对于我们要得到a[i] , 那么a[i] 必然是由前i-1个数中的某一个,乘以2,3,5,7中的某个得到的最小值 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #defin... 阅读全文
摘要:
首先根据第一个数排序,然后可以得到一串第二个数组成的序列,因为第一个由大到小排列,所以第二组中取到的数据,后面的不能比前面的小才不会形成交叉,那么也就是求这个新序列的最长公共子序列这里要用到最长上升子序列的nlogn的算法,新建一个数组保存所有合理的数据的数组g,比如g数组中有了1,4,6,加进来一... 阅读全文
摘要:
通过一个单词来建立图形结构将单词词头指向词尾作为一条边图模型建立好后,从b出发,dfs到所有搜索的到的点最后判断m是否被搜索到过即可 1 #include 2 #include 3 #include 4 using namespace std; 5 char s[10005]; 6 int f... 阅读全文
摘要:
1 #include 2 #include 3 4 using namespace std; 5 const int maxn = 10000; 6 int num[maxn+5]; 7 8 int main() 9 {10 int k;11 while(scanf("%d... 阅读全文
摘要:
1 #include 2 #include 3 4 using namespace std; 5 6 int sum[20]; 7 //sum[i]表示尾数为i的组最大可达到的数字个数 8 void init() 9 {10 sum[0] = 0;11 sum[1] = 9... 阅读全文
摘要:
题目大意:星星作圆周运动的周期给出,若已连成一条线,下一次所有星星在同一条线上的时间用分数形式输出这里我们可以利用追及问题来计算出两个星星之间连成一条直线的时间,也即速度快的星星追上速度慢的星星弧度PIt = PI /abs (2PI / t1 - 2PI / t2) = t1 * t2 / (2 ... 阅读全文
摘要:
一道裸的网络流求最大流问题 1 //一般增广路,每次不断在生于网络找层次网络,直到找不到说明已找到最大流量 2 #include 3 #include 4 #include 5 #include 6 const int N = 210; 7 using namespace std; 8 9... 阅读全文
摘要:
题目大意:提前知道客户一个个前来的顺序以及手上的钥匙和对应的猪圈的猪的数量,合理安排猪圈放置猪的情况,达到最大售猪量关键在于如何构造一个容量网络:1.将顾客看做除源点和汇点以外的结点,并且另设两个结点;源点和终点2.源点和每个猪圈的第一个顾客连边,边的权是开始时猪圈中猪的数量3.若源点和某个结点之间... 阅读全文