csp-s模拟64trade,sum,building题解
题面:https://www.cnblogs.com/Juve/articles/11639755.html
trade:
70分sbdp,然后一直想优化,dp还是很好写的
正解是反悔贪心
维护一个小根堆,每到一天,设当前的值是a,堆中最小值是b,如果a>b,那么给ans加上a-b
然后堆中插入两个a,因为如果以后还有更优的一个c,那么a-b+b-c=a-c,相当与选了c
第二个a用于以后来卖a,和以后卖出的货物配对。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define int long long
using namespace std;
const int MAXN=1e5+;
int n,a[MAXN],ans=;
priority_queue<int>q;
signed main(){
scanf("%lld",&n);
for(int i=;i<=n;++i) scanf("%lld",&a[i]);
for(int i=;i<=n;++i){
if(!q.empty()){
int x=-q.top();
if(x<a[i]){
ans+=a[i]-x;
q.pop();
q.push(-a[i]);
}
}
q.push(-a[i]);
}
printf("%lld\n",ans);
return ;
}
sum:
n和m相等的测试点是为了启发我们得到正解
n都相等:$S_{n,m}=S_{n,m-1}+C_n^m$
m都相等:$S_{n,m}=2*S_{n-1,m}-C_{n-1}^m$
如果我们把n,m看成区间,那么区间扩展后的答案都可以O(1)转移
其实就是用上面的式子推$S_{n,m+1},S_{n,m-1},S_{n+1,m},S_{n-1,m}$
然后莫队即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
#define re register
using namespace std;
const int mod=1e9+;
const int MAXN=1e5+;
int id,q,n,m,ans=,maxx=,blo,l=,r=,res[MAXN];
int fac[MAXN],inv[MAXN];
inline int q_pow(re int a,re int b,re int p){
re int res=;
while(b){
if(b&) res=res*a%p;
a=a*a%p;
b>>=;
}
return res;
}
inline void get_C(re int N){
fac[]=fac[]=inv[]=;
for(re int i=;i<=N;++i) fac[i]=fac[i-]*i%mod;
inv[N]=q_pow(fac[N],mod-,mod);
for(re int i=N-;i>=;--i) inv[i]=inv[i+]*(i+)%mod;
}
inline int C(re int n,re int m){
if(m>n) return ;
if(m==n) return ;
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
struct node{
int l,r,id;
friend bool operator < (node a,node b){
return a.l/blo+==b.l/blo+?a.r<b.r:a.l<b.l;
}
}ask[MAXN];
signed main(){
scanf("%lld%lld",&id,&q);
get_C(1e5);
for(int i=;i<=q;++i){
scanf("%lld%lld",&ask[i].r,&ask[i].l);
ask[i].id=i;
maxx=max(ask[i].r,maxx);
}
blo=sqrt(maxx)+;
sort(ask+,ask+q+);
for(int i=;i<=q;++i){
while(l<ask[i].l) ans=(ans+C(r,++l))%mod;
while(l>ask[i].l) ans=(ans-C(r,l--)+mod)%mod;
while(r<ask[i].r) ans=(ans*%mod-C(r++,l)+mod)%mod;
while(r>ask[i].r) ans=(ans+C(--r,l))%mod*inv[]%mod;
res[ask[i].id]=ans;
}
for(int i=;i<=q;++i)
printf("%lld\n",res[i]);
return ;
}
building:
csp-s模拟64trade,sum,building题解的更多相关文章
- 【10.5NOIP普及模拟】sum
[10.5NOIP普及模拟]sum 文章目录 [10.5NOIP普及模拟]sum 题目描述 输入 输出 输入输出样例 样例输入 样例输出 解析 code 题目描述 小x有很多糖果,分成了 N 堆,排成 ...
- [NOIP10.4模拟赛]3.z题解--思维
题目链接: 咕咕 闲扯: 哈哈这道T3考场上又敲了5个namespace,300+行,有了前车之鉴还对拍过,本以为子任务分稳了 结果只有30分哈哈,明明用极限数据对拍过不知怎么回事最后数据又是读不全, ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- [NOIP10.6模拟赛]2.equation题解--DFS序+线段树
题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...
- [CSP-S模拟测试50]反思+题解
??大部分人都觉得T3是道不可做题去刚T1T2了,于是我就侥幸苟到了前面? 这场考试比较成功的就是快速水掉了T1T2的部分分,1h拿到88分起码为之后硬肝T3上了保险(赛后发现就算T3爆零也能rank ...
- 【9.14NOIP模拟pj】wtaxi 题解——搜索
[9.14NOIP模拟pj]wtaxi 题目简化 有K辆车,N个人,上车给D元,只有S分钟.上车后无论多少人都要给D元,原地等多少分钟就没了多少元.求最小花费的钱. 我的思路 毫无疑问,此题可以用搜索 ...
- 2020级cpp机考模拟题A卷-#题解2
这部分的题目都有一定难度,有兴趣的同学可以钻研一下. 特此感谢来自BDT20030 tql的支持. 2:素数的和-2 题意: 计算不大于m的素数之和.(多么容易理解的题目啊,对吧) 题解(有点复杂的 ...
- 2020级cpp机考模拟题A卷-#题解1
为了各位朋友的身心健康(不是),我们按照题目难度顺序来写题解. 第一次写题解,希望多点包容和鼓励(恬不知耻 1:谁先输出-4 题意: 输入3个整数,按从大到小的顺序输出,每两个数字间加一个空格. 题解 ...
- HDU 5929 Basic Data Structure(模拟 + 乱搞)题解
题意:给定一种二进制操作nand,为 0 nand 0 = 10 nand 1 = 1 1 nand 0 = 1 1 nand 1 = 0 现在要你模拟一个队列,实现PUSH x 往队头塞入x,POP ...
随机推荐
- Git 远程仓库分支管理
目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...
- 基于Netty的RPC架构学习笔记(五):netty线程模型源码分析(二)
文章目录 小技巧(如何看开源框架的源码) 源码解析 阅读源码技巧 打印查看 通过打断点调试 查看调用栈 小技巧(如何看开源框架的源码) 一断点 二打印 三看调用栈 四搜索 源码解析 //设置nioso ...
- 【JS】 +function(){} 作用
原文地址:https://www.jianshu.com/p/a2666014a280 瞎扯 在JS中,经常会遇到下面这种 代码, 到底 在 function 前面加一个 一元操作符, 有什么作用呢? ...
- 金三银四铜五铁六,Offer收到手软!
作者:鲁班大师 来源:cnblogs.com/zhuoqingsen/p/interview.html 文中的鲁班简称LB 据说,金三银四,截止今天为止面试黄金时间已经过去十之八九,而LB恰逢是这批面 ...
- C++数据类型之实型(浮点型)&科学计数法
实型(浮点型) **作用**:用于==表示小数== 浮点型变量分为两种: 1. 单精度float 2. 双精度double 两者的**区别**在于表示的有效数字范围不同. float类型数据,需在数据 ...
- DLL和OCX注册
在注册DLL或者OCX的方法应该使用regsvr32.exe,使用得多了一定会觉得在cmd运行中写一长串东西很烦人吧!这里向大家介绍一种麻烦一次方便一生的方法.这个方法只要右击你想注册或者反注册的DL ...
- 随笔记录 linux命令 2019.7.29
系统命令 一. type 查看命令是内部命令还是内部命令 help 帮助 man 在线帮助 cd 切换目录 pwd 查看所在路径 stat 查看文件详细信息 ls ...
- Twain协议部分翻译
转载:https://blog.csdn.net/a848691591/article/details/41006807 4.1 性能 应用程序与源进行性能协商的能力使人们能够控制TWAIN兼容的程序 ...
- yii2中使用定义在 params.php文件中的配置
yii2 使用 配置文件中在 params 的配置, 可以用 Yii::$app->params['key1']形式访问 参考 yii can't access Yii::$app->pa ...
- Laravel 迁移检查表是否存在
Schema::hasTable('TableName'); //检查表释放存在 Schema::hasColumn('tableName', 'columeName'); //检查表是否存在某个字段 ...