2022-01-20 每日打卡:难题精刷

2022-01-20 每日打卡:难题精刷

写在前面

“这些事儿在熟练之后,也许就像喝口水一样平淡,但却能给初学者带来巨大的快乐,我一直觉得,能否始终保持如初学者般的热情、专注,决定了在做某件事时能走多远,能做多好。” 该系列文章由python编写,所刷题目共三个来源:之前没做出来的 ;Leetcode中等,困难难度题目; 周赛题目;某个专题的经典题目,所有代码已AC。每日1-3道,随缘剖析,希望风雨无阻,作为勉励自己坚持刷题的记录。

2951. 「NOIP2018」货币系统

在这里插入图片描述

  • 自底向上,递归更新(存在很多重复和无用信息):
	def up(sys, n):
	    global maxx
	    if n in sys:
	        return 0
	    else:
	        sys.append(n)
	        for _ in sys:
	            tmp = _+n
	            if tmp<=maxx:
	                up(sys,tmp)
	        return 1
	
	anum = eval(input())
	for _ in range(anum):
	    mnum = eval(input())
	    sys, ans = list(), 0
	    a = [int(w) for w in input().split(" ")]
	    a.sort()
	    maxx = a[-1]
	    for n in a:
	        ans += up(sys, n)
	    print(ans)

  • 动态规划更新:
	anum = eval(input())
	for _ in range(anum):
	    mnum = eval(input())
	    sys, ans = list(), mnum
	    a = [int(w) for w in input().split(" ")]
	    a.sort()
	    maxx = a[-1]
	    can = [False for _ in range(maxx+1)]
	    can[0] = True
	    # 对每个新加入的项进行检查
	    for _ in a:
	    	# 已经满足,则答案减少1
	        if can[_]:
	            ans -= 1
            # 更新can数组
            # 所有加上该数的can的位置都应该被置1
	        for up in range(_, maxx+1):
	            can[up] = can[up] | can[up-_]
	    print(ans)
	    

P3951 [NOIP2017 提高组] 小凯的疑惑

在这里插入图片描述
数论问题最简单的就是打表找规律,最后得出这个题的结果为a*b-a-b

对于正整数p, q满足gcd(p,q)=1, 我们有px+qy=n无非负整数解的最大正整数n为pq−p−q。

using namespace std;
int a,b,c;

int main(){IOS;
    cin>>a>>b;
    cout<<(a*b-a-b);
    return 0;
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值