摘要:一道实现很蛋疼的题。必须静下理清思路,整理出各种情况。不然就会痛苦地陷入一大堆if..else里不能自拔。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#i...
阅读全文
摘要:f[i][j]=f[i-j][j]+f[i][j-1],结果很大需要高精度。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#includ...
阅读全文
摘要:dp[i][j]表示前i种蚂蚁组成元素个数为j的集合有多少种。则dp[i][j] = dp[i-1][j] + dp[i-1][j-1] + ... + dp[i-1][ max(0,j-a[i])];直接算的话复杂度为O(TA^2)状态的转移是一个区间内的数的和,所以再用一个数组f[i][j]记录...
阅读全文
摘要:dp[i][j]表示前i种硬币中取总价值为j时第i种硬币最多剩下多少个,-1表示无法到达该状态。a.当dp[i-1][j]>=0时,dp[i][j]=ci;b.当j-ai>=0&&dp[i-1][j-ai]>0时,dp[i][j]=dp[i-1][j-ai]-1;c.其他,dp[i][j]=-1So...
阅读全文
摘要:一步一步模拟,做这种题好累先放大的的,然后记录剩下的空位有多少,塞1*1和2*2的进去//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typede
阅读全文
摘要:维护前i个星期是哪个的花费最少(包括储存的费用) minv=min(minv,C_i)//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typede
阅读全文
摘要:把每个点转成区间,排序,首先考虑最左边的区间[l1,r1],要覆盖住这个点则需要在这个区间里的某个位置x放一个雷达,显然尽量放在靠右端是最好的,因为可以同时被右边的其他区间覆盖,但是要被右边的区间[l2,r2]覆盖还需满足l2#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pai
阅读全文
摘要:从左到右,如果需要覆盖当前点x那么就要选一个[l,r]满足l#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(a) push(a)#define INF 0x1f1f1f1f#define lson idx T min(const T&
阅读全文
摘要:ZOJ 3767 Elevator求和,签到题//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define p
阅读全文
摘要:DFS枚举每个点开始的全部长度为6的数字串,插入到set里面。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#
阅读全文
摘要:用next_permutation枚举全排列。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define p
阅读全文
摘要:不用说,想让两个数的差最小,那这个两个数的位数要最接近。不妨设a>b;如果n是奇数 a就是最小的(n/2+1)位数,b就是最大的n/2位数如果是偶数 枚举每一对相邻的数,大的作为a的第一位,小的作为b的第一位,然后就一样了。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing
阅读全文
摘要:读懂题意就能写了,递归层数最多10,怎么写都能过。DFS://#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#de
阅读全文
摘要:简单DFS。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(a) push(a)#defi
阅读全文
摘要://#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(a) push(a)#define INF
阅读全文
摘要:想清楚后能发现就要让我们求最小生成树(如果图连通的话,否则就是森林)//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pi
阅读全文
摘要:和Dijksta求最短路一样,只是要维护两个数组:最短路d1,次短路d2。然后更新的时候注意细节。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;
阅读全文
摘要:以状态(u,fuel)为结点建图(把每个点拆成100个),表示在点u时还剩下fuel个单位的燃料,那么状态就可以这样转移:(u,fuel)->(u,fuel+i) : 加i单位的燃料,所以这条边的权值就是 i*p[u];(u,fuel) ->(v,fuel-dist): 走到另一个点,其中dist为路径。当然直接这样做可能会超时,需要做两个小优化(做其中一个就能AC了)1. (u,fuel)->(u,fuel+i) 中的i只需为1就行了,这样就能边数从100^2降到100. 比如(u,fuel)->(u,fuel+3)可以用 (u,fuel)->(u,fuel+1
阅读全文
摘要:(i,j)表示当前在结点j,还剩下i次使用魔法的机会。以(i,j)为结点建图,求最短路。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typed
阅读全文
摘要://#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(a) push(a)#define INF
阅读全文
摘要:由于油箱是无限的,所以每次经过加油站都不选择加油,等到后面油不够了,再来“反悔”,把前面经过的油站的油加上,尽可能选量大的,用优先队列维护。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef un
阅读全文
摘要:每次合并选最短的两块木板,用优先队列优化。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(
阅读全文
摘要:从坐开始,贪心选择每个点标记还是不标记。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(a
阅读全文
摘要:不能单纯比较头尾两个字符,应该比较头尾两个字符串。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define
阅读全文
摘要://#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair pii;#define pb(a) push(a)#define INF
阅读全文
摘要:假设每只蚂蚁都是一样的,那么相遇后调转方向和相遇后擦肩而过继续走是一样的。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair
阅读全文