IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2021牛客多校4(部分题解,参考标答和队友思路) -> 正文阅读

[数据结构与算法]2021牛客多校4(部分题解,参考标答和队友思路)

(今天场队友带飞

C.LCS

题目大意:构造三个长度为n的字符串,使得两两最长公共子序列为x,y,z

思路:假设x>=y>=z,分别对应s1s2,s2s3,s3s1

当x+y-n > z时无解,当x+y-n>0时s1s3必有交集,也就是说x+y-n是s1s3的最小交集

先给三个字符串加上z个a的前缀,问题转化成(x-z)+(y-z)<=n-z,给s1s2加上x-z个连续的b,给s2s3加上连续的c即可,其他多的地方构造成不等的就行

F.just a joke

(我才是joker = =

题意:无向图删边游戏,每次可以删一条边或者一个无环连通块

思路:看点数、边数奇偶

删边操作即删去一条边,删连通块等价于删去k个点和(k-1)条边,看点数和边数奇偶即可

(无语了,一开始还想着缩点找环。。。还是没看透问题的本质唉,结论也是猜的,不会证。。

I.Inverse pair

题目大意:给定一个排列,先可以对每个数加1或者不加,求操作后的最小逆序对数

思路:简单贪心,如果x+1在x前面位置,我们就给它加1,这样对总逆序对的贡献是-1,最后树状数组算一下逆序对即可

J,average

题目大意:本质就是求给定两串数n,m,分别求最大平均值的区间,区间长度至少为x,y

思路二分平均值即可(显然满足单调性,但是一开始不会写,就去二分长度wa了),还有O(n)斜率优化的做法,队友拉了板子过掉了

记录一下二分double的写法(之前记录的不知道丢哪去了)

#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <map>
#include <vector>
#include <queue>
using namespace std;
#define _for(i,a,b) for(int i=(a) ;i<=(b) ;i++)
#define _rep(i,a,b) for(int i=(a) ;i>=(b) ;i--)
#define mst(v,s) memset(v,s,sizeof(v))
#define pb push_back
#define IOS ios::sync_with_stdio(false)
#define int long long
#define INF 0x7f7f7f7f7f7f7f7f
#define inf 0x7f7f7f7f
#define all(v) v.begin(),v.end()
typedef long long ll;
const int N=1e5+10;
int a[N],b[N],c[N];
int suma[N];
int sum1,sum2;
int n,m,x,y;
double ans,res;
bool check(int a[],int n, double mid ,int x)
{
    double c[N] = {0};
    double sum[N] = {0};
    _for(i,1,n)
    {
        c[i] = a[i] - mid;
        sum[i] = sum[i-1] + c[i];
    }
    double mi=inf;
    _for(i,x,n)
    {
        mi = min(mi,sum[i-x]);
        if( sum[i] >=mi ) return true;
    }
    return false;
}
double query(int a[] ,int n,int x)
{
    double l=1,r=1e5+10;
    _for(i,1,60)
    {
        double mid = (l+r)/2;
        if( check(a,n,mid,x) ) l=mid;
        else r=mid;
    }
    return l;


}
void solve()
{
    printf("%.10lf\n",query(a,n,x)+query(b,m,y));
}
signed main()
{
//     !!!
//        freopen("data.txt","r",stdin);
    //    !!!
//    IOS;
    scanf("%lld %lld %lld %lld",&n,&m,&x,&y);
    _for(i,1,n) scanf("%lld",&a[i]);
    _for(i,1,m) scanf("%lld",&b[i]);
    solve();
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 00:18:38  更:2021-07-28 00:18:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:33:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码