2016huasacm暑假集训训练四 递推_C】的更多相关文章

题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/C 题意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形  这个题只要看两部分就行,先是横一排 是M长  最多m*(m+1)/2  个    再是竖一列 最多n*(n+1)/2个, 现在就把排和列拉伸,形成一个高为n*(n+1)/2,宽为m*(m+1)/2的网格,这样只要算下面积就行了 AC代码: #include<stdio.h> int main() { in…
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/B 题意:给定n个三角形,问最多可以把区域化成多少个部分,这是一个一维空间  一定会满足一元二次方程  题目给定1 2的个数 只要得到3的个数就可以用待定系数法求得公式:F(x) = 3*(x-1)*x+2;  另外如果是二维的话,会满足一元三次方程 ,也可以用待定系数法求解:20 AC代码: import java.io.BufferedReader; import java.i…
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/A 这题主要考的就是就是一个排列公式,但是不能用阶乘的公式,    用这个公式不易超时 a[i][j] = a[i - 1][j] + a[i - 1][j - 1];另外这个公式也可以求杨辉三角 AC代码: #include<stdio.h> ][]; void C() { ; i<= ; i++) { a[][] = ; a[i][] = ; ; j<= ; j+…
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/M 题意:有N件物品和一个容量为V的背包.第i件物品的费用是体积c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大.简单的01背包问题主要是状态转移式 f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]},即可求解: AC代码: #include<stdio.h> #include<string.h> #include&l…
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/G 题意:求有多少x(1<=x<=n),使得gcd(x,n)>=m;     先求n的所有大于等于m的因子, 刚开始用了模拟,超时,看了下往上的题解,说要用到欧拉函数求解,就看了下欧拉函数,  ans=∑phi[n/ei];phi[i]为欧拉函数,为不大于i且与i互质的正整数个数 对于一个与ei互质且小于等于n/ei的正整数p来说,p*ei<=n,gcd(p*ei,n…
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/F 题意:狼捉兔子,兔子躲在n个洞中一个,这n个洞围成一个圈,狼会从第0号洞开始,搜索隔m的洞,一直搜索下去,问是否存在洞另狼永远搜索不到,这样兔子就重获新生. 刚开始没有思路,就瞎画了八个洞的图,然后m从1—7去找 发现只要 m能够整除n 就能活 也就是是求输入的两个数是否互质即最大公约数是否为1.为1不能活AC代码: import java.io.BufferedReader;…
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/D 这题要求错误的方式有多少种,就是一个错排公式,记得公式就行           a[i]=(i-1)*(a[i-1]+a[i-2]); AC代码: #include<stdio.h> ] = {,,,,,,,,,,,,,,,,,,,,}; int main() { int x; //直接打表 while(~scanf("%d",&x)&&a…
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/H 题意:A有一大堆的硬币,他觉得太重了,想花掉硬币去坐的士:的士司机可以不找零,但是的士司机也不会多收零钱.怎么样才能使 A 花的零钱最多. 多重背包模板题 AC代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.Inpu…
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/J 题意:求一段子的连续最大和,只要每个数都大于0 那么就会一直增加,所以只要和0 比较就行,如果加上一数小于0了那么肯定要重新开始找,否则就不断更新最大值就行 AC代码: #include<stdio.h> #include<string.h> ]; int main() { int t,a,i,max,n,sum,start,ends,f; scanf("…
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ]; struct Node { int xishouliang; int xingfuzhi; } a[]; int main() { int i, j, t…