【JSOI 2009】 Count】的更多相关文章

[题目链接] 点击打开链接 [算法] 二维树状数组 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 300 #define MAXC 100 int N,M,Q,i,j,opt,x,y,xa,ya,xb,yb,c; ][MAXN+]; template <typename T> inline void read(T &x) { ; x = ; char c = getchar(); for (;…
[POJ 2777] Count Color(线段树区间更新与查询) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 40949   Accepted: 12366 Description Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here…
[题目链接] 点击打开链接 [算法] 数位DP,注意处理前导零的情况 [代码] #include<bits/stdc++.h> using namespace std; #define MAXL 15 int n,m; ],a[MAXL]; template <typename T> inline void read(T &x) { ; x = ; char c = getchar(); for (; !isdigit(c); c = getchar()) { if (c…
[题目链接] 点击打开链接 [算法] 线段树 注意标记下传 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 500000 typedef long long LL; struct SegTreeNode { LL l,r,sum,lazya,lazyb; }tree[MAXN+]; LL i,N,P,Q,l,r,x,opt; LL a[MAXN+]; template <typename T> void…
[题目链接] 点击打开链接 [算法] 将T2从小到大排序,当决策当前建筑修或不修时,若当前花费时间 + T1 <= T2,则修,否则判断T1是否小于之前修的 T1最大的建筑,若小于,则修,我们可以用一个大根堆来维护T1的最大值 这题用的其实就是贪心的思想 : 从局部最优到全局最优 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 150000 struct info { int T1,T2; } a[MAXN+]…
[题目链接] 点击打开链接 [算法] 很明显,我们可以用线段树解决此题 只需维护区间最值就可以了 [代码] #include<bits/stdc++.h> using namespace std; #define MAXM 200000 int M,D,x,l,lastans,len; ]; char opt; template <typename T> inline void read(T &x) { ; x = ; char c = getchar(); for (;…
[题目链接] 点击打开链接 [算法] f[i][j]表示第i段到第j段,最少需要多少次全部消除 那么,当color[i] = color[j]时 : 若s[i] + s[j] > 2,根据题目中所说的“连锁反应”,很容易得到f[i][j] = f[i+1][j-1] 若s[i] + s[j] = 2,我们就需要先消除i到j,然后再花一颗珠子消除剩余的,则 f[i][j] = f[i+1][j-1] + 1 否则,显然有 : f[i][j] = max{f[i][k] + f[k+1][j]} (…
[题目链接] 点击打开链接 [算法] 笔者做这题参考了这篇博客 : https://blog.sengxian.com/solutions/bzoj-1016 推荐阅读 首先,我们需要知道三个定理 : 定理1 : 若A,B是两棵不同的最小生成树,它们的权值从小到大排列分别为 :                         W(a1),W(a2),W(a3)....W(an-1)                         W(b1),W(b2),W(b3)....W(bn-1)    …
[题目链接] 点击打开链接 [算法] 考虑求每个人可以不分的方案 那么,对于每件物品,我们把它分成n份,每一份对应分给每一个人,有C(a[i]+n-1,m-1)种方案,而总方案数就是每种 物品方案数的乘积 然后,根据容斥原理,ans = 至少0人没分到特产 - 至少1人没分到特产 +  ... - C(m,m) * 没有一人分到 特产 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 2010 ; int i,n,m;…
[题目链接] http://poj.org/problem?id=2777 [算法] 线段树 [代码] #include <algorithm> #include <bitset> #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex> #include <cstdio> #includ…