首页 > 其他分享 >Div4 VP总结

Div4 VP总结

时间:2024-03-26 21:24:53浏览次数:26  
标签:总结 std 暴力 int Codeforces VP 枚举 思路 Div4

Codeforces Round 799 (Div. 4)

E(最长子区间)

基本思路

求满足s的最长子区间。

错误思路分析

  • 想用双指针左右贪心模拟题目要求删前或后的数(但在面对前后两个相等的时候,删前删后没有无后效性)
  • 简单暴力枚举子区间长度(显然在n=1e5的时候t了)

正确思路

  • 虽然也是暴力枚举子区间,但有做优化。
    先从左到右求和至题目要求s,记录长度,再把左端点有1的数删一个,右端点再去取下一个有1的数的位置。
    代码如下
    void solve() {
    std::cin>>n>>m;
    std::vector<int>a(n);
    int sum=0;
    for(int i=0;i<n;i++){
        std::cin>>a[i];
        sum+=a[i];
    }
    int ans=n;
    int cur=0;//cur就是求的区间和
    if(sum<m){
        std::cout<<-1<<"\n";
    }else{
      for(int i=0,j=0;i<n;i++){//这里我个人感觉很妙,用i,j两个指针实现了o(n)的时间复杂度。
        while(j<n&&cur+a[j]<=m){
            cur+=a[j];
            j++;
        }
        if(cur==m){
            ans=std::min(ans,n-(j-i));
        }
        cur-=a[i];
      }
        std::cout<<ans<<"\n";
    }
    

}

```

F(有思路的暴力枚举)

题目大意

对一堆数是否能去三个独立的数相加使其总和尾数为3.

思路

直接用\(10^3\)时间直接暴力枚举i,j,k看满足条件的数,看输入的数是否满足。
代码

void solve() {
   int n;
   std::cin>>n;
   std::vector<int >a(n+1),one(10);//one数组来记录原来数的尾数的次数
   for (int i = 0; i < n; i++)
   {
    std::cin>>a[i];
        a[i]%=10;
        one[a[i]]++;
   }
    for(int i=0;i<=9;i++){
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                if((i+j+k)%10==3){
                    one[i]--;
                    one[j]--;
                    one[k]--;
                    if(one[i]>=0&&one[j]>=0&&one[k]>=0){
                        std::cout<<"YES"<<"\n";
                        return;
                    }
                    one[i]++;
                    one[j]++;
                    one[k]++;
                }
            }
        }

    }
    std::cout<<"NO"<<"\n";
}

Codeforces Round 817 (Div. 4)

E(二维前缀和求和)

题目意思很明显二维前缀和。
代码

Codeforces Round 806 (Div. 4)

D(字符串切割问题)

  • 错误思路
    想着暴力对其他字符串枚举(首先时间会t,字符串前后相加的结果是不同的)。
  • 正确思路
    字符串切割加匹配问题基本需要用map做匹配,后面枚举各个位置切割是否在map中出翔过再做判断。
    代码

标签:总结,std,暴力,int,Codeforces,VP,枚举,思路,Div4
From: https://www.cnblogs.com/sdlypsck/p/18097597

相关文章

  • MySQL大总结(1)
    1.关系型数据库的特点     1、使用表来存储数据,格式统一,便于维护。2、使用SQL语句操作数据库,标准统一,使用方便。3、数据存储在磁盘中,相对安全。2.DBMS、数据库和表的关系?简言之,先有DBMS,之后有数据库,再有表,每个表中再有数据,具体如下图所示。3.以下关于连接My......
  • Shellcode注入总结
    Shellcode注入总结6x0远程线程注入dll通过在其他进程创建一个远程线程,执行我们的shellcode加载器dll效果:目前dll的shellcode加载器使用了远程加载,能大概绕过火绒静动态,defender的静态。360动静态全杀6x0x0直接看注入exe代码:#include<iostream>#include<tchar.h>#in......
  • 20240324比赛总结
    T1卫星照片https://gxyzoj.com/d/hzoj/p/3657bfs暴力找联通块,再暴力判断即可因为某些原因代码丢了,就不放了T2[luogu3802]小魔女帕琪https://gxyzoj.com/d/hzoj/p/3656考虑到,前7个均不同的概率为\(\prod_{i=1}^{7}\dfrac{a_i}{sum+1-i}\times7!\)因为每种情况均有\(\pro......
  • Android开发两年,我要跳槽去阿里巴巴了,做个阶段总结
    Host:www.baidu.comContent-Type:text/plain//Body搜索****2)响应报文//状态行(包括HTTP版本、状态码,状态信息)HTTP/1.1200OK//HeadersContent-Type:application/json;charset=utf-8//Body[{“info”:“xixi”}]3)常用状态码主要分为五种类型:1开头,代表临时......
  • 3. 文件上传漏洞——漏洞总结笔记
    一、文件上传漏洞前提条件:能上传webshell(若仅让上传图片,而又绕不过去,则不行)webshell路径可知(需要访问目标,不知道则访问不了)webshell 可以被访问webshell可以被解析(即可以显示页面;若返回页面直接显示代码,并没有解析)判断确认是什么过滤?上传任意......
  • FPGA亚稳态学习总结
     首先是组合逻辑电路考虑的是竞争冒险,冒险会产生毛刺。重点研究如何去毛刺时序逻辑电路考虑的是时序不满足会产生的亚稳态问题:如何考量时序满不满足呢?根据不同的场景又有不同的说法。时序分析的两组基本概念建立时间与保持时间1.在同步系统和异步系统(跨时钟域传输)中有两个......
  • 攻防中的信息收集总结
    1.公司查询备案号能拿到公司最直接的域名信息工信部的ICP备案查询系统:https://beian.miit.gov.cn/#/Integrated/recordQuery爱企查,企查查收集关系图谱、企业图谱whois查询http://whois.chinaz.com/https://whois.aizhan.com/enscan工具个人觉得非常不错的收集子公......
  • 【SpringBoot3+Mybatis】小程序和后台管理系统 员工/分类/菜品/套餐管理 上传文件 CRU
    文章目录一、项目介绍&Github二、技术选型三、开发环境搭建四、员工管理4.1新增员工①sql②对象拷贝DTO与Entity③异常捕获与处理④动态获取当前登录者Id⑤ThreadLocal4.2员工分页查询①请求参数实体与响应数据实体②controller层③service层使用pageHelper......
  • 数学分析基本定义定理总结
    数学分析中的重要概念与定理一、实数集完备性基本定理实数稠密性Archimedes性实数集基本定理确界原理:非空有界数集有上/下界则必有上/下确界上确界/下确界单调有界定理:单调有界数列必有极限区间套定理:实数系中存在唯一一点包含在闭区间套的所有闭区间之中......
  • 【WEEK5】学习目标及总结【SpringMVC+MySQL】【中文版】
    学习目标:彻底完成SpringMVC的学习两周完成MySQL的学习——第一周学习内容:参考视频教程【狂神说Java】SpringMVC最新教程IDEA版通俗易懂拦截器文件的上传和下载学习时间及产出:第五周MON~Fri2024.3.25【WEEK5】【DAY1】拦截器【中文版】【WEEK5】【DAY1】Inter......