HZOI20190822模拟29题解
题面:https://www.cnblogs.com/Juve/articles/11396238.html
下面开始一句话题解:
A:爬山:
二分答案,check即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
const int mod=1e9+7;
int n,d,a,b,l,r,mid,ans;
bool check(int m){
int p=abs(m-a),q=abs(m-b),x,y;
if(p%d==0) x=p/d;
else x=p/d+1;
if(q%d==0) y=q/d;
else y=q/d+1;
if(x+y<=n-1) return 1;
return 0;
}
signed main(){
scanf("%lld%lld%lld%lld",&n,&d,&a,&b);
if(d==0){
printf("%lld\n",max(a,b));
return 0;
}
l=min(a,b)-n*d,r=max(a,b)+n*d;
ans=max(a,b);
while(l<=r){
mid=(l+r)>>1;
if(check(mid))
ans=max(ans,mid),l=mid+1;
else r=mid-1;
}
printf("%lld\n",ans);
return 0;
}
B:学数数:
离散化,单调栈,前缀和
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#define int long long
using namespace std;
const int MAXN=1e5+5;
int n,q,a[MAXN],b[MAXN],k,cnt,sum[MAXN];
int sta[MAXN],top=0,l[MAXN],r[MAXN];
char op[5];
signed main(){
scanf("%lld%lld",&n,&q);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
memcpy(b,a,sizeof(a));
sort(b+1,b+n+1);
cnt=unique(b+1,b+n+1)-b-1;
for(int i=1;i<=n;i++){
while(top!=0&&a[sta[top]]<=a[i]) top--;
if(top==0) l[i]=1;
else l[i]=sta[top]+1;
sta[++top]=i;
}
top=0;
for(int i=n;i>=1;i--){
while(top!=0&&a[sta[top]]<a[i]) top--;
if(top==0) r[i]=n;
else r[i]=sta[top]-1;
sta[++top]=i;
}
for(int i=1;i<=n;i++){
int pos=lower_bound(b+1,b+cnt+1,a[i])-b;
sum[pos]+=(i-l[i]+1)*(r[i]-i+1);
}
for(int i=2;i<=n;i++) sum[i]+=sum[i-1];
while(q--){
scanf("%s%lld",op,&k);
if(op[0]=='='){
int x=upper_bound(b+1,b+cnt+1,k)-b-1;
int y=lower_bound(b+1,b+cnt+1,k)-b;
if(x==y) printf("%lld\n",sum[x]-sum[x-1]);
else puts("0");
}else if(op[0]=='<'){
int x=lower_bound(b+1,b+cnt+1,k)-b-1;
printf("%lld\n",sum[x]);
}else{
int x=upper_bound(b+1,b+cnt+1,k)-b-1;
printf("%lld\n",sum[cnt]-sum[x]);
}
}
return 0;
}
C:七十和十七
推一个公式即可,加上快速幂
#include<cstdio>
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN=1e5+5;
const int mod=1e9+7;
int f[MAXN],n,bit[MAXN];
int q_pow(int a,int b,int p){
int res=1;
while(b){
if(b&1) res=1ll*res*a%p;
a=1ll*a*a%p;
b>>=1;
}
return res%mod;
}
signed main(){
scanf("%lld",&n);
bit[0]=1;
for(int i=1;i<=n;i++) bit[i]=(bit[i-1]*2)%mod;
for(int i=1;i<=n;i++)
f[i]=(f[i-1]+(bit[i-1]-1)%mod*q_pow(i,mod-2,mod)%mod)%mod;
printf("%lld\n",f[n]);
return 0;
}
HZOI20190822模拟29题解的更多相关文章
- [CQOI2012]模拟工厂 题解(搜索+贪心)
[CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...
- 「题解」NOIP模拟测试题解乱写I(29-31)
NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...
- noip模拟29[简单的板子题](虽然我不会)
\(noip模拟29\;solutions\) 这次考试给我最大的伤害,让我意识到了差距 这场考试可以说是非常的简单,就是简单到,看两眼,打个表就有结果了 但是呢?我考得非常的完蛋,只有30pts 据 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- HGOI NOIP模拟4 题解
NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...
- 10.8 wtx模拟题题解
填坑 orz w_x_c_q w_x_c_q的模拟赛(150pts,炸了) money 题目背景: 王小呆又陷入自己的梦里.(活在梦里...) 题目描述: 王小呆是一个有梦想的小菜鸡,那就是赚好多好多 ...
- [NOIP模拟13]题解
A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
随机推荐
- NOI2019网络同步赛总结
先说说分数:\(100+20+0+100+0+0=220\) 我果然还是个大蒟蒻-- Day1 比赛之前还在回顾着<灵笼>,时间一到就立刻进入比赛. 快速地浏览了一遍题目,然后开始刚T1. ...
- python2与python3编码
#coding:utf8#一#1.在python2中,默认以ASCII编码chcp 936import sysprint sys.getdefaultencoding()# ascii#str:byt ...
- selenium python bindings 项目结构总结
一个合理的文档结构在import的过程中会避免很多错误,踩完坑来记录. webtests/ framework.py webdriver.py test_file.py module/ __init_ ...
- JAVA 文件的上传下载
一.上传文件 1.使用 transferTo 上传 @ResponseBody @RequestMapping(value = "/file/upload") public Res ...
- day22_3-json模块
# 参考资料:# python模块(转自Yuan先生) - 狂奔__蜗牛 - 博客园# https://www.cnblogs.com/guojintao/articles/9070485.html# ...
- PAT甲级——A1132 Cut Integer
Cutting an integer means to cut a K digits lone integer Z into two integers of (K/2) digits long int ...
- PAT甲级——A1114 Family Property【25】
This time, you are supposed to help us collect the data for family-owned property. Given each person ...
- 19.SimLogin_case01
什么是模拟登录? 要抓取的信息,只有在登录之后才能查看.这种情况下,就需要爬虫做模拟登录,绕过登录页. cookies和session的区别: cookie数据存放在客户的浏览器上,session数据 ...
- 初识OpenCV-Python - 002: Drawing functions
使用OpenCV-Python 的画图函数画图. 本次的图形函数有: cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.put ...
- C++命令行多文件编译(g++)
在刚开始学Java时用命令行进行编译代码.而C++一直在用IDE, 这次尝试下命令行编译.vs下也可以用cl.exe.link.exe等命令来进行编译 但这次是通过安装MinGW来学习命令编译,主要用 ...