杭电oj平台上的11页题目代码:hdu-page11 (2070~2079)

//2070
#include<stdio.h>
#define N 51
typedef long long ll;
ll f[N];
void init()
{
f[0] = 0;
f[1] = 1;
for (int i = 2; i < N; i++)
{
f[i] = f[i - 1] + f[i - 2];
}
}

int main()
{
int n;
init();
while (~scanf("%d",&n))
{
if (n == -1)
{
break;
}
printf("%lld\n", f[n]);
}
return 0;
}

 

//2075
#include<stdio.h>
int main()
{
int t;
int a, b;
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &a, &b);
if (a%b==0)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
return 0;
}

 

//2078
/*思路:他一晚上复习的最高效率值是多少,即求它的效率差值最大,从而能够保证效率值的平方最大,也就能保证效率值得平方和最大。
而且在复习第一门课程后,他总是找一门比该课程简单的课程进行复习,那么我们可以知道只有保证了第一次的效率差值最大才能保证后面的其最大,当第一个不为最大的时候,后面又要一次递减,所以就更不能保证其为最大了。那么其实推理可得,我们只要保证第一次的效率值最大,也就能够保证其这一整天的效率值最大了;*/
#include<iostream>
#include<algorithm>
#define N 41
int diff[N];
using namespace std;
int main()
{
int T;
int n, m;//n是他所选的课程,m是他一晚上最多能复习的课程
cin >> T;
int sum = 0;
while (T--)
{
sum = 0;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
scanf("%d", &diff[i]);//输入各门课程的难度
}
sort(diff, diff + n);
sum = 0;
sum += (100 - diff[0] )* (100 - diff[0]);
cout << sum << endl;
}

return 0;
}

 

//2079
#include<stdio.h>
#include<string.h>
#define N 55
int sum;
int dp[N];
struct node{
int a, b;
}cla[N];
int main()
{
int T;
int n, k;
scanf("%d", &T);
while (T--)
{
memset(dp, 0, sizeof(dp));
//n个学分
scanf("%d%d", &n, &k);
for (int i = 1; i<= k; i++)
{
//学分a的课有b门
scanf("%d%d", &cla[i].a, &cla[i].b);
}
//求n个学分共有多少组合,一样学分的课没啥差别
dp[0] = 1;
for (int i = 1; i <= k; i++)
{
for (int j = n; j >= cla[i].a; j--)//容量
{
//b代表数量
for (int l = 1; l <= cla[i].b; l++)//数量
{
if (j-cla[i].a*l>=0)
{
dp[j] += dp[j - cla[i].a*l];
}
else
{
break;
}
}
}
}
printf("%d\n", dp[n]);
}
return 0;
}

转载于:https://www.cnblogs.com/BlueBlue-Sky/p/8640833.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值