前几天做了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. [socket编程] 一个服务器与多个客户端之间通信

    转自:http://blog.csdn.net/neicole/article/details/7539444 并加以改进 Server程序: // OneServerMain.cpp #includ ...

  2. IO复用、多进程和多线程三种并发编程模型

    I/O复用模型 I/O复用原理:让应用程序可以同时对多个I/O端口进行监控以判断其上的操作是否可以进行,达到时间复用的目的.在书上看到一个例子来解释I/O的原理,我觉得很形象,如果用监控来自10根不同 ...

  3. 【Python】python 调用c语言函数

    虽然python是万能的,但是对于某些特殊功能,需要c语言才能完成.这样,就需要用python来调用c的代码了具体流程:c编写相关函数 ,编译成库然后在python中加载这些库,指定调用函数.这些函数 ...

  4. 【bzoj4903/uoj300】[CTSC2017]吉夫特 数论+状压dp

    题目描述 给出一个长度为 $n$ 的序列,求所有长度大于等于2的子序列个数,满足:对于子序列中任意两个相邻的数 $a$ 和 $b$ ($a$ 在 $b$ 前面),${a\choose b}\mod 2 ...

  5. hdu 1115 Lifting the Stone (数学几何)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. BZOJ3771:Triple——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3771 大意:给n把不同价值的斧子,从中选一把/两把/三把,所构成的每种价值和的可能情况有多少. 生 ...

  7. 使用javaScript和JQuery制作经典面试题:光棒效果

    使用javaScript与jQuery添加CSS样式的区别和步骤 使用javaScript制作光棒效果 --首先是javaScript <script> $(function () { v ...

  8. 【状压DP】【UVA11825】 Hackers' Crackdown

    传送门 Description 你是一个hacker,侵入了一个有着n台计算机(编号为1.2.3....n)的网络.一共有n种服务,每台计算机都运行着所有服务.对于每台计算机,你都可以选择一项服务,终 ...

  9. Codeforces Round #342 (Div. 2) B

    B. War of the Corporations time limit per test 1 second memory limit per test 256 megabytes input st ...

  10. Transformation 线段树好题 好题 (独立写出来对线段树不容易)

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others)T ...