题目链接: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…
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/F 题意:求至上而下一条路径的所经过的值得和最大值,这题比赛时就出了 但当时看不懂题目一直没写,这就和数字三角形差不多,只是加上了他的下部分,分上下两种情况就行. AC代码: #include<cstdio> #include <cstring> #include <iostream> using namespace std; int i,j,n; ][]…
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/E 题意:给做出的题目个数,5个的100分,4个的前n/2的同学95,后n/2的90  后面一次类推,没做出来的全是50分  这个题只要模拟下就好了  先按题目个数拍好序 得到每个题目做出的人数,在打分,最后在按原来的顺序排序  ,在一次输出他们所得的分数:按原来的顺序排序可以先给每个要个变量记住他们的顺序,在排序就好 AC代码: #include <iostream> #inc…
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/C 题意:这是一道求字符串的公共子串的最大长度的题目,用dp动态方程即可 if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=(dp[i][j-1]>p[j][i-1]?dp[i][j-1]:p[j][i-1]); 这题主要是要注意两个字符串是同一行输入,题目没说字符串的长度,用c不是dp数组开大了编译不了就是开小了运行错误,…
题目链接: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…