T1

题目大意:求最小的 \(n\in[0,lim]\) 使得区间 \([L,R]\) 在线段树建树 \(build(0,n)\) 的区间内

考场时想到了正解,结果推式子退错了。。。

其实就是从下往上搜索,可以转到父节点为 \([l,2(l-1)-r],[l,2(l-1)-r+1],[r,2r-l],[r,2r-l+1]\)

如果 \(l=0\) 那么 \(r\) 就是当前答案

但是这样会时超,原因:如果无法将 \(l\) 缩小,那么 \(r\) 会一直扩大到 \(lim\) 才返回,会浪费许多时间

其实如果 \(2l<r\) 就是不行的

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int inf=2100000000;
  4. int ql,qr,n,T,ans;
  5. void fnd(int l,int r) {
  6. if(l<0||r>n||r<0||r>ans)return;
  7. if(!l) { ans=r; return; }
  8. if(2*l<r)return;
  9. fnd(2*l-r-2,r);
  10. fnd(2*l-r-1,r);
  11. fnd(l,r*2-l);
  12. fnd(l,r*2+1-l);
  13. }
  14. int main() {
  15. scanf("%d",&T);
  16. while(T--) {
  17. scanf("%d%d%d",&ql,&qr,&n);
  18. ans=inf;
  19. if(ql^qr)fnd(ql,qr);
  20. else if(qr<=n)ans=qr;
  21. printf("%d\n",ans<inf?ans:-1);
  22. }
  23. }

希望以后式子不要退错

T2

题目大意: \(n\le 18\) 个桶,一次只能挑两个桶。每次有话费,问最小话费

状压 dp 板子。

T3

题目大意:给你一个括号串,定义若 \(A,B\) 是合法串,则 \(AB\) 和 \((A)\) 都是合法串。

​ 设经过 \(i\) 的合法串个数 \(ans_i\) ,求 \(\sum_{i=1}^n i\times ans_i\mod 100000007\)

将一对括号合成一块,记 \(f_i,g_i\) 为第 \(i\) 个括号在左边、右边同级括号的个数

则第 \(i\) 块的答案为 \(f_i*g_i\)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const int N=1000005,P=1000000007;
  5. int T,n,top,st[N],fl[N],nxt[N],lst[N],f[N],g[N]; char x[N]; LL ans[N],res;
  6. inline void add(int l,int r,LL v) { ans[l]+=v,ans[r+1]-=v; }
  7. int main() {
  8. scanf("%d",&T);
  9. while(T--) {
  10. scanf("%s",x+1);
  11. n=strlen(x+1);
  12. top=res=0,fl[0]=1;
  13. memset(f,0,sizeof(f));
  14. memset(g,0,sizeof(g));
  15. memset(nxt,0,sizeof(nxt));
  16. memset(lst,0,sizeof(lst));
  17. memset(ans,0,sizeof(ans));
  18. for(int i=1;i<=n;i++)
  19. if(x[i]=='(')st[++top]=i,fl[top]=0;
  20. else {
  21. if(fl[top])++top,st[top]=i,fl[top]=1;
  22. else lst[i]=st[top],nxt[st[top]]=i,--top;
  23. }
  24. for(int i=1;i<=n;i++)f[i]=lst[i]?f[lst[i]-1]+1:0;
  25. for(int i=n;i>=1;i--)g[i]=nxt[i]?g[nxt[i]+1]+1:0;
  26. for(int i=1;i<=n;i++)if(lst[i])add(lst[i],i,1LL*f[i]*g[lst[i]]);
  27. for(int i=1;i<=n;i++)ans[i]+=ans[i-1],res+=1LL*i*ans[i]%P;
  28. printf("%lld\n",res);
  29. }
  30. }

T4

题目大意: \(A\) 数组降序,\(B_i=\sum_{j=i}^n A_i\) ,现在要从 \((n,1)\) 走到 \((1,1)\),每次可以从 \((x,y)\) 走到 \((x+1,y-1)\) 或 \((x,\lfloor\dfrac{y+1}{2}\rfloor)\)

​ 若选择后者,花费为 \(B_x\)。问最小代价

因为数组有序,所以在哈夫曼树中深度单调不减。考虑 \(dp\) 构建哈夫曼树

设 \(f_{i,j}\) 为放入下标所有下标比 \(i\) 小的点,剩下 \(j\) 个叶子点

  1. 所有叶子节点扩展出两个后继,剩下所有节点深度加一,代价 \(\sum_{k=i+1}^nA_k\) 状态是 \(f_{2i,j}\)
  2. 把第 \(i\) 个数放到一个叶子上,无代价,状态是 \(f_{i+1,j-1}\)

最后答案是 \(f_{n+1,k}\)

把以上过程倒过来,就是模拟走路,所以直接用贪心构建哈夫曼树。 \(O(n\log n)\)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const int N=100005;
  5. int T,n,h[N],tot;
  6. LL ans;
  7. inline void ins(int vl) {
  8. register int x=++tot,fa=x>>1;
  9. while(fa) {
  10. if(vl<h[fa]) h[x]=h[fa],x=fa,fa>>=1;
  11. else break;
  12. } h[x]=vl;
  13. }
  14. inline void pop() {
  15. register int x=1,sn=2,vl=h[tot--];
  16. while(sn<=tot) {
  17. if(sn<tot&h[sn|1]<h[sn]) sn|=1;
  18. if(h[sn]<vl) h[x]=h[sn],x=sn,sn<<=1;
  19. else break;
  20. } h[x]=vl;
  21. }
  22. int main() {
  23. scanf("%d",&T);
  24. while(T--) {
  25. scanf("%d",&n),tot=0;
  26. for(int i=1,x;i<=n;i++)
  27. scanf("%d",&x),ins(x);
  28. ans=0;
  29. for(int i=1,f,g;i<n;i++) {
  30. f=h[1],pop(),g=h[1],pop();
  31. ans+=1LL*f+1LL*g,ins(f+g);
  32. }
  33. printf("%lld\n",ans);
  34. }
  35. }

2021.04.03【NOIP提高B组】模拟 总结的更多相关文章

  1. 5820. 【NOIP提高A组模拟2018.8.16】 非法输入(模拟,字符串)

    5820. [NOIP提高A组模拟2018.8.16] 非法输入 (File IO): input:aplusb.in output:aplusb.out Time Limits: 1000 ms   ...

  2. JZOJ 5818. 【NOIP提高A组模拟2018.8.15】 做运动

    5818. [NOIP提高A组模拟2018.8.15] 做运动 (File IO): input:running.in output:running.out Time Limits: 2000 ms  ...

  3. JZOJ 5812. 【NOIP提高A组模拟2018.8.14】 区间

    5812. [NOIP提高A组模拟2018.8.14] 区间 (File IO): input:range.in output:range.out Time Limits: 1000 ms  Memo ...

  4. 2021.05.04【NOIP提高B组】模拟 总结

    T1 题目大意, \(S_{i,j}=\sum_{k=i}^j a_k\) ,求 \(ans=\min\{ S_{i,j}\mod P|S_{i,j}\mod P\ge K \}\) 其中 \(i\l ...

  5. [JZOJ5817] 【NOIP提高A组模拟2018.8.15】 抄代码

    Description J 君是机房的红太阳,每次模拟她总是 AK 虐场.然而在 NOIP2117 中,居然出现了另一位 AK 的选手 C 君! 这引起了组委会的怀疑,组委会认为 C 君有抄袭 J 君 ...

  6. [JZOJ5818] 【NOIP提高A组模拟2018.8.15】 做运动

    Description 一天,Y 君在测量体重的时候惊讶的发现,由于常年坐在电脑前认真学习,她的体重有了突 飞猛进的增长. 幸好 Y 君现在退役了,她有大量的时间来做运动,她决定每天从教学楼跑到食堂来 ...

  7. 【NOIP提高A组模拟2018.8.14】 区间

    区间加:差分数组修改 O(n)扫描,负数位置单调不减 #include<iostream> #include<cstring> #include<cstdio> # ...

  8. [jzoj 5782]【NOIP提高A组模拟2018.8.8】 城市猎人 (并查集按秩合并+复杂度分析)

    传送门 Description 有n个城市,标号为1到n,修建道路花费m天,第i天时,若gcd(a,b)=m-i+1,则标号为a的城市和标号为b的城市会建好一条直接相连的道路,有多次询问,每次询问某两 ...

  9. [jzoj 5781]【NOIP提高A组模拟2018.8.8】秘密通道 (最短路)

    传送门 Description 有一副nm的地图,有nm块地,每块是下列四种中的一种: 墙:用#表示,墙有4个面,分别是前面,后面,左面,右面. 起点:用C表示,为主角的起点,是一片空地. 终点:用F ...

  10. [jzoj 5778]【NOIP提高A组模拟2018.8.8】没有硝烟的战争 (博弈论+dp)

    传送门 Description 被污染的灰灰草原上有羊和狼.有N只动物围成一圈,每只动物是羊或狼. 该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x ...

随机推荐

  1. String和int、long、double等基本数据类型的转换

    学习目标: 掌握Java的基本数据类型与String的转换 学习内容: 1.转化规则 String 转 基本数据类型 基本数据类型 变量 = 包装类.Parse基本数据类型(String); // c ...

  2. js 生成 pdf 文件

    话不多说好吧, 直接上demo图: 直接上代码好吧:(要引入的两个js  链接我放最后) <!DOCTYPE html> <html> <head> <met ...

  3. 2020西湖论剑一道web题[网盘]

    题目: 一个网盘系统 图片: 解题手法 上传".htaccess"文件,改成可以执行lua脚本 内容为: SetHandler lua-script 编写lua脚本,而后进行get ...

  4. Servlet学习记录

    个人认为servlet属于一种控制程序,可以处理浏览器的请求并做出对应的回应.我们经常使用的是让一个类去继承HttpServlet,然后在doget或者dopost里面写东西. 目前我个人常在doge ...

  5. Thinkphp设计模式和执行流程

    ThinkPHP设计模式 单例模式:数据库连接DB工厂模式:比如Db.class.php中的factory()方法适配器模式:驱动类,数据库观察者模式:Hook类 注册树模式:绑定容器外观模式:fac ...

  6. html显示与隐藏元素的几种方式

    html显示与隐藏元素的几种方式 1.display none : 无 隐藏元素 block : 显示 转换为块级元素   不占位:当隐藏的时候元素就完全没有了.不能看见和操作该元素. 优点:为其他元 ...

  7. 玩转LiteOS组件:玩转Librws

    摘要:Librws是一个跨平台的websocket客户端,使用C语言编写. 本文分享自华为云社区<LiteOS组件尝鲜-玩转Librws>,作者: W922 . 本期小编为大家带来Lite ...

  8. 论文解读(CGC)《CGC: Contrastive Graph Clustering for Community Detection and Tracking》

    论文信息 论文标题:CGC: Contrastive Graph Clustering for Community Detection and Tracking论文作者:Namyong Park, R ...

  9. 为什么HttpContextAccessor要这么设计?

    前言 周五在群里面有小伙伴问,ASP.NET Core这个HttpContextAccessor为什么改成了这个样子? 在印象中,这已经是第三次遇到有小伙伴问这个问题了,特意来写一篇记录,来回答一下这 ...

  10. lab_0 清华大学ucore实验环境配置详细步骤!(小白入)

    实验步骤 1.下载项目 从github上 的https://github.com/kiukotsu/ucore下载 ucore lab实验: git clone https://github.com/ ...