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. 切换jdk版本

    切换JDK 开发中jdk版本需要是1.3.1,当前电脑中用的是jdk1.8 下载jdk1.3.1 可以在官网上下,但是我捣鼓半天,发现下载又慢又需要账号,所以在CSDN下了个 地址,可以下载第一个ex ...

  2. JavaScript引擎LHS查找和RHS查找

    要想真正理解Javascript脚本中每一句代码的执行过程,需要弄清楚几个基本概念:1.引擎,从头到尾负责整个 JavaScript 程序的编译及执行过程.2.编译器,引擎的好朋友之一,负责语法分析及 ...

  3. BZOJ2408 混乱的置换

    这道题即THUSC 2015 t3...只不过数据范围$n, m ≤ 10^5$ 可以上网查这个鬼畜的东西"Burrows-Wheeler Transform" 这道题要用到解压缩 ...

  4. C++变量初始化问题

    初始化和赋值的区别 在C++中,变量初始化和赋值操作符是两个完全不同的概念. 初始化不是赋值,初始化的含义是创建变量分配存储空间时为其赋一个初始值,而赋值的含义是把内存空间的当前值擦除,用一个新值代替 ...

  5. Openwrt 编译报错:rootfs image is too big解决方法

    修改: tools/firmware-utils/src/mktplinkfw2.c static struct flash_layout layouts[] = { { .id = "8M ...

  6. Android中的数据保存

    形式 Android的数据保存分为3种形式:file, SharedPreference, Database 文件 主要思想就是通过Context类中提供的openFileInput和openFile ...

  7. React Native 使用问题记录

    1.<View></View>之间有空格会报错 Trying to add unknown view tag 2.一些js语法糖注意点http://facebook.githu ...

  8. android 多个notifycation向同一个Actiivity传递不同数据

    如果你有这方面的需求,那你实践的时候可能会发现,多个Notifycation点击的时候会传递相同的数据. 通常情况下我们可能这样写. Notification notification = new N ...

  9. PHP初步(中)

    一.文件载入 文件载入:将目标文件的代码载入到当前的位置上,有时候也叫流程控制. 文件载入的目的是实现网站的分层设计,因为不同的页面可能有很多相同的区域(相同的代码),这些相同的代码只需要写一次,有需 ...

  10. Easy51RTOS入门级初略分析

    main.c #include "reg51.h" #include "os_cfg.h" #define TASK_DELAY0 TIME_PER_SEC/1 ...