暑假第十五测

题解:

第一题: 

20%枚举长度和每个子串,O(len)判断,随机情况复杂度可过

40%同样枚举长度,然后两个指针卡出区间,O(1)[或O(26)//可能可过?]判断

50%既然知道了40%的做法那么我们可以二分长度就好了

70%二分,需要O(1)判断

100%两个指针维护一个区间,保证左端点固定时,是最小的完美子串

开桶记录每个出现多少次,当一个点新加入或消失时,tot对应改变,tot=26时,更新答案,复杂度O(n) 

#include<bits/stdc++.h>
using namespace std;
const int M = 2e6 + 10;
char a[M];
int len, s[M], vis[28];bool check(int k){int ret = 0;memset(vis, 0, sizeof(vis));for(int i = 1; i <= k; i++){if(!vis[s[i]])ret++;vis[s[i]]++;}if(ret >= 26)return 1;for(int i = k + 1; i <= len; i++){vis[s[i - k]]--;if(!vis[s[i - k]])ret--;if(!vis[s[i]])ret++;vis[s[i]]++;if(ret >= 26)return 1;}return 0;
}int main(){freopen("str.in","r",stdin);freopen("str.out","w",stdout);scanf("%s", a);len = strlen(a);if(len < 26){printf("QwQ\n");return 0;}for(int i = 0; i < len; i++)s[i + 1] = a[i] - 'A';int lf = 26, ans = 0, rg = len;while(lf <= rg){int mid = (lf + rg) >> 1;if(check(mid))ans = mid, rg = mid - 1;else lf = mid + 1;}if(!ans)printf("QwQ\n");else printf("%d\n",ans);
}
View Code

 

第二题:

将两个数相乘,看一看是不是一个数的立方,我们可以把游戏压缩成两局,变成X1^1 * X2^1 * …… * Yn-1 ^2 * Yn^2  X1 ^ 2 * X2 *^ 2 * ……* Yn-1 ^ 1 * Yn ^1,  所以他一定是一个数k的三次方; 再看拆出来的k是不是x, y 的因数

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 1;
#define ll long long
ll x, y;
bool check(){ll tmp = x * y;ll lf = 1, ans = 0, rg = min(sqrt(tmp), 1e6);while(lf <= rg){ll mid = (lf + rg) >> 1;ll cc = mid * mid * mid;if(cc == tmp) {ans = mid; return (x % mid == 0 && y % mid == 0);}if(cc < tmp)lf = mid + 1;else rg = mid - 1; }return 0;
}
int main(){freopen("game.in","r",stdin);freopen("game.out","w",stdout);int T;scanf("%d", &T);while(T--){scanf("%I64d%I64d", &x, &y);if(check())puts("Yes");else puts("No");}
}
View Code

 

第三题:

不能盖住好地,那么宽为1的木板只能放在行、列连通块里。

•所以行、列连通块对应左、右部中的点,泥地对应边。

•求二分图最小覆盖就是答案。

二分图最小点覆盖==最大匹配

#include<bits/stdc++.h>
using namespace std;
const int M = 101;char c[M][M];
int mp[M][M];
bool vis[M*M*2];
int head[M*M*2], h[M][M], r[M*M*2], l[M][M], lf[M*M], num, tot, match[M*M*2];
struct edge{int v, nxt;}G[M*M*2];
void add(int u, int v){G[++tot].nxt = head[u]; head[u] = tot; G[tot].v = v;}bool find(int u){for(int i = head[u]; i; i = G[i].nxt){int v = G[i].v;if( !vis[v] ){vis[v] = 1;if(!match[v] || find(match[v])){match[v] = u; return 1;}}}return 0;
}int main(){freopen("cover.in","r",stdin);freopen("cover.out","w",stdout);int R, C, ans = 0, cnt = 0;scanf("%d%d", &R, &C);for(int i = 1; i <= R; i++)scanf("%s", c[i]);for(int i = 1; i <= R; i++)for(int j = 0; j < C; j++){if(c[i][j] =='*')mp[i][j + 1] = 1;//, id[i][j + 1] = ++num;
        }for(int i = 1; i <= R; i++)for(int j = 1; j <= C; j++){if(!h[i][j]){++num;for(int k = j; k <= C && mp[i][k]; k++){h[i][k] = num; //add(id[i][k], num);
                }}if(!l[i][j]){++num;for(int k = i; k <= R && mp[k][j]; k++){l[k][j] = num; //add(id[k][j], num);
                }}}for(int i = 1; i <= R; i++)for(int j = 1; j <= C; j++)if(mp[i][j]){add(h[i][j], l[i][j]);if(!r[h[i][j]]){lf[++cnt] = h[i][j];r[h[i][j]] = 1;}}for(int i = 1; i <= cnt; i++){memset(vis, 0, sizeof(vis));if(find(lf[i]))ans++;}printf("%d\n", ans);
}
View Code

 

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

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

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

相关文章

扩展Spring Batch –步骤分区

在之前的几篇文章中&#xff0c;我们已经讨论了如何启动和运行Spring Batch。 现在&#xff0c;我们将开始讨论可用于扩展Spring Batch的一些策略。 本文将重点介绍如何对步骤进行分区&#xff0c;以使该步骤具有多个线程&#xff0c;每个线程并行处理一块数据。 如果您有大量…

zabbix磁盘的自动发现与磁盘指标监控

由于最近项目上需要对服务器监控进行规范化监控&#xff0c;再磁盘这块有几种方式 1.如果每台设备的磁盘是一样的 比如都有vda,vdb两块磁盘那么可以采用 1.1 每台客户端写脚本&#xff0c;服务端每台设备去加上监控项&#xff08;------最次的手段-------------&#xff09; 1.…

[代码笔记]VUE路由根据返回状态判断添加响应拦截器

//返回状态判断(添加响应拦截器)Axios.interceptors.response.use(res > {//对响应数据做些事if (res.data && !res.data.success) {Message({// 饿了么的消息弹窗组件,类似toastshowClose: true,message: res.data.error.message.message? res.data.error.messag…

php前台用户权限开通,vue实现网站前台的权限管理

本文主要介绍了基于vue实现网站前台的权限管理(前后端分离实践)&#xff0c;小编觉得挺不错的&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧&#xff0c;希望能帮助到大家。Javascript做为当下的热门语言&#xff0c;用途很广泛&#xff0c…

一种替代的多生产者方法

最近在InfoQ上&#xff0c;Aliasei Papou发表了一篇关于他的一些实验的文章 &#xff0c;该实验在线程之间进行了高性能的消息交换。 本文中有许多示例&#xff0c;但我将重点介绍多生产者案例。 文章显示的一种优化方法是&#xff0c;如果您知道初始化时拥有的生产者数量&…

maven连接国内仓库

<mirrors> <!-- 阿里云仓库 --> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.c…

python知识点汇总_Python知识点总结大全(一)

python逻辑运算符 1.成员 and or not 优先级&#xff1a;() > not > and > or 2.and 逻辑运算符and&#xff0c;a andb&#xff0c;如果a和b都为True&#xff0c;则返回True&#xff0c;如果其中一个为False&#xff0c;返回False&#xff0c;简言之&#xff1a;一假则…

JS ES6中的箭头函数(Arrow Functions)使用

转载这篇ES6的箭头函数方便自己查阅。 ES6可以使用“箭头”&#xff08;>&#xff09;定义函数&#xff0c;注意是函数&#xff0c;不要使用这种方式定义类&#xff08;构造器&#xff09;。 一、语法 基础语法 (参数1, 参数2, …, 参数N) > { 函数声明 }(参数1, 参数…

php中trim的用法和例子,PHP ltrim()用法及代码示例

ltrim()函数是PHP中的内置函数&#xff0c;可从字符串左侧删除空格或其他字符(如果指定)。用法:ltrim( $string, $charlist )参数&#xff1a;函数ltrim()接受两个参数&#xff0c;如上面的语法所示。在这两个参数中&#xff0c;一个是必需的&#xff0c;另一个是可选的。下面将…

python怎样编写定时程序_Python如何实现定时器功能

Timer: 隔一定时间调用一个函数,如果想实现每隔一段时间就调用一个函数的话&#xff0c;就要在Timer调用的函数中&#xff0c;再次设置Timer。Timer是Thread的一个派生类 python中的线程提供了java线程功能的子集。 #!/usr/bin/env python from threading import Timer import …

应用ForkJoin –从最佳到快速

到目前为止&#xff0c;JDK 7已很好地掌握在开发人员手中&#xff0c;并且大多数人都听说过ForkJoin&#xff0c;但是没有多少人有时间或机会去尝试它。 它引起了&#xff0c;并且可能仍然引起一些混乱&#xff0c;与普通线程池有什么不同。 [1] 我在本文中的目标是通过一个代…

Echarts-K线图提示框改头换面

工作&#xff1a; 使用Hbuilder建web工程&#xff0c;加入echarts相关库&#xff0c;根据需要更改K线图及其的提示样式&#xff0c;去除默认提示&#xff0c;使用异步加载echarts的数据&#xff0c;数据格式为json。 需要注意的K线图和5日均线&#xff0c;10日均线的意义&#…

JS对url进行编码和解码(三种方式区别)

Javascript语言用于编码的函数&#xff0c;一共有三个&#xff0c;最古老的一个就是escape()。虽然这个函数现在已经不提倡使用了&#xff0c;但是由于历史原因&#xff0c;很多地方还在使用它&#xff0c;所以有必要先从它讲起。 escape 和 unescape 实际上&#xff0c;esca…

elasticsearch启动错误解决

es启动默认不能使用root用户&#xff0c;所以需要新创建一个用户来启动。 启动时可能出现的问题: [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] [2]: max number of threads [1024] for user [esuser1] is too low, …

vc6.0 matlab混合编程,matlab2010 + vc6.0混合编程实例(调用dll)

不想解释太多直接上代码吧&#xff01;&#xff01;&#xff01;在对matlab配置后&#xff0c;上代码mcc -W cpplib:libMyAdd -T link:lib MyAdd -C就可以了&#xff0c;记得加上-C在对VC6.0进行配置的时候只要把 matlabroot\extern\include和matlabroot\extern\lib\win32\micr…

canvas换图时候会闪烁_Canvas实现图片上标注、缩放、移动和保存历史状态,纯干货(附CSS 3变化公式)...

(给前端大学加星标&#xff0c;提升前端技能.)作者&#xff1a;zhcxk1998https://juejin.im/user/5d4304bdf265da03d15531dc哈哈哈俺又来啦&#xff0c;这次带来的是canvas实现一些画布功能的文章&#xff0c;希望大家喜欢&#xff01;这个css3变化公式可以适用于平常我们使用的…

Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)

之前写过一篇博客“探索TFS Git 库文件换行&#xff08;CRLF&#xff09;的处理方式”&#xff0c;主要是针对TFVC代码库的。下面这篇文章说明如何在TFS的Git库中处理代码换行的问题。概述在Azure DevOps Server&#xff08;之前叫TFS&#xff09; 中使用Git管理源代码&#xf…

RMI强制Full GC每小时运行一次

在我职业生涯中进行的所有故障排除练习中&#xff0c;我感到随着时间的推移&#xff0c;我所追寻的错误在不断发展&#xff0c;变得越来越卑鄙和丑陋。 也许仅仅是我的年龄开始了。这个特别的Heisenbug –看起来像这篇帖子一样&#xff0c;再次让我清醒了很多&#xff0c;而不是…

apache配置-html碎片shtml格式

修改SSI 文件 conf–httpd.conf <Directory "D:/Android/Apache2.2/htdocs"> //修改文件目录 # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymL…

php+条件限定符,const 限定符

const 限定符const 对象一旦创建后不可改变,所以const必须初始化.const int iget_size(); //运行时初始化const int j43;const int k; //错误,必须初始化默认状态下,const对象仅在文件中有效,解决办法是对于const变量不管是声明还说定义都添加extern关键字extern const int buf…