前几天做了NOIP2011的题,感觉不是那么难。

  这边先做了两天的前两题,T3还没打。

D1T1:顺次读入,分别判断是否覆盖即可,照例大水:

#include<cstdio>
int x,y,a[],b[],c[],d[],n,ans=-;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d%d%d%d",a+i,b+i,c+i,d+i);
scanf("%d%d",&x,&y);
for(int i=;i<=n;i++)
if(a[i]<=x&&b[i]<=y&&c[i]+a[i]>=x&&d[i]+b[i]>=y)ans=i;
printf("%d",ans);
return ;
}

D1T2:一边扫过去,对于每家客栈,我们记下前一家相同色调的客栈,前一家能去的咖啡店,之前有多少家可以和这间客栈搭配和这是第几间该色调的客栈,然后如果前一家色调相同的客栈编号在前一家能去的咖啡店之前,说明这之前的客栈都能去,把可搭配客栈数更新后加入答案,否则直接加入答案。

代码如下:

#include<cstdio>
using namespace std;
int n,p,t[],h[],ans,l[],lst[];
int main()
{
scanf("%d%*d%d",&n,&p);
for(int i=;i<=;i++)lst[i]=;
for(int i=;i<=n;i++)
{
int w,c;
scanf("%d%d",&c,&w);
t[i]=t[i-]+(w<=p);
if(t[i]!=t[lst[c]-])h[c]=l[c];
l[c]++;
ans+=h[c];
if(w<=p)h[c]=l[c];
lst[c]=i;
}
printf("%d",ans);
return ;
}

D2T1:用杨辉三角计算组合数然后用二项式定理直接出解:

#include<cstdio>
const int mod=;
int a,b,k,n,m,C[][],aa=,bb=;
void calC()
{
C[][]=;
for(int i=;i<=;i++)
for(int j=;j<=i;j++)
C[i][j]=(C[i-][j-]+C[i-][j])%mod;
}
int main()
{
calC();
scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
a%=mod;b%=mod;
for(int i=;i<=n;i++)aa=(aa*a)%mod;
for(int i=;i<=m;i++)bb=(bb*b)%mod;
printf("%d",((aa*bb%mod)*C[k+][n+])%mod);
return ;
}

D2T2:使和标准最近,而且是单调递减,容易想到用二分答案+check

二分就不说了。check中我们要O(m)计算m个区间的sigma,可以对于二分出的x计算从1到n能加入答案的计算前缀和然后轻松处理。

要注意防止爆long long,这边处理方法是加个最优上限maxn,否则一定不优。

代码如下:

#include<cstdio>
const long long maxn=10000000000000ll;
long long mn(long long x,long long y){return x<y?x:y;}
long long s[],ans=maxn,sa,v[],w[],sum[],l[],r[],ll,rr,n,m,mid;
bool check(long long x)
{
long long tt=;
for(int i=;i<=n;++i)
sum[i]=sum[i-]+(w[i]>=x),
s[i]=s[i-]+(w[i]>=x?v[i]:);
for(int i=;i<=m;++i)
{
tt+=(sum[r[i]]-sum[l[i]-])*(s[r[i]]-s[l[i]-]);
if(tt>maxn)return ;
}
ans=mn(-mn(tt-sa,sa-tt),ans);
return tt<=sa;
}
void bina()
{
ll=;rr=;
while(ll<rr)
{
mid=(ll+rr)/;
check(mid)?rr=mid:ll=mid+;
}
}
int main()
{
scanf("%lld%lld%lld",&n,&m,&sa);
for(int i=;i<=n;++i)scanf("%lld%lld",w+i,v+i);
for(int i=;i<=m;++i)scanf("%lld%lld",l+i,r+i);
bina();
check(mid-);check(mid);
printf("%lld",ans);
return ;
}

[NOIP2011]刷水的更多相关文章

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

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

  2. bzoj刷水

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

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

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

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

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

  5. Luogu USACO Training 刷水记录

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

  6. Codeforces 刷水记录

    Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...

  7. bzoj 刷水

    bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...

  8. USACO 刷水

    BZOJ 1666 水.. BZOJ 1579 分层图最短路. BZOJ 1782 从一开始若某头牛停在U,那么U的子树的时间都会加一用BIT维护DFS序就行了 BZOJ 1572 贪心+堆 排序后查 ...

  9. 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], ...

随机推荐

  1. [剑指Offer] 56.删除链表中重复的结点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  2. springBoot @Enable*注解的工作原理

    使用注解实现异步 RunnableDemo类 package com.boot.enable.bootenable; import org.springframework.scheduling.ann ...

  3. java map的键是唯一的 所有 用set类型存放

  4. BZOJ4832 抵制克苏恩(概率期望+动态规划)

    注意到A+B+C很小,容易想到设f[i][A][B][C]为第i次攻击后有A个血量为1.B个血量为2.C个血量为3的期望伤害,倒推暴力转移即可. #include<iostream> #i ...

  5. C# Socket服务端与客户端通信(包含大文件的断点传输)

    步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收 ...

  6. 【题解】51nod 1806 wangyurzee的树

    看这道题目懵逼了好久, \(m <= 17\) 一眼容斥,然而并没有想到怎么求出生成树的个数.然后灵光一闪——我不是学过一个叫Prüfer编码的东西嘛?!那就完美解决啦~ Prüfer编码就是将 ...

  7. 20165218 2017-2018-1《Java程序设计》第二周学习总结

    20165218 2017-2018-1 <Java程序设计>第2周学习总结 教材学习内容总结 Ch2 基本数据类型与数组 Unicode字符集之中所有都叫做"字母", ...

  8. GoLand安装配置

    目录 下载 安装 破解 运行 参考网址 GoLand配置 下载 1 下载路径:https://pan.baidu.com/s/1JJ-Oxx9NkEK-PrwcvLys7Q,提取码:o0e5 2 下载 ...

  9. mysql主从同步加读写分离

    首先主从同步,一旦建立,指定了用户,就不能更改了,否则会有错误.1063 Error 'Duplicate entry '%-test-' for key 'PRIMARY'' on query. D ...

  10. 2018 BAT最新《前端必考面试题》

    2018 BAT最新<前端必考面试题> 1.Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? (1). 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析器,用什么文 ...