自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

bzoj1045: [HAOI2008] 糖果传递

原型是环状的匀分纸牌,就是数学分析法。这类题目应该都是取中位数const int N = 1000010;int n, Dat[N];inline void Input() { scanf("%d", &n); Rep(i, n) scanf("%d", &Dat[i]);}inline void Solve() { LL T = 0;...

2013-06-26 21:50:17 106

原创 bzoj1044: [HAOI2008]木棍分割

第一问和第二问分开处理,第一问二分回答,第二问Dp,要用辅助数组,以空间换时间,复杂度可以做到O(NM)const int N = 50005, M = 1005, MOD = 10007;int Dat[N], n, m, s[N];inline void Input() { scanf("%d%d", &n, &m); For(i, 1, n) sc...

2013-06-26 18:16:41 60

bzoj1043: [HAOI2008]下落的圆盘

用余弦定理求出覆盖的极角区域,然后就是简单的线段覆盖const int N = 1010;struct Circle { DB Ox, Oy, R; Circle() {} Circle(DB _Ox, DB _Oy, DB _R) : Ox(_Ox), Oy(_Oy), R(_R) {} inline DB Dis(Circle &B) { return ...

2013-06-25 22:11:27 62

bzoj1042: [HAOI2008]硬币购物

Dp[i]表示硬币个数不受限制,且面额为i的方案数,那受限制的方案数就等于减去当每种硬币超过限制的方案数,又因为有重复,所以要加回来,整个过程比较抽象const int N = 4, S = 100010;LL Dp[S] = {0};int Dat[N], D[N], T, s;inline void Input() { Rep(i, 4) scanf("%d", ...

2013-06-25 16:23:22 63

bzoj1041: [HAOI2008]圆上的整点

设a=m^2-n^2,b=2*m*n,c=m^2+n^2,则已经满足a^2+b^2=c^2,枚举m,n(m>n),只统计一个象限的答案,最后答案乘以4LL r, n, m;typedef pair<int, int> II;set<II> S;inline void Cal(int d) { LL r = ::r / d; for(n =...

2013-06-25 13:36:53 181

bzoj1040: [ZJOI2008]骑士

树形DP,加上环状DP环状DP就把它当成一条链来做,特殊处理头与最后的关系const int N = 1000010;LL Dp[N][2];int n, Dat[N], C[N], Cnt[N] = {0};inline void Input() { scanf("%d", &n); For(i, 1, n) { scanf("%d%d", &am...

2013-06-24 17:15:32 120

bzoj1038: [ZJOI2008]瞭望塔

半平面交求最低点,较裸此题答案非常大,用INFwa了很久const DB eps = 0.000001;const int N = 310;int n, m;inline int Equal(DB a, DB b) { if(fabs(a - b) < eps) return 0; return a < b ? -1 : 1;}struct...

2013-06-24 14:44:27 83

bzoj1037: [ZJOI2008]生日聚会Party

Dp[i][j][k1][k2]表示前i个人,有j个男孩,从后往前,男孩最多比女孩多k1个,女孩最多比男孩多k2个的方案数Dp[Now][j + 1][k1 + 1][max(k2 - 1, 0)] += Dp[Last][j][k1][k2]Dp[Now][j][max(k1 - 1, 0)][k2 + 1] += Dp[Last][j][k1][k2]const int N = ...

2013-06-23 16:06:07 71

bzoj1034: [ZJOI2008]泡泡堂BNB

两个数组从小到大排序最小和最大的能赢就赢 否则 用最小的打最大的,证明略const int N = 100010;int Dat[2][N], n;inline void Input() { scanf("%d", &n); Rep(i, 2) Rep(j, n) scanf("%d", &Dat[i][j]); sort(Dat[0], D...

2013-06-23 15:06:48 88

bzoj1033: [ZJOI2008]杀蚂蚁antbuster

恶心的模拟题,不多说const int N = 30, dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};struct Ant { int x, y, lx, ly; int age, life, blood, level; bool cake; friend bool operator<(Ant a, Ant b) { ...

2013-06-22 10:05:54 111

bzoj 1030:[JSOI2007]文本生成器

比较裸的AC自动机+Dp,F[i][j][k]表示第i个节点,走了j步,有无有单词(k)的方案数题。SPOJ的GEN,是这道的加强版。const int N = 26, M = 110, Maxn = 7010, Mod = 10007;struct Node { Node *Child[N], *Next; int Dat, Id; bool Danger; No...

2013-06-22 08:57:52 54

bzoj1029: [JSOI2007]建筑抢修

按照t2从小到大排列之后贪心若当前任务可以插入,则插入若当前任务不可以插入,分两种情况:任务的耗时大于等于之前插入的任务的最大耗时,跳过当前任务任务的耗时小于之前插入的任务的耗时,将最前插入的耗时最大的那个任务删除,插入当前任务const int N = 150010;struct Node { int L, T; inline bool operat...

2013-06-21 14:08:20 47

bzoj1028: [JSOI2007]麻将

n<=400的话,就很容易想到暴力枚举n^3的做法,现枚举加进去的数,再枚举对子的数字,再判断是否合法就可以了const int N = 410;int A[N], B[N], n, m;inline void Input() { scanf("%d%d", &n, &m); int x; Rep(i, m * 3 + 1) scanf("%d"...

2013-06-21 13:49:32 104

bzoj1027: [JSOI2007]合金

每种材料可以用前两个表示,设为X,Y,分别作为横纵坐标,那么两个点的连线上的点都可以被这两个点表示,几个点围城的凸包可以表示凸包内的所有点,那么问题就转化为求最少的点,使他们围城的凸包能够包含所有的点,答案用最小环求解 //-----------------------------------发现原来的代码有点bug,虽然可以AC,但最小环是错的,以更正const int N = 5...

2013-06-21 11:58:49 76

1026: [SCOI2009]windy数

简单的数位DP,F[i][k][2]表示第i个数字位为K(0<=k<=9)是否为满数的方案数//------------------------------------------------------------------------------------------上主程序#define For(i, s, t) for(int i = (s); i <=...

2013-06-20 13:36:31 60

1999的国家集训队的论文

1999的国家集训队的论文,论文以及配件齐全

2014-02-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除