BZOJ 1666 水..

BZOJ 1579 分层图最短路.

BZOJ 1782 从一开始若某头牛停在U,那么U的子树的时间都会加一用BIT维护DFS序就行了

BZOJ 1572

贪心+堆 排序后查看是否超过了时间,超过了就弹出

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define LL long long
using namespace std;
const LL Maxn=;
struct Node{LL p,d;}A[Maxn];
LL Ans,Cnt,n;
priority_queue<LL> Q;
inline bool cmp(Node A,Node B)
{return A.d<B.d || (A.d==B.d && A.p<B.p);}
int main()
{
scanf("%lld",&n);
for (LL i=;i<=n;i++) scanf("%lld%lld",&A[i].d,&A[i].p); sort(A+,A+n+,cmp); Cnt=;
for (LL i=;i<=n;i++)
{
Ans+=A[i].p; Cnt++; Q.push(-A[i].p);
if (Cnt>A[i].d) {Ans+=Q.top(); Q.pop(); Cnt--; }
}
printf("%lld\n",Ans);
return ;
}

BZOJ 1572

BZOJ 1592

这道题有个结论就是最小花费的高度肯定和在原来的高度中.

这个结论感觉上非常显然,如果不在原来的高度中,那个肯定能从原来的高度中找到最优的.然后直接Dp就可以了

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int Maxn=;
const int Inf=0x3f3f3f3f;
int a[Maxn],b[Maxn],C[Maxn][Maxn],F[Maxn][Maxn],Ans,n;
inline int Min(int x,int y) {return x>y?y:x;}
inline int Abs(int x) {return x>?x:-x;}
inline bool cmp1(int a,int b) {return a<b;}
inline bool cmp2(int a,int b) {return a>b;}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&a[i]),b[i]=a[i];
for (int i=;i<=n;i++) F[i][]=Inf;
sort(b+,b+n+,cmp1);
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
{
C[i][j]=F[i-][j]+Abs(b[j]-a[i]);
F[i][j]=Min(F[i][j-],C[i][j]);
}
Ans=F[n][n];
sort(b+,b+n+,cmp2);
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
{
C[i][j]=F[i-][j]+Abs(b[j]-a[i]);
F[i][j]=Min(F[i][j-],C[i][j]);
}
printf("%d\n",Min(Ans,F[n][n]));
return ;
}

BZOJ 1592

BZOJ 1827

树形DP,U节点向子节点转移时,

ans′=ans–size∗w+(tot–size)∗w

ans′=ans+(tot–2∗size)∗w 若(tot–2∗size)<0那么ans'比ans优

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define LL long long
using namespace std; const LL Maxn=;
struct EDGE{LL to,next,w;}edge[Maxn<<];
LL head[Maxn],C[Maxn],n,u,v,w,Ans,Dis[Maxn],Size[Maxn],cnt;
inline void Add(LL u,LL v,LL w)
{edge[cnt].to=v;edge[cnt].next=head[u];edge[cnt].w=w;head[u]=cnt++;}
LL Dfs(LL u,LL fa)
{
LL Ret=Dis[u]*C[u]; Size[u]=C[u];
for (LL i=head[u];i!=-;i=edge[i].next)
{
if (edge[i].to==fa) continue;
Dis[edge[i].to]=Dis[u]+edge[i].w;
Ret+=Dfs(edge[i].to,u);
Size[u]+=Size[edge[i].to];
}
return Ret;
}
void Move(LL u,LL fa)
{
for (LL i=head[u];i!=-;i=edge[i].next)
{
if (edge[i].to==fa) continue;
if (Size[]-*Size[edge[i].to]<)
{
Ans+=(Size[]-*Size[edge[i].to])*edge[i].w;
Move(edge[i].to,u);
}
}
}
int main()
{
scanf("%lld",&n);
for (LL i=;i<=n;i++) scanf("%lld",&C[i]);
memset(head,-,sizeof(head));
for (LL i=;i<n;i++)
{
scanf("%lld%lld%lld",&u,&v,&w);
Add(u,v,w),Add(v,u,w);
}
Ans=Dfs(,);
Move(,);
printf("%lld\n",Ans);
return ;
}

BZOJ 1827

USACO 刷水的更多相关文章

  1. [洛谷U22157]刷水题(数位dp)(hash)

    题目背景 做正经题是不可能做正经题的,这辈子都不可能做正经题的,毒瘤题又不会做毒瘤题,就是水题这种东西,才维持了蒟蒻的信心: 题目描述 这里有N+1 道水题,编号分别为0 ~N+1 ,每道水题都有它自 ...

  2. Luogu USACO Training 刷水记录

    开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...

  3. usaco silver刷水~其实是回顾一下,补题解

    [BZOJ1606][Usaco2008 Dec]Hay For Sale 裸01背包 ;i<=n;i++) for(int j=m;j>=a[i];j--) f[j]=max(f[j], ...

  4. USACO 刷题有感

    最近每天都尽量保持着每天一道USACO的题目,呵呵,一开始都是满简单的,一看题目基本上思路就哗啦啦地出来了,只不过代码实现有点麻烦,花了一些时间去调试,总体感觉还不错,但是越往后做,应该就很难保持一天 ...

  5. bzoj刷水

    因为最近的生活太颓废总是不做题而被老师D了一番, 所以今天晚上到bzoj上去刷了几道水题.....   bzoj 4320: ShangHai2006 Homework 题目大意 维护一个支持两个操作 ...

  6. USACO刷题之路

    重拾经典 本科生涯结束了,在大学做的ACM竞赛现在基本忘的差不多了.USACO作为一个经典的题库,本来是面向OI选手的,但是由于题目质量很高所以受到大家的好评,所以我这次就从它开始我的刷题之路吧. 由 ...

  7. [暑假的bzoj刷水记录]

    (这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...

  8. 【刷水】之USACO2008资格赛(Bzoj1599-1603)

    做之前真是没想到有这么水>.< 但做了还是发上来吧>.< 就当是刷一刷AC量&1A率什么的>.< Bzoj1599: [Usaco2008 Oct]笨重的石 ...

  9. USACO刷题之路,开始了

    几天前,重新开始刷题了. 重新刷题有几个原因: 1.曾经的OI经历,如今除了悟性高些.知识多些,大多已经遗忘.不希望真的让之前的OI水平就这么丢了. 2.越来越觉得,刷题真的是一件很开心的事情.大学中 ...

随机推荐

  1. 检测cpu是否支持虚拟化和二级地址转换【转】

    SLAT:二级地址转换   用微软的小工具“Coreinfo.exe” 下载地址是: http://technet.microsoft.com/en-us/sysinternals/cc835722 ...

  2. GbkToUtf8 Utf8ToGbk PackHttp

    void CFunc::GbkToUtf8(CString &strGBK) { , (LPCTSTR)strGBK, -, NULL, ); unsigned ]; memset(wszUt ...

  3. 基础算法之快速排序Quick Sort

    原理 快速排序(Quicksort)是对冒泡排序的一种改进. 从数列中挑出一个元素,称为"基准"(pivot); 排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的 ...

  4. a 标签中调用js的几种方法 文章摘自他人

    我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题 ...

  5. xtrapivotcontrol 控件用法及相关属性

    XtraPivotControl使用指南:可参照以下的文档: 转载自:http://wenku.baidu.com/view/d7886b20aaea998fcc220e53.html 上面链接中对x ...

  6. P3P设置第三方cookie解决方案

    原文地址:http://blog.csdn.net/lovingprince/article/details/5984449 首先,什么是 P3P ( Platform for Privacy Pre ...

  7. 无废话WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  8. Scala HandBook

    目录[-] 1.   Scala有多cool 1.1.     速度! 1.2.     易用的数据结构 1.3.     OOP+FP 1.4.     动态+静态 1.5.     DSL 1.6 ...

  9. js关闭子窗口,刷新父窗口

    父页面js:function btnAdd_onclick() {window.open("xxx.jsp", "","height=600, wid ...

  10. 完美解决google无法访问

    1.进入短信界面 2.菜单-设置 3.修改短信中心号码(Set the SIM's smsc number) 保存 [测试结果]:提示保存成功,但是号码没有改变,退出重新进入设置才会看到号码更新 [预 ...