题目:有n种硬币,面值分别为V1,V2,...Vn,每种都有无限多.给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值! #include <bits/stdc++.h> using namespace std; int n, m, t; const int INF = 0x3f3f3f3f; int a[1005],Max[1005],Min[1005]; void dfs(int *d, int s) { for(int i=1; i<=n; i+
写在前面 3 年的硕士生涯一转眼就过去了,和社交网络也打了很长时间交道.最近突然想给自己挖个坑,想给这 3 年写个总结,画上一个句号.回想当时学习 R 语言时也是非常戏剧性的,开始科研生活时到处发邮件要源代码,发完最后一封本以为又是无功而返,很意外的收到了秒回的邮件,邮件中附上了由 R 语言编写的实验代码.当时过于开心,因为终于有热心的作者回复了,以至于没有仔细考虑,想都没想对着满是警告的代码开始了 R 语言学习之旅.之后的几天陆陆续续的收到了其他作者的回复,实验代码多是使用 Python 构建
A OpenJ_Bailian 1088 滑雪 B OpenJ_Bailian 1579 Function Run Fun C HDU 1078 FatMouse and Cheese D POJ 3280 Cheapest Palindrome E OpenJ_Bailian 1976 A Mini Locomotive F OpenJ_Bailian 2111 Millenium Leapcow G OpenJ_Bailian 1141 B
很明显可以根据放不放建边,然后最一遍最长路即是答案 DAG上的动态规划就是根据题目中的二元关系来建一个 DAG,然后跑一遍最长路和最短路就是答案,可以用记忆化搜索的方式来实现 细节:(1)注意初始化数组 (2)搜索的过程中最后记住加入状态本身的值,不然会答案全部为0 #include<cstdio> #include<algorithm> #include<cstring> #define REP(i, a, b) for(int i = (a); i < (b)