[NOIP2011]刷水
前几天做了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]刷水的更多相关文章
- [洛谷U22157]刷水题(数位dp)(hash)
题目背景 做正经题是不可能做正经题的,这辈子都不可能做正经题的,毒瘤题又不会做毒瘤题,就是水题这种东西,才维持了蒟蒻的信心: 题目描述 这里有N+1 道水题,编号分别为0 ~N+1 ,每道水题都有它自 ...
- bzoj刷水
因为最近的生活太颓废总是不做题而被老师D了一番, 所以今天晚上到bzoj上去刷了几道水题..... bzoj 4320: ShangHai2006 Homework 题目大意 维护一个支持两个操作 ...
- [暑假的bzoj刷水记录]
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊 堆一起算了 隔一段更新一下. 7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...
- 【刷水】之USACO2008资格赛(Bzoj1599-1603)
做之前真是没想到有这么水>.< 但做了还是发上来吧>.< 就当是刷一刷AC量&1A率什么的>.< Bzoj1599: [Usaco2008 Oct]笨重的石 ...
- Luogu USACO Training 刷水记录
开个坑记录一下刷USACO的Training的记录 可能会随时弃坑 只有代码和做法简述 可能没有做法简述 [USACO1.1]你的飞碟在这儿Your Ride Is He… 模拟,细节已忘 #incl ...
- Codeforces 刷水记录
Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...
- bzoj 刷水
bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...
- USACO 刷水
BZOJ 1666 水.. BZOJ 1579 分层图最短路. BZOJ 1782 从一开始若某头牛停在U,那么U的子树的时间都会加一用BIT维护DFS序就行了 BZOJ 1572 贪心+堆 排序后查 ...
- 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], ...
随机推荐
- 每天网络半小时(MAC数据包在哪里合并的)
ip_deliver_local函数中函数中完成合并 听过netfilter框架中也会 因为net_filter框架需要感知到第四层的信息,但是单个数据包是无法感知到这些信息的,所以需要在netfil ...
- VM新安装centos7无法连接网络的问题
https://blog.csdn.net/u012110719/article/details/42264601 https://blog.csdn.net/kexiaoling/article/d ...
- [Leetcode] 2.Add Two Numbers(List To Long,模拟)
本题题意是指将两个数倒序存储在链表中,再将两数之和同样存储在链表中输出. 我最开始的思路是将每一位相加,再考虑是否进位,但这时就需要考虑一些情况,比较麻烦. 于是我决定采取另一种在网上新学到的方法:这 ...
- Sparse autoencoder implementation 稀疏自编码器实现
任务:在这个问题中,你将实现稀疏自编码器算法,并且展示它怎么发现边缘是自然图像的一个好的表示. 在文件 sparseae_exercise.zip中,我们已经提供了一些Matlab中的初始代码,你应该 ...
- Andorid API Package ---> android.app
包名: android.app Added in API level 1 URL:http://developer. ...
- BZOJ2002:[HNOI2010]弹飞绵羊——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2002 https://www.luogu.org/problemnew/show/P3203 某天, ...
- 项目管理---git----快速使用git笔记(三)------coding.net注册和新建项目(远程仓库)
我们在第一章已经了解了github和coding.net的区别: github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开. codin ...
- React获取组件实例
1. 直接new Component() 组件本身也是class,可以new,这样的组件实例意义不大 componentInstance = new Component(); 2. ReactDOM. ...
- ubuntu16.04命令行模式黑屏解决办法
ubuntu16.04命令行模式黑屏解决办法 问题描述 在ubuntu上装Nvidia的显卡驱动,需要关闭图形界面才能安装驱动,但是,出现如下情况: 使用“ctrl+alt+F1”命令进入命令行界面是 ...
- ZOJ1586:QS Network (最小生成树)
QS Network 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1586 Description: In th ...