hdu4857逃生第一题是拓扑排序,不是按照字典序最小输出,而是要使较小的数排在最前面。。赛后弄了好久,才比较明白,我一直以为反向建图,i从1到n,开始深搜dfs( i ),对i点的边,由小到大继续搜一下,同时标记搜过的数,搜过之后就不再搜,搜到底之后ans[cnt++] = u;这样顺序输出就是答...
分类:
其他好文 时间:
2014-07-22 22:47:36
阅读次数:
261
http://acm.hdu.edu.cn/showproblem.php?pid=3998求LIS的长度,并且求有多少组互不相交的LIS求组数用最大流建图如下:if(dp[i]==1)add(S,i,1) ; if(dp[i]==ans)add(i+n,T,1) ;if(j>i && dp[j.....
分类:
其他好文 时间:
2014-07-22 00:04:33
阅读次数:
194
题意:
一段固定不变的数字 m次询问 每次询问选择一个x值 使得区间[l,r]中每个元素与x的差的绝对值的和最小
思路:
x值明显选择[l,r]中数字的中位数 那么题目就变成了[l,r]中第(r-l+1+1)/2小的数是几 由于数字是静态的 所以划分树可解
那么ans = num(x) - num(>x) * x
由于sum之间可由前缀和相互求出 num也可以通过...
分类:
其他好文 时间:
2014-07-21 16:16:12
阅读次数:
263
区域合并时需要考虑两点
1、pushup中区域合并时最左右递增长度(llen/rlen)等于整个区域长度(r - l)时需要重新计算父区域的最左右的递增长度
2、query中需要考虑区域合并接口处是否有可能产生ans值
#include
#include
#include
#include
using namespace std;
const int maxn = 100050;
s...
分类:
其他好文 时间:
2014-07-21 15:45:16
阅读次数:
227
kmp 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int ans; 7 char n[1000010],m[10010]; 8 int next[10010]; 9 10 void getn...
分类:
其他好文 时间:
2014-07-21 14:15:53
阅读次数:
170
一般情况:
#include
#include
#include
using namespace std;
int a[1005],dp[1005],n;
int LIS()
{
int i,j,ans,m;
dp[1] = 1;
ans = 1;
for(i = 2;i<=n;i++)
{
m = 0;
for(...
分类:
其他好文 时间:
2014-07-21 11:23:15
阅读次数:
185
题解:如果确定了第一排前两个数,那么剩下的数是唯一确定的,所以只要分情况讨论即可。#include #include int n,a[10010],s[10010];int ans(int x){ memset(a,0,sizeof a); if(x==1)a[1]=1; if(x...
分类:
其他好文 时间:
2014-07-21 11:14:56
阅读次数:
168
public class Solution { public String reverseWords(String s) { String ans=reverse(s); String s2[]=ans.split("\\s+"); ...
分类:
其他好文 时间:
2014-07-21 08:20:33
阅读次数:
203
=-=今天被dev-c++坑到死..简直晚上准备怒装liunx..T1:数论一开始碰到的是T1的运算符优先问题吧..maybe..但是我加上括号了还是WA啊..后面把式子拆开写才A了..次奥附上代码以此为戒:错误代码m=(e-s)/t+1;ans=((2+(m-1)*d)*m)/2;tot+=ans...
分类:
其他好文 时间:
2014-07-21 08:10:38
阅读次数:
275
//area=(n*m)/ ((x+1)*(k-x+1))
//1: x==0;
//2: x=n-1
//3: x=m-1
# include
long long max(long long x,long long y)
{
return x>y?x:y;
}
int main()
{
long long n,m,k,sum,t,ans;
scanf("%lld%lld%lld",&...
分类:
其他好文 时间:
2014-07-20 22:27:13
阅读次数:
172