摘要:
思路:四边形每一个角形 的一个折线的每一个线段必须与之前每一个四边形的角形的两个边分别有一个交点 才能分割出最大数量的平面一个四边方形可以分2块,两个四边方形按照上面的思路可以分成8+2(最里面和最外面)块。第二个方形与第一个有8个交点,所以比一个方形的时候多8个区域... 阅读全文
摘要:
题意:求N!的约数的个数以下部分内容转自:http://blog.csdn.net/ji414341055/article/details/5759157 先说基本定理:若正整数n可分解为p1^a1*p1^a2*...*pk^ak其中pi为两两不同的素数,ai为对应指... 阅读全文
摘要:
java大数类应用。import java.math.BigInteger;import java.util.Scanner;public class Main{ public static void main(String args[]) { Scanner ci... 阅读全文
摘要:
方法:分组背包。题意:某人要买鞋子,有k种鞋,要求每种鞋至少买一双,给出每双鞋子的花费和价值,问m元钱可以买到的鞋子的最大价值是多少。思路:背包九讲讲的是每组至多选一个,此题是每组至少选一个,所以dp[i][j]代表前i组money为j最多买到的价值。初始化方面要注意... 阅读全文
摘要:
思路:二维背包,确定什么是背包很重要,然而我对这方面还是不熟练,此题用s(杀怪的个数)和忍耐度m作为背包的两个容量,如果价值(经验)大于等于n,则升级,借助中间变量ans来找到最小忍耐值,如果最小忍耐值大于m,则输出-1,否则输出m-ans。#includeusing... 阅读全文
摘要:
思路:多重背包,dp[i]表示价格总数为i能凑出来的最大价格,比模板多了的唯一一点是查多少数字出现过,枚举一遍dp[i]==i的个数。#includeusing namespace std;#define inf 0x3f3f3f3f#define ll long l... 阅读全文
摘要:
这是一个多重背包的模板,也是十分好用的一种模板,因为这个比直接拆除01 背包来做要省些时间。这是为啥呢,首先先由我讲一下为什么能换成01 背包吧。 举个例子。假如给了我们 价值为 2,但是数量却是10 的物品,我们应该把10给拆开,要知道二进制可是能够表示任何数的,... 阅读全文
摘要:
题意:告诉你有n个结点,f(i)表示度为i的结点的cool值,现在你需要做的就是加n-1条边,构成一棵树,并使得这棵树的每个结点的cool值之和,即coolness最大,输出最大的coolness。思路:完全背包。知识点:有n个结点的树有2*n-2个度(入度+出度)。... 阅读全文