首页 > 其他分享 >SMU Summer 2024 Contest Round 2

SMU Summer 2024 Contest Round 2

时间:2024-07-09 17:22:20浏览次数:16  
标签:Summer ve int pow3 SMU long 2024 while define

Sierpinski carpet
1.这道题的核心其实在于,我们要观察到点的位置是在每一个小图形的正方形内,和一个大图型的中心正方形处的,那么通过观察可以发现,如果满足在这个正方形处,那么一定(3k-1+1) <= x,y<=(2*3k-1)
2.这个k是什么意思呢?当我们n=3的时候k可以取1,2,3,也就是对应每一级的中间宫格,于是我们对每个位置(x,y)进行判断,找到会包含这个点的大小最小的k级地毯,如果处于中间宫格就输出".",否则考虑这个坐标在k-1级地毯的相对位置(x mod 3k-1,y mod3k-1),递归判断

点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};
int pow3[15];

bool check(int i,int j)
{
    int k=10;
    while(k>=2&&pow3[k-1]>=i&&pow3[k-1]>=j) k--;//对每个坐标找到最小的宫格图
    //当x,y在下面这个范围内,说明在中心宫格处,
    if(i>=pow3[k-1]+1&&i<=2*pow3[k-1]&&j>=pow3[k-1]+1&&j<=2*pow3[k-1]) return 0;
    if(k==1) return 1;//其实每个#对应的宫格图最小应该为1级也就是3*3型的
   return check(i%pow3[k-1],j%pow3[k-1]);//一次没找到最小就继续找
}
//总体还是用递归的思想来解决这道题,不断去找这个坐标所属于的最小级的图
void solve()
{
    int n;
    cin>>n;
    pow3[0]=1;
    for(int i=1;i<=10;i++) pow3[i]=3*pow3[i-1];
    for(int i=1;i<=pow3[n];i++)
    {
        for(int j=1;j<=pow3[n];j++)
        {
            if(check(i,j)) cout<<"#";
            else cout<<".";
        }
        cout<<endl;
    }
      
      
      
    
    
}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

Consecutive
1.题意就是简单的找有几个两个连在一起且相同的字母串而已,由于是3e5,所以n2的方法是过不去的
2.我把字符串符合条件的下标都放进数组里,然后二分查找lower_bound题目要求的l,r然后找到的两个下标相减就是答案

快狠狠的点它
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};


void solve()
{
    string s;
    int n,q;
    cin>>n>>q;
    cin>>s;
    vector<int>ve;
    for(int i=0;i<s.size()-1;i++)
    {
        if(s[i]==s[i+1]) ve.push_back(i+1);
    }
    
    while(q--)
    {
        int l,r;
        cin>>l>>r;
        int ans=0;
        int k1=lower_bound(all(ve),l)-ve.begin();
        int k2=lower_bound(all(ve),r)-ve.begin();
        ans=k2-k1;
        cout<<ans<<endl;
    }
    
}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

Minimum Width

1.二分答案的题目,其实很好写就是check里要注意一下
2.在check里我们的思路是,把宽度用完看行数符不符合,但是要注意如果有一个特别大的值,让总和等于初始值,记得让行数变为1e9。

点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int,int> pii;
#define x first
#define y second
#define all(v) v.begin(),v.end()
int dx[]={0,1,-1,0};
int dy[]={-1,0,0,1};
int n,m;
vector<int>ve;
bool check(int x)
{
        int  sum=-1,now=1;//-1是因为加第一个单词是不需要空格的
        for(int i=0;i<n;i++)
        {
            if(ve[i]>x) now=1e10;//有一个数特别大,大于宽度了,就没办法满足直接让now=1e10
            if(sum+ve[i]+1<=x) sum+=ve[i]+1;
            else {
                sum=ve[i];
                now++;
            }
        }
        
        if(now<=m) return 1;
       else  return 0;
        
}

void solve()
{

    cin>>n>>m;
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        ve.push_back(x);
    }
    int l=0,r=1e18;
    while(l<r)
    {
        int mid=(l+r)>>1;
        if(check(mid)) r=mid;
        else l=mid+1;
    }
      cout<<l;

}


signed main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    int t=1;
    //cin>>t;
    while(t--) solve();
    return 0;
}

标签:Summer,ve,int,pow3,SMU,long,2024,while,define
From: https://www.cnblogs.com/swjswjswj/p/18292088

相关文章

  • 2024年国内最经典好用的5款项目管理软件工具助你一路长虹
    目前市场上的项目管理软件众多,但是它们也都有一些共同的功能及特点。比如任务和进度管理、资源分配、财务监控、风险评估、协作增强以及报告和洞察力等。这些功能不仅提供了强大的工具来确保项目的高效执行和按时交付,而且还为团队成员和管理者提供了实时的数据和信息,帮助他们快速......
  • 【学术会议征稿】第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024)
    第八届电气、机械与计算机工程国际学术会议(ICEMCE2024)20248th InternationalConferenceonElectrical,MechanicalandComputerEngineering第八届电气、机械与计算机工程国际学术会议(ICEMCE2024)将于2024年10月25日至27日在中国西安举办。本次会议由西京学院主办,自201......
  • 2024年全国青少年信息素养大赛图形化编程小高组复赛真题
    2024年全国青少年信息素养大赛图形化编程小高组复赛真题题目总数:6  总分数:100编程题第1题  问答题请对变身鱼进行编程,变身鱼的初始状态已经设置,不需要进行修改,1.当变身鱼大小大于300时,游戏胜利(自制积木块已经写好,可直接使用)。变身鱼碰到螃蟹,大小增加5,1秒后可......
  • 2024年北京市科学技术奖提名程序及注意事项
    2024年北京市科学技术奖的提名程序已然拉开帷幕,标志着又一轮科技荣耀的角逐正式开始。本年度提名不仅承载着对科研成就的高度认可,也体现了北京市推动科技进步、鼓励创新创造的坚定承诺。根据最新通知,提名工作已全面转入线上平台,确保提名流程的高效与透明。参与者需细致研读《关......
  • 【Py/Java/C++三种语言OD独家2024D卷真题】20天拿下华为OD笔试之【前缀和/固定滑窗】2
    有LeetCode算法/华为OD考试扣扣交流群可加948025485可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录题目描述与示例题目描述输入描述输出描述示例一输入输出说明示例二输入输出说明解题思路贪心思想......
  • NOIP2024模拟1
    NOIP2024模拟1掉大分,哈哈哈。好像有的人对比赛评价不太好,我觉得还行,除了\(4\)个小时\(5\)道题以外。wang54321:主要是我打的比较唐。还有经典没\(SPJ\),但后交的竟然有?T1分糖果签到题。但没签成。考虑对\(3\)取余,只有四种合法\(0,0,0|1,1,1|2,2,2|0,1,2\)考虑......
  • 【20240709】海量图片导出需求,shell脚本
     [root@localhostimages]#catjunshuv3.sh#!/bin/bash#确保脚本在~/images目录下运行if["$(pwd)"!="$HOME/images"];thencd~/imagesfi#创建目标目录junshu,如果不存在则创建mkdir-pjunshu#获取CSV文件中的总行数,用于进度条total_lines=$(wc-l......
  • 2024年测试用例管理9大最佳工具(包括免费、付费及开源)
    软件测试管理是软件开发项目中一个很重要的环节,近些年随着可用的测试工具越来越多,测试系统本身越来越复杂,管理测试活动的各个方面已经成为一个越来越大的挑战。一、关于用Excel​做测试用例管理工具在测试团队的管理中,Excel可以用来维护测试用例,但无法满足需求的复杂度和迭代,需......
  • 2024春秋杯网络安全联赛夏季赛-PWN-Writeup
    2024春秋杯网络安全联赛夏季赛-PWN-Writeup只打了第一天,费了好大劲,终于三道都出了。Shuffled_Execution保护全开,ida查看伪代码:int__fastcallmain(intargc,constchar**argv,constchar**envp){__int64v3;//raxchar*s;//[rsp+28h][rbp-18h]unsigned_......
  • 【2024-07-08】调整预期
    20:00人之所以痛苦,在于追求错误的东西。如果你不给自己烦恼,别人也永远不可能给你烦恼。因为你自己的内心,你放不下。好好的管教你自己,不要管别人。                                        ......