[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], ...
随机推荐
- 【bzoj2100】[Usaco2010 Dec]Apple Delivery 最短路
题目描述 Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course, she tr ...
- 【bzoj1738】[Usaco2005 mar]Ombrophobic Bovines 发抖的牛 Floyd+二分+网络流最大流
题目描述 FJ's cows really hate getting wet so much that the mere thought of getting caught in the rain m ...
- BZOJ5217:[Lydsy2017省队十连测]航海舰队——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5217 Byteasar 组建了一支舰队!他们现在正在海洋上航行着.海洋可以抽象成一张n×m 的网格 ...
- BZOJ3680 & 洛谷1337:[JSOI2004]平衡点/吊打XXX——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3680 https://www.luogu.org/problemnew/show/P1337 有n ...
- mmc驱动的读写过程解析
mmc io的读写从mmc_queue_thread()的获取queue里面的request开始. 先列出调用栈,看下大概的调用顺序, 下面的内容主要阐述这些函数如何工作. host->ops- ...
- HDOJ(HDU).1258 Sum It Up (DFS)
HDOJ(HDU).1258 Sum It Up (DFS) [从零开始DFS(6)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双 ...
- poj3177 BZOJ1718 Redundant Paths
Description: 有F个牧场,1<=F<=5000,现在一个牧群经常需要从一个牧场迁移到另一个牧场.奶牛们已经厌烦老是走同一条路,所以有必要再新修几条路,这样它们从一个牧场迁移到另 ...
- HDU1281: 棋盘游戏(二分图匹配)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- DOM动态操纵控件案例
点击登陆显示登陆框 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head ...
- [Spark经验一]Spark RDD计算使用的函数里尽量不要使用全局变量
比如RDD里的计算调用了别的组件类里的方法(比如hbase里的put方法),那么序列化时,会将该方法所属的对象的所有变量都序列化的,可能有些根本没有实现序列化导致直接报错.也就是spark的api没有 ...