纪中学习之(第一季)DAY ONE

这次做了四道题

第一题

题目大意

求n^m次方的最后一位数


输入样例

2
3 4
4 5

输出样例

1
4


解题思路

其实这道题是用快速幂来做的,但不知道为什么会wa,一开始是时间超限,后来就wa了其实就是没AC

程序如下
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long sum,n,a,b;
int gg(long long x,long long y)
{
	sum=1;
	x%=10;//先取最后一位
	while(y)
	{
		if(y%2==1) sum=sum*x;//如果余一就开始乘
		x=x*x;
		y>>=1;//看y的值
	}
	return sum%10;
}
int main()
{
	freopen("a.in","r",stdin);
	freopen("a.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&a);
		scanf("%lld",&b);
		printf("%d\n",gg(a%10,b));
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

第二题

题目大意

现在你规划一条路径,尽可能使小明到友军所在处后的体力值最大,这样小明才能有更多精力继续逃离。图上有输入为0表示这个点没有敌军也没有能量药丸,1表示该点上有敌军,2表示该点上有能量药丸。(数据保证小明所在的位置上不会出现能量药丸或敌军)
最后再输出一个正整数表示小明到友军所在处后体力的最大值

输入样例

5 5
0 1 1 1 1
0 1 2 1 0
0 2 0 1 1
0 0 2 0 0
0 0 0 0 0

输出样例

2

解题思路

这道题用(DP)动态规划来做,就不断的往下读入(也可以从上往下)再不断的计算走的最大的路径的体力

程序如下
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,m,a[505][505],s,f[505][505];
int main()
{
	freopen("b.in","r",stdin);
	freopen("b.out","w",stdout);
	memset(f,-127/3,sizeof(f));//因为有负数
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			scanf("%d",&a[i][j]);
			if (a[i][j]==1) a[i][j]=-1;//预处理
			if (a[i][j]==2) a[i][j]=1;//预处理
		}
	}
	f[0][1]=0;//初值
	f[1][0]=0;//初值
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			f[i][j]=a[i][j]+max(f[i-1][j],f[i][j-1]);//在边走时边判断最大的体力
		}
	}
	printf("%d",f[n][m]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}

第三题

题目大意

他知道了每样物品的单价,以及他对每样物品的需求度(对于相同的物品,需求度可以累加),他想要花费至多N元钱使得他对所买物品的需求度和最大。

输入样例

4 5
5 3 0
5 3 1
4 4 0
2 3 0
3 2 1

输出样例

6

解题思路

其实这道题是分组背包加上完全背包,然而我没做出来到时做出来再亮出来

程序如下

第四题

题目大意

景点x到景点y有一条道路,且从景点x到景点y或从景点y到景点x需要z个单位时间,两个景点之间可能会有多条道路,表示用刚好m个单位时间到达终点最多能游览不同景点个数,若不能用刚好m个单位时间到达终点,则输出-1

输入样例

5 12 4
1 2 5
1 4 3
4 2 4
2 5 5

输出样例

4

解题思路

这题也没做出来,改出来再亮出来
谅解

程序如下

明天继续更新··············

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值