平时二十三测

 

 

 

 

 

 

昨日AK, 今日垫底, 我简直是在坐过山车;

以后记住有返回值的函数一定要写返回值,不然全部输出0

题解:

第一题:全是-1, 是2^(n-1)-1,不会证,样例很明显;

对于有X个跟班的人,设它的期望函数f(X)=2^X-1;

利用期望的线性性,E(A)+E(B)=E(C),则E(B)=E(C)-E(A);

E(C)=初始都是-1的局面到之剩一个人;

E(A)=当前到只剩一个人;

求E(B)就直接用打表的规律;整个局面的期望函数值为:所有人期望函数值之和。

 

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int M = 1e6 + 5;
int cnt[M], bin[M];
const int mod = 1e9 + 7;int main(){freopen("game.in","r",stdin);freopen("game.out","w",stdout);int n, u;scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d", &u);if(u != -1) cnt[u]++;}bin[0] = 1;for(int i = 1; i <= n; i++) bin[i] = (bin[i-1]<<1) % mod;int ans = bin[n-1] - 1;for(int i = 1; i <= n; i++)ans = (ans - (bin[cnt[i]]-1) + mod) % mod;printf("%d\n", ans);
}
View Code

 

第二题:dp[i][0/1][0/1] 一维表示考虑到第i个数,二维表示前一个数是否与当前一样,三维表示是否已经合法,

转移就像扫雷一样用中间的转移;

 

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int M = 1e6 + 10;
const ll mod = 1e9 + 7;
#define RG register
ll dp[M][2][2];int main(){freopen("flower.in","r",stdin);freopen("flower.out","w",stdout);//int cc=clock();int T;scanf("%d", &T);while(T--){int L, S;scanf("%d%d", &L, &S);memset(dp, 0, sizeof(dp));dp[1][0][0] = S;int u = 0;for(RG int i = 1; i < L; i++){dp[i+1][0][0] = (dp[i+1][0][0] + dp[i][0][0]*(S-1)%mod)%mod;dp[i+1][1][0] = (dp[i+1][1][0] + dp[i][0][0])%mod;dp[i+1][0][1] = (dp[i+1][0][1] + dp[i][0][1]*(S-1)%mod)%mod;dp[i+1][1][1] = (dp[i+1][1][1] + dp[i][0][1])%mod;dp[i+1][0][0] = (dp[i+1][0][0] + dp[i][1][0]*(S-1)%mod)%mod;dp[i+1][1][1] = (dp[i+1][1][1] + dp[i][1][0])%mod;dp[i+1][0][1] = (dp[i+1][0][1] + dp[i][1][1]*(S-1)%mod)%mod;}ll ans = (dp[L][0][1] + dp[L][1][1]) % mod;printf("%lld\n",ans);}//int tt=clock();//fprintf(stderr, "%d\n", tt-cc);
}
View Code

 

 

第三题:利用扫描线算法,首先将所有坐标离散化,然后按照正方向枚举x坐标,每次求出当前这个横坐标能看见的某个矩形,将其标记并更新答案。直到这个横坐标所有能看见的矩形均被标号为止。

并且,将每个颜色的权值设为其操作的编号 将每个矩形视作两条线段: 矩形的左侧视为加入当前矩形,右侧+1的位置视为删去当前矩形。用线段树+set维护。对于每个线段树上的节点,存储两个值与一个set,分别设为maxv,minv,S

maxv表示:当前区间内能够看见的,编号最大的未被
标记的颜色。
 minv表示:当前区间内能看见的最小的颜色。(用于更
新maxv)
 S存储完全覆盖了当前区间的所有颜色。
 接下来是更新maxv和minv

理解起来很容易,maxv的更新就不用说了,对minv的更新:里层的min就是左右区间内能看见颜色的最小值,而外层的max是因为:当前区间内都被这个值覆盖,所以取max。

然后,若maxv<minv,说明当前maxv这个颜色一定被其他已更新颜色覆盖掉了,因为它连当前区间内能看见的最小的值都不够。所以将maxv修正为-1,即记为当前区间不含可以被更新的颜色。

每更新一次,继续判断根节点的maxv是否为-1,若不是则继续标记,若是则停止。

O(nlog^2)

 

#include<bits/stdc++.h>
using namespace std;const int M = 6e5 + 5;int tox, toy, dx[M], dy[M], ls[M], rs[M], N;
bool used[M];struct query{int l, r, del, id, x;bool operator < (const query &rhs) const{if(x == rhs.x) return l < rhs.l;return x < rhs.x;}
}blo[M];void pushx(int x){dx[++tox] = x; dx[++tox] = x-1; dx[++tox] = x+1;
}
void pushy(int y){dy[++toy] = y; dy[++toy] = y-1; dy[++toy] = y+1;
}struct Node{int mx, mi;set <int> s;Node *ls, *rs;void up(){if(ls==NULL && rs==NULL){if(s.empty()){mi = mx = -1;return ;}mi = mx = *s.rbegin();if(used[mx]) mx = -1;}else {mi = min(ls->mi, rs->mi);mx = max(ls->mx, rs->mx);if(s.empty()) return ;int ins = *s.rbegin();mi = max(mi, ins);if(mx < ins){if(used[ins]) mx = -1;else {if(mi <= ins) mx = ins;else mx = -1;}}}}
}pool[M << 2], *tail = pool, *root;Node *build(int lf = 1, int rg = N){Node *nd = ++tail;nd->mi = nd->mx = -1;if(lf == rg) ;else {int mid = (lf + rg) >> 1;nd->ls = build(lf, mid);nd->rs = build(mid + 1, rg);}return nd;
}
#define Ls nd->ls, lf, mid
#define Rs nd->rs, mid+1, rg
void add(int L, int R, int opt, int d, Node *nd = root, int lf = 1, int rg = N){if(L <= lf && rg <= R){if(opt == 1) nd->s.insert(d);else nd->s.erase(d);nd->up();return ;}int mid = (lf + rg) >> 1;if(L <= mid) add(L, R, opt, d, Ls);if(R > mid) add(L, R, opt, d, Rs);nd->up();return ;
}void Update(int L, int R, Node *nd = root, int lf = 1, int rg = N){if(L <= lf && rg <= R){nd->up();return ;}int mid = (lf + rg) >> 1;if(L <= mid) Update(L, R, Ls);if(R > mid) Update(L, R, Rs);nd->up();return ;
}int read(){int x = 0; int f = 1; char c = getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c<='9'&&c>='0'){x=x*10+c-'0';c=getchar();}return x*=f;
}int main(){freopen("excel.in","r",stdin);freopen("excel.out","w",stdout);int n = read(), cnt = 0;for(int i = 1; i <= n; i++){int xl = read(), yl = read(), xr = read(), yr = read();xr--, yr--;blo[++cnt] = (query) {yl, yr, 1, i, xl};blo[++cnt] = (query) {yl, yr, -1, i, xr+1};pushx(xl); pushx(xr+1);pushy(yl); pushy(yr);}sort(dx + 1, dx + 1 + tox);sort(dy + 1, dy + 1 + toy);tox = unique(dx + 1, dx + 1 + tox) - dx - 1;toy = unique(dy + 1, dy + 1 + toy) - dy - 1;for(int i = 1; i <= cnt; i++){blo[i].x = lower_bound(dx + 1, dx + 1 + tox, blo[i].x) - dx;blo[i].l = lower_bound(dy + 1, dy + 1 + toy, blo[i].l) - dy;blo[i].r = lower_bound(dy + 1, dy + 1 + toy, blo[i].r) - dy;ls[blo[i].id] = blo[i].l, rs[blo[i].id] = blo[i].r;}sort(blo + 1, blo + 1 + cnt);int lst = 1;N = toy;root = build();for(int i = 1; i <= tox; i++){while(lst <= cnt && blo[lst].x == i){add(blo[lst].l, blo[lst].r, blo[lst].del, blo[lst].id);lst++;}while(root->mx != -1){int x = root->mx;used[x] = 1;Update(ls[x], rs[x]);}}int ans = 0;for(int i = 1; i <= n; i++) if(used[i]) ans++;printf("%d\n", ans+1);}
View Code

 

转载于:https://www.cnblogs.com/EdSheeran/p/9901814.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jlink怎么调试linux程序_纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)

一直想摆脱windows环境&#xff0c;在纯linux下进行arm裸机开发&#xff0c;但是由于一直不知道JLink如何在linux下运行和配置&#xff0c;一直无法进行下去。以前都是windowsAXD调试。包括本人用的FL2440开发板和JLink调试器也没有提供在linux调试的文档。前些天由于想研究下U…

CSS3 实用技巧:制作三角形

您可能感兴趣的相关文章 2012年最酷的25个 CSS3 学习教程35个让人惊讶的 CSS3 动画效果演示推荐12个漂亮的 CSS3 按钮实现方案20个非常绚丽的 CSS3 特性应用演示24款非常实用的 CSS3 工具终极收藏 /* create an arrow that points up */div.arrow-up {width:0px; height:0px; b…

JArchitect v4.0发布

JArchitect v4.0 Released宣布了JArchitect版本4.0 。 JArchitect可以帮助Java开发人员管理复杂的Java代码库。 通过比较不同版本的代码&#xff0c;您可以轻松分析代码结构&#xff0c;指定设计规则&#xff0c;进行有效的代码审查并掌握演变。 在2012年9月发布的先前版本v3.…

MySql 踩坑小记

MySql 踩坑一时爽&#xff0c;一直踩啊一直爽...以下记录刚踩的三个坑&#xff0c;emmm... 首先是远程机子上创建表错误(踩第一个坑)&#xff0c;于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑)&#xff0c;最后在第二个坑里踩到了第三个坑。Sequelize 创建表报错针对…

全国计算机一级知识题及答案解析,全国计算机等级考试一级试题库大全完整版附参考答案...

21&#xff0e;Windows 操作系统是一个( )。AA、单用户多任务操作系统 B、单用户单任务操作系统 C、多用户单任务操作系统 D、多用户多任务操作系统22&#xff0e;设Windows桌面上已经有某应用程序的图标&#xff0c;要运行该程序&#xff0c;可以( )。CA、用鼠标左键单击该图标…

20181103_C#线程初探, BeginInvoke_EndInvoke

在C#中学习多线程之前, 必须要深刻的理解委托; 基本上所有的多线程都在靠委托来完成 一. 进程和线程: a) 进程和线程都是计算机的概念, 跟程序语言没有任何关系 b) 进程和线程都属于计算机操作系统自身控制和调度, 程序语言只有使用的份, 最终的控制权还是得操作系统说了算, …

core和node开发小程序_node+微信小程序实现商城案例

说明&#xff1a;1、本人也是初次完整使用小程序&#xff0c;如有BUG或者不足的地方请在Issues或者本文下方留言&#xff0c;作者会尽快修改&#xff0c;谢谢&#xff01;2、本项目适合初学者或者准备自学小程序的伙伴小程序功能&#xff1a;|-- images // 公共图片|-- lib // …

【完成发布】Lazy Line Painter – 非常有趣的 jQuery 路径动画插件

Lazy Line Painter 是基于 Raphal&#xff08;一个用于在网页中绘制矢量图形的 Javascript 库&#xff09;的 jQuery 路径动画插件&#xff0c;能够把线条图案转换为吸引眼球的路径动画模式。 您可能感兴趣的相关文章 60款非常酷的 jQuery 幻灯片演示和下载15个款优秀的 jQuer…

Collections.sort的使用

需要对象是可比较的。 import java.util.*;public class Test {public static void main(String[] args) {ArrayList<Fruit> list new ArrayList<>();list.add(new Fruit(4));list.add(new Fruit(1));list.add(new Fruit(7));Collections.sort(list);System.out.p…

Java 8类型注释

Lambda表达式是迄今为止Java 8讨论最多和最受促进的功能。虽然我同意Lambda是一个很大的改进&#xff0c;但我认为其他一些Java 8功能由于Lambda的炒作而有所欠缺。 在这篇文章中&#xff0c;我想展示另一个来自Java 8的出色特性的示例&#xff1a;Type Annotations。 类型注释…

计算机应用基础知识点提纲,计算机应用基础复习提纲

一、单选题1&#xff0e;一个完整的计算机系统包括( D )A&#xff0e;计算机及其外部设备 B&#xff0e;主机、键盘、显示器C&#xff0e;系统软件和应用软件 D&#xff0e;硬件系统和软件系统2&#xff0e; 下列设备中&#xff0c;只属于输出设备的是( A )。A&#xff0e;显示…

python构建矩阵 x y_生成Python函数一半没问题,当前最正统的代码生成是什么样的?...

机器之心原创参与&#xff1a;思源大家都说深度神经网络能力很强&#xff0c;那么从函数注释生成函数代码&#xff0c;以及从函数代码总结函数注释这种最基础的代码任务到底能不能行&#xff1f;像 Python、Java 这样的通用高级语言&#xff0c;到底在代码生成上能达到什么水平…

福大软工 · 第七次作业 - 需求分析报告(404 Note Found队)

目录 组队后的团队项目的整体计划安排项目logo及思维导图项目logo思维导图产品思维导图产品思维导图-引导产品思维导图-后端数据处理、存储产品思维导图-短信识别产品思维导图-智能分析产品思维导图-壁纸生成产品思维导图-注册界面产品思维导图-登录界面产品思维导图-使用1产品…

Web设计前沿:CSS3 在网页设计中的20个惊艳应用

作为 CSS 的下一个版本&#xff0c;CSS3 给 Web 开发带来了革命性的影响。例如&#xff0c;以前很多需要图片呈现的界面效果&#xff0c;现在使用 CSS3 结合 HTML 就可以实现&#xff0c;CSS3 甚至还可以实现需要 JavaScript 才能实现的复杂动画效果。下面向大家展示 CSS3 圆角…

leetcode 796. 旋转字符串(Rotate String)

目录 题目描述&#xff1a;示例 1:示例 2:解法&#xff1a;题目描述&#xff1a; 给定两个字符串, A 和 B。 A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A abcde&#xff0c;在移动一次之后结果就是bcdea 。如果在若干次旋转操作之后&#xff0c;A 能变成B&am…

Websockets与Spring 4

我将整个厨盆放入一个小型Web应用程序中&#xff0c;此应用程序是我在该帖子中开发的一部分-Spring Boot&#xff0c;Spring Integration&#xff0c;RabbitMQ&#xff0c;最后是该帖子的主题&#xff0c;Spring MVC与Spring 4中的Websocket支持。 实时地震清单应用 最终的应用…

计算机算力英语怎么说,MIT警告深度学习正逼近算力极限,突破瓶颈会让人类成为上帝?...

原标题&#xff1a;MIT警告深度学习正逼近算力极限&#xff0c;突破瓶颈会让人类成为上帝&#xff1f;摩尔定律提出的时候&#xff0c;人们从来没有想到过芯片的算力会有到达极限的一天&#xff0c;至少从来没有想到芯片算力极限会这么快到来。MIT发出警告&#xff1a;算力将探…

推荐40个简单的 jQuery 导航插件和教程【下篇】

在这篇文章中&#xff0c;我为大家收集了40款非常棒的 jQuery 导航插件和教程。导航作为网站重要的组成部分&#xff0c;能够帮助用户找到他们想要的内容&#xff0c;因此导航设计的好坏决定了用户能够在你的网站停留更长的时间&#xff0c;浏览更多的内容。在下面的集合中&…

福大软工 · 第七次作业 - 需求分析报告

【 组长博客链接】 031602428 苏路明 【计划安排】 阶段主要任务时间任务内容1项目选题09.22 - 10.10确定选题内容&#xff0c;收集用户需求&#xff0c;明确定位&#xff0c;竞品分析&#xff0c;选题报告2需求分析10.11 - 11.4梳理需求&#xff0c;输出思维导图&#xff0c;原…

网站页面左右_广州网站优化的技巧是什么?

说到网站优化&#xff0c;大家都不陌生&#xff0c;但首先&#xff0c;我们知道为什么要优化网站吗?我们网站优化是为了改善网站在百度&#xff0c;搜狗等搜索引擎搜索结果排名中的网站页面&#xff0c;以增强搜索引擎的流量。下面拓王朝广州网站优化公司小编针对网站的优化技…