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. zencart産品描述加上錨文本

    首先,函數會遍曆整段描述,假如一段描述裏面有Hermes wallets這個關鍵詞,那麽函數就會對這個關鍵詞加上鏈接,至于鏈接到哪裏,上面數組裏面有,隻要把數組裏面的内容替換你想要的就可以. 那麽在z ...

  2. 为什么大家都用i标签<i></i>用作小图标?

    用 <i> 元素做图标在语义上是不正确的(虽然看起来像 icon 的缩写): <i> 比 <span> 短,但 gzip 后差异很小,不过打字可以少按三个键: 多数 ...

  3. maven webjar构建及使用

    这么做的目的想要把前端静态文件,css啊js啊一堆的放在一个maven工程下管理,需要的时候调用jar包直接引用. 1.把要打包文件放到另外的maven项目的/src/main/resources下 ...

  4. PHP global 关键字

    global关键字用于在函数内部访问全局变量. <?php $x = 5; $y = 10; function myTest(){ global $x,$y; $x = $x+$y; } myT ...

  5. React Native 学习-01

    React Native 学习 (学习版本 0.39) 一.环境配置 二.IDE选择 webstorm 1.webstorm配置 ①.首先是可以选择使用汉化包汉化.eu68 ②.安装插件和外部库. 由 ...

  6. Linux版Matlab R2015b的bug——脚本运行的陷阱(未解决)

    0 系统+软件版本 系统:CentOS 6.7 x64, 内核 2.6.32-573.el6.x86_64软件:Matlab R2015b(包括威锋网和东北大学ipv6下载的资源,都测试过) 1 脚本 ...

  7. Nuget包之间的依赖

    为什么我们使用依赖呢??原因是某些资源是基于某些资源的基础上才可以运行的,比如bootstrap基于Jquery,EntityFramework.zh-Hans基于EntityFramework,如果 ...

  8. .NET截取指定长度汉字超出部分以"..."代替

    /// <summary> /// 将指定字符串按指定长度进行剪切, /// </summary> /// <param name= "oldStr " ...

  9. python学习——将while循环改成函数

    笨办法学python第33节 这一节主要学习内容是while循环,记录内容为将while改成函数,首先源代码如下: i = 0 numbers = [] while i < 6: print & ...

  10. C#将字节流加密解密

    public class Encrypt { public static byte[] ToEncrypt(string encryptKey, byte[] P_byte_data) { try { ...