首页 > 其他分享 >春季月考#3

春季月考#3

时间:2024-05-05 10:44:35浏览次数:9  
标签:Maxx Maxy return yl xl int 春季

春季月考#3

A.Kill Quicksort

经典的卡快排题。

快排在数组正序/逆序是会到达最大的时间复杂度 \(O(n^2)\),但是这个代码里边是随机选择的。

我们发现他这个随机函数是定死的,而且种子已经告诉我们了。

于是我们将计就计:

  • 先把所有数组元素值赋 \(0\)
  • 模拟一遍快排
  • 把每一次查到的随机元素赋值为当前最大值

于是我们可以构造了:

#include <bits/stdc++.h>
using namespace std;

const unsigned mul = 20201011;
unsigned long long state;

unsigned long long retrieve() {
    unsigned modulo = 0x7fffffff;
    state = ((unsigned long long) state * mul) % modulo;
    unsigned high = state;
    state = ((unsigned long long) state * mul) % modulo;
    return high * modulo + state;
}

int retrieve(int a, int b) {
    return (int) (retrieve() % (b - a + 1)) + a;
}

int n,val[100010],p[100010],cnt;

int cmp(int x, int y){return val[x] - val[y];}

void quicksort(int l,int r)
{
    int t = retrieve(l, r);
    val[p[t]] = cnt--; //New
    int i = l, j = r, k = p[t];
    do{
        while (cmp(p[i], k)<0) i++;
        while (cmp(p[j], k)>0) j--;
        if (i <= j) swap(p[i], p[j]), i++, j--;
    }while (i <= j);
    if (i < r) quicksort(i, r);
    if (j > l) quicksort(l, j);
}

int main()
{
    scanf("%llu",&state);
    /* scanf("%d", &n); */
    puts("1000"); n = 1000; cnt = n; //New
    for (int i = 1; i <= n; i++)
        /* scanf("%d", &val[i]), p[i] = i; */
        val[i] = 0, p[i] = i; //New
    quicksort(1, n);
    for (int i = 1; i <= n; i++)
        printf("%d ", max(val[i],1));
    return 0;
}

神奇。

D. Entropy

首先,如果所有字符都是相同的,那么就是 \(0\),于是我们从全 \(0\) 开始改。

但这样对于熵大的字符串不友好,于是我们再从所有字符都 \(1\)​ 个开始随机改。

最后几个过不了的搞一搞就好了,面向数据。

E. Camping

老师给的外挂:他自己写的知乎

这里是第一种:

#include <bits/stdc++.h>
using namespace std;

int n,a[1010][1010];

int Query(int x,int y){
    if(a[x][y]){
        return a[x][y];
    }else{
        printf("? %d %d\n",x-1,y-1);fflush(stdout);
        int res;scanf("%d",&res);a[x][y]=res;
        return res;
    }
}

void Solve(int xl,int xr,int yl,int yr)
{
    if(xl==xr){
        printf("! %d %d\n",xr-1,yr-1);
        return;
    }else{
        if(xr-xl==1){
            int a=Query(xl,yl);
            int b=Query(xl,yl+1);
            int c=Query(xl+1,yl);
            int d=Query(xl+1,yl+1);
            if(a>b&&a>c) printf("! %d %d\n",xl-1,yl-1);return;
            if(b>a&&b>d) printf("! %d %d\n",xl-1,yl);  return;
            if(c>a&&c>d) printf("! %d %d\n",xl,yl-1);  return;
            if(d>b&&d>c) printf("! %d %d\n",xl,yl);    return;
        }else{
            int xm=(xl+xr)>>1;
            int ym=(yl+yr)>>1;
            int Max=0,Maxx=0,Maxy=0,A;
            for(int i=xl;i<=xr;i++) {A=Query(i,yl);if(A>Max)Max=A,Maxx=i,Maxy=yl;} //第一列
            for(int i=xl;i<=xr;i++) {A=Query(i,ym);if(A>Max)Max=A,Maxx=i,Maxy=ym;} //中间列
            for(int i=xl;i<=xr;i++) {A=Query(i,yr);if(A>Max)Max=A,Maxx=i,Maxy=yr;} //第三列
            for(int i=yl+1;i<yr;i++){A=Query(xl,i);if(A>Max)Max=A,Maxx=xl,Maxy=i;} //第一行
            for(int i=yl+1;i<yr;i++){A=Query(xr,i);if(A>Max)Max=A,Maxx=xr,Maxy=i;} //中间行
            for(int i=yl+1;i<yr;i++){A=Query(xm,i);if(A>Max)Max=A,Maxx=xm,Maxy=i;} //第三行

            int m=0,mx,my,flag=true;
            if(Maxx-1>=xl){A=Query(Maxx-1,Maxy);if(A>Max&&A>m)flag=false,m=A,mx=Maxx-1,my=Maxy;} //比上面小
            if(Maxx+1<=xr){A=Query(Maxx+1,Maxy);if(A>Max&&A>m)flag=false,m=A,mx=Maxx+1,my=Maxy;} //比下面小
            if(Maxy-1>=yl){A=Query(Maxx,Maxy-1);if(A>Max&&A>m)flag=false,m=A,mx=Maxx,my=Maxy-1;} //比左边小
            if(Maxy+1<=yr){A=Query(Maxx,Maxy+1);if(A>Max&&A>m)flag=false,m=A,mx=Maxx,my=Maxy+1;} //比右边小
            if(flag) {printf("! %d %d\n",Maxx-1,Maxy-1);return;} //如果最大

            if(mx<xm&&my<ym)       Solve(xl,xm-1,yl,ym-1); //找找左上
            else if (mx>xm&&my<ym) Solve(xm+1,xr,yl,ym-1); //找找左下
            else if (mx<xm&&my>ym) Solve(xl,xm-1,ym+1,yr); //找找右上
            else                   Solve(xm+1,xr,ym+1,yr); //找找右下
        }
    }
}

int main()
{
    scanf("%d",&n);
    Solve(1,n,1,n);
    fflush(stdout);
    return 0;
} 

标签:Maxx,Maxy,return,yl,xl,int,春季
From: https://www.cnblogs.com/Sundar-2022/p/18173270

相关文章

  • whk 乱记(2024春季篇)
    序「结局的完美就像英雄电影情节……」循环节里我需要一个证明自己存在的依靠。2024.4.8~2024.4.14清明复课周。情绪波动以外总体平淡。语文:单元考班4,赢!数学:学统计,为casio举大旗。整了立几里的「球」相关,回头考一直爆炸到单元考,菜就多练。英语:每天稳定20min写完高......
  • 春季月考 #2
    做题顺序:\(\texttt{B}\to\texttt{A}\to\texttt{C}\to\texttt{D}\to\texttt{E}\)A.牛奶首先可以发现,除了全部都是\(\texttt{L/R}\)的情况,其他的情况一定可以把数组分割成几段全部都是\(\texttt{L,R}\)的段。像是这样:\(\texttt{RRRLLRLLL}\)如果当前段是\(\texttt......
  • 北京大学2024春季高等数学A(II)试题及简评
    总的来说,难度适中,可能第一题会卡一下,是一个极坐标的反向换元,如果想不到硬做还是挺难的,非常遗憾,博主没有瞪眼法瞪出来,最后才想出来但是已经来不及了TAT。另外二、六题都是挖洞法,分别是Stokes和Green的挖洞法,只要细心发现被积函数和积分区域的奇点就可以。第三题的不能使用Gauss......
  • 倒计时1天 | 袋鼠云春季发布会完整议程出炉!快快预约直播
    在日新月异的数字化经济时代,企业和组织不断寻求利用先进技术构建自身的核心竞争力。其中,大数据与AI的深度融合正在成为推动企业实现新质生产力的关键路径。在此背景下,袋鼠云举办春季发布会,以“Data+AI,构建新质生产力”为主题,旨在深度探讨如何将数据与AI紧密结合,以期打破传统的生......
  • 关于华为即将举行的鸿蒙春季沟通会的新闻报道
    华为计划在4月11日举办此次活动,届时将推出与车和PC类相关的新产品。尽管备受期待的华为P70系列设备的发布尚未得到官方确认,但已有多家媒体对此进行了报道。文章中还提到了智界S7的新款可能在4月11日上市,并进行多项新功能升级。智界S7是去年上市的一款车型,搭载了HarmonyOS4智......
  • 2024年春季学期《算法分析与设计》练习5
    问题A:随机数题目描述有一个rand(n)的函数,它的作用是产生一个在[0,n)的随机整数。现在有另外一个函数,它的代码如下:intrandom(intn,intm){        returnrand(n)+m;}显而易见的是函数random(n,m)可以产生任意范围的随机数。现在问题来了,如果我想要......
  • Polar【2024春季个人挑战赛】—— Crypto
    离家出走的猫猫题目:小明的猫咪离家出走了,在离开前小猫留下一段话:~呜喵呜呜~呜喵啊喵啊啊呜喵呜呜啊呜啊~呜呜~喵呜~~喵呜~啊呜啊呜喵呜呜喵~喵~~喵啊喵呜喵呜啊呜啊~呜啊~啊喵~~啊~~喵~啊啊~呜啊啊喵喵啊啊~啊啊啊~呜啊呜呜~呜啊啊~啊喵~呜喵~啊~喵啊呜呜喵~~喵啊~啊~呜~~喵~~......
  • 石家庄铁道大学2024年春季 2020 级课堂测试试卷—数据分析练习
    石家庄铁道大学2024年春季  2020级课堂测试试卷—数据分析练习课程名称: 大数据库技术与应用  任课教师:王建民  考试时间: 实现为止 分钟  一、 原始数据: 二、 地域维度标准化:地域属性在科技成果分析中作为一个重要维度,其标准取值非常必要,目前我国采用的标......
  • 日记 2024.3.15:2024 年 syzx 春季训练 1
    日记2024.3.15:2024年syzx春季训练1A找出在\(1,2\)周围一圈的点,挑出最远点\(u,v\)(找不到说明\(d_{1,2}=1\)),判一下\(d_{u,v}\)与\(d_{u,2}\)的关系以区分\(\pm1\)。这样比较好看。B普通冒泡\(n(n-1)/2\)次,这题\(n^2\),说明每做一次操作可以浪费一次操作。......
  • 三月八号 春季软件工程开课博客
     本学期预计达到的目标就是能够熟练的在规定时间内开发一个web应用和Android应用并且两类应用可以做到简单的互动操作。本学期也会努力的向这个目标靠近。本篇博客主要是对自己进行基本的了解、回顾,并初步确定本学期要达到的目标。我目前就读于石家庄铁道大学软件工程专业,是一......