10.【2024初三集训模拟测试2】

無標題.txt / 2024-02-20 / 原文

\(\Huge打了一场模拟赛,又垫底了。qwq\)

2024初三集训模拟测试1

  • 不会有人比本蒟蒻更蒻了 \(qwq\)

T1小P的2048

\(0pts\) \(\Large⚓⚓⚓\) \(\Large🌚🗿🗿🌝\) \(\Huge🔯\)

  • 本来是道原题,可以在 \(30\) 秒内 \(AC\) ,但是突然改题了。然后一分没得(一坤小时白打了)。\(\Large🚾\)
  • \(Shadow\) \(40\)\(A\)\(T1\) 之后总分凭空增加 \(100\) 分。

题解 \(\Huge 🈶\)

  • 没啥好说的, \(\Huge\%\) 你。
  • 分四个方向讨论,先合并同类项,之后再进行移动,最后统计空格子,进行插入新值。
  • 记录一下 \(last\) 数组,假如发现 \(last\)\(now\) 相同,则说明无法操作。
  • 具体的看代码吧 \(qwq\)

代码 \(\Huge 🈶\)

#include<bits/stdc++.h>
//#define int long long
#define N (1000010)
#define I i
#define J j
#define itn int
#define Int int
#define sort stable_sort
using namespace std;
namespace IO
{
    #define ll long long
    const int MAX=1<<12;
    char buf[MAX],*p1=buf,*p2=buf;
    char obuf[MAX],*o=obuf;
    #define gc()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<12,stdin),p1==p2)?EOF:*p1++)
    //template<typename T>
    //inline T read()
    inline int read()
    {
        int x=0;bool f=1;
        char c=gc();
        for(;c<48||c>57;c=gc())if(c=='-')f=0;
        for(;c>=48&&c<=57;c=gc())x=(x<<3)+(x<<1)+(c^48);
        return f?x:~x+1;
    }
    void print(ll x){if(x>9)print(x/10);*o++=(x%10)+'0';}
    void pit(ll x){if(x<0)*o++='-',x=~x+1;print(x);}
    void write(ll x,char ed){pit(x);*o++=ed;}
    void flush(){fwrite(obuf,o-obuf,1,stdout);}
    #undef ll
}
using IO::read;using IO::write;using IO::flush;using std::complex;
inline int min(int x,int y){return y&((y-x)>>31)|x&(~(y-x)>>31);}
inline int max(int x,int y){return x&((y-x)>>31)|y&(~(y-x)>>31);}
inline void swap(int &x,int &y){int tmp=x;x=y;y=tmp;}
long long n,m;
void init_set()
{
    #ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
}
int fontaine;
int x,y,xx,yy,z,tot;
int genshin_impact;
int kamisato_ayaka[12][12];
int las[12][12];
signed main()
{
    init_set();
    n=read();m=read();
    x=read();y=read();
    kamisato_ayaka[x][y]=read();
    xx=read();yy=read();
    kamisato_ayaka[xx][yy]=read();
    genshin_impact=n*n-2;
    if(x==xx&&y==yy)genshin_impact=n*n-1;
    for(int t(1);t<=m;++t)
    {
        x=read(),y=read(),z=read();
        for(int i(1);i<=n;++i)
            for(int j(1);j<=n;++j)
                las[i][j]=kamisato_ayaka[i][j];
        if(x==0)
        {
            for(int i(1);i<=n;++i)
                for(int j(1),k(2);j<=n&&k<=n;++k)
                {
                    for(;!kamisato_ayaka[k][i]&&k<n;++k);//跳过空格
                    if(kamisato_ayaka[j][i]==kamisato_ayaka[k][i]&&kamisato_ayaka[j][i])//这俩相同
                        kamisato_ayaka[k][i]<<=1,
                        fontaine+=kamisato_ayaka[k][i],
                        ++genshin_impact,
                        kamisato_ayaka[j][i]=0;
                        
                    else j=k;
                }
            for(int i(1);i<=n;++i)
                for(int j(1),k(1);j<=n;++j,++k)
                {
                    for(;!kamisato_ayaka[j][i]&&j<n;++j);
                    kamisato_ayaka[k][i]=kamisato_ayaka[j][i];
                    if(j!=k)kamisato_ayaka[j][i]=0;
                }
        }
        else if(x==1)
        {
            for(int i(1);i<=n;++i)
                for(int j(n),k(n-1);j>=1&&k>=1;--k)
                {
                    for(;!kamisato_ayaka[k][i]&&k>1;--k);
                    if(kamisato_ayaka[j][i]==kamisato_ayaka[k][i]&&kamisato_ayaka[j][i])
                        kamisato_ayaka[k][i]<<=1,
                        fontaine+=kamisato_ayaka[k][i],
                        ++genshin_impact,
                        kamisato_ayaka[j][i]=0;
                    else j=k;
                }
            for(int i(1);i<=n;++i)
                for(int j(n),k(n);j>=1&&k>=1;--j,--k)
                {
                    for(;!kamisato_ayaka[j][i]&&j>1;--j);
                    kamisato_ayaka[k][i]=kamisato_ayaka[j][i];
                    if(j!=k)kamisato_ayaka[j][i]=0;
                }
        }
        else if(x==2)
        {
            for(int j(1);j<=n;++j)
                for(int i(1),k(2);i<=n&&k<=n;++k)
                {
                    for(;!kamisato_ayaka[j][k]&&k<n;++k);
                    if(kamisato_ayaka[j][i]==kamisato_ayaka[j][k]&&kamisato_ayaka[j][i])
                        kamisato_ayaka[j][k]<<=1,
                        fontaine+=kamisato_ayaka[j][k],
                        ++genshin_impact,
                        kamisato_ayaka[j][i]=0;
                    else i=k;
                }
            for(int j(1);j<=n;++j)
                for(int i(1),k(1);i<=n&&k<=n;++i,++k)
                {
                    for(;!kamisato_ayaka[j][i]&&i<n;++i);
                    kamisato_ayaka[j][k]=kamisato_ayaka[j][i];
                    if(i!=k)kamisato_ayaka[j][i]=0;
                }
        }
        else
        {
            for(int j(1);j<=n;++j)
                for(int i(n),k(n-1);i>=1&&k>=1;--k)
                {
                    for(;!kamisato_ayaka[j][k]&&k>1;--k);
                    if(kamisato_ayaka[j][i]==kamisato_ayaka[j][k]&&kamisato_ayaka[j][i])
                        kamisato_ayaka[j][k]<<=1,
                        fontaine+=kamisato_ayaka[j][k],
                        ++genshin_impact,
                        kamisato_ayaka[j][i]=0;
                    else i=k;
                }
            for(int j(1);j<=n;++j)
                for(int i(n),k(n);i>=1&&k>=1;--i,--k)
                {
                    for(;!kamisato_ayaka[j][i]&&i>1;--i);
                    kamisato_ayaka[j][k]=kamisato_ayaka[j][i];
                    if(i!=k)kamisato_ayaka[j][i]=0;
                }
        }
        bool gssa=0,tiao=0;
        for(int i(1);i<=n;++i)
        {
            for(int j(1);j<=n;++j)
            {
                if(kamisato_ayaka[i][j]!=las[i][j]){tiao=1;break;}
                if(i==n&&j==n){write(t-1,'\n'),gssa=1;break;}
            }
            if(gssa)break;
            if(tiao)break;
        }
        if(gssa)break;
        tot=0;
        y%=genshin_impact;++y;
        for(int i(1);i<=n;++i)
        {
            for(int j(1);j<=n;++j)
            {
                if(!kamisato_ayaka[i][j])++tot;
                if(tot==y)
                {
                    kamisato_ayaka[i][j]=z,
                    --genshin_impact;
                    break;
                }
            }
            if(tot==y)break;
        }
        if(t==m)write(t,'\n');
    }
    write(fontaine,'\n');
    flush();
    return 0;
}

T2子集

\(25pts\)

  • 叕是唯一得到的分。

题解 \(\Huge 🈶\)

  • \(k=1\) 的分很好得,输出 \(Yes\) 并从 \(1\) 输出到 \(n\) 即可。
  • \(\dfrac nk\) 为偶数的分也很好得,一大一小组合即可。
  • \(n=k\&n\not=1\) 的分也很好得,输出 \(No\) 即可。
  • 对于 \(n\) 为偶数, \(\dfrac nk\) 为奇数的情况,可以证明无解。

\(S\) 为每组数的和, \(k=2a\) , \(\dfrac nk=2b+1\) ,则 $$S=\frac{(2a(2b+1)+1)2a(2b+1)}{2\times 2a}$$

化简得 $$S=\frac {(4ab+2a+1)(4ab+2a)}{4a}$$

最后得出 $$S=4ab^2+4ab+a+b+\frac 12$$

因此无法平均分配,则无解。

  • 之后就得到 \(25pts\) 的好成绩。
  • 对于 \(n\)\(m\) 都为奇数的情况,应该怎么办呢?(打表 \(qwq\)
  • 先看看 \(n=15\)\(k=5\) 的情况。
\(1\) \(2\) \(3\) \(Sum\)
\(1\) \(8\) \(15\) \(24\)
\(2\) \(9\) \(13\) \(24\)
\(3\) \(10\) \(11\) \(24\)
\(4\) \(6\) \(14\) \(24\)
\(5\) \(7\) \(12\) \(24\)
  • 再看看 \(n=15\)\(k=3\) 的情况。
\(1\) \(2\) \(3\) \(4\) \(5\) \(Sum\)
\(1\) \(5\) \(9\) \(15\) \(10\) \(40\)
\(2\) \(6\) \(7\) \(14\) \(11\) \(40\)
\(3\) \(4\) \(8\) \(13\) \(12\) \(40\)
  • 最后看看 \(n=45\)\(k=9\) 的情况。
\(1\) \(2\) \(3\) \(4\) \(5\) \(Sum\)
\(1\) \(14\) \(27\) \(45\) \(28\) \(115\)
\(2\) \(15\) \(25\) \(44\) \(29\) \(115\)
\(3\) \(16\) \(23\) \(43\) \(30\) \(115\)
\(4\) \(17\) \(21\) \(42\) \(31\) \(115\)
\(5\) \(18\) \(19\) \(41\) \(32\) \(115\)
\(6\) \(10\) \(26\) \(40\) \(33\) \(115\)
\(7\) \(11\) \(24\) \(39\) \(34\) \(115\)
\(8\) \(12\) \(22\) \(38\) \(35\) \(115\)
\(9\) \(13\) \(20\) \(37\) \(36\) \(115\)
  • 感觉打表找规律是最简单的(蒟蒻没有打表的时候怎么也没想明白)。
  • 也就是说,第一列从 \(1\)\(n\) 直接排。
  • 到第二列时定义 \(mid=\dfrac{k+1}2\) ,之后小于 \(mid\)\(i+k+mid-1\) ,大于 \(mid\)\(i+mid-1\)
  • 到第三列时,就可以根据前两列以及前三个数的和来求出了。
  • 再往后,就可以按照偶数的情况排列了!
  • 之后就愉快的 \(AC\)\(qwq\)

代码 \(\Huge 🈶\)

#include<bits/stdc++.h>
//#define int long long
#define N (1000010)
#define I i
#define J j
#define itn int
#define Int int
#define sort stable_sort
using namespace std;
namespace IO
{
    #define ll long long
    const int MAX=1<<24;
    char buf[MAX],*p1=buf,*p2=buf;
    char obuf[MAX],*o=obuf;
    #define gc()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<24,stdin),p1==p2)?EOF:*p1++)
    //template<typename T>
    //inline T read()
    inline int read()
    {
        int x=0;bool f=1;
        char c=gc();
        for(;c<48||c>57;c=gc())if(c=='-')f=0;
        for(;c>=48&&c<=57;c=gc())x=(x<<3)+(x<<1)+(c^48);
        return f?x:~x+1;
    }
    void print(ll x){if(x>9)print(x/10);*o++=(x%10)+'0';}
    void pit(ll x){if(x<0)*o++='-',x=~x+1;print(x);}
    void write(ll x,char ed){pit(x);*o++=ed;}
    void flush(){fwrite(obuf,o-obuf,1,stdout);}
    #undef ll
}
using IO::read;using IO::write;using IO::flush;using std::complex;
inline int min(int x,int y){return y&((y-x)>>31)|x&(~(y-x)>>31);}
inline int max(int x,int y){return x&((y-x)>>31)|y&(~(y-x)>>31);}
inline void swap(int &x,int &y){int tmp=x;x=y;y=tmp;}
long long n,m;
void init_set()
{
    #ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
}
int genshin_impact;
vector<signed>honkai_star_rail[1000010];
signed main()
{
    init_set();
    for(int t(read());t;--t)
    {
        n=read();m=read();
        if(m==1)
        {
            *IO::o++='Y',*IO::o++='e',*IO::o++='s',*IO::o++='\n';
            for(int i(1);i<=n;++i)write(i,' ');
            *IO::o++='\n';
        }
        else if(n==m)*IO::o++='N',*IO::o++='o',*IO::o++='\n';
        else if(!(n&1)&&((n/m)&1))*IO::o++='N',*IO::o++='o',*IO::o++='\n';
        else
        {
            *IO::o++='Y',*IO::o++='e',*IO::o++='s',*IO::o++='\n';
            if(!((n/m)&1))
                for(int i(1);i<=(n>>1);++i)
                {
                    write(i,' '),write(n-i+1,' ');
                    if(!(i%((n/m)>>1)))*IO::o++='\n';
                }
            else
            {
                int mid(m+1>>1);
                genshin_impact=((m*3+1)>>1)*(m*3)/m;
                for(int i(1);i<=m;++i)
                    honkai_star_rail[i].push_back(i);
                for(int i(1);i<=m;++i)
                    if(i<=mid)
                        honkai_star_rail[i].push_back(m+(m>>1)+i);
                    else 
                        honkai_star_rail[i].push_back((m>>1)+i);
                for(int i(1);i<=m;++i)
                    honkai_star_rail[i].push_back(genshin_impact-honkai_star_rail[i][0]-honkai_star_rail[i][1]);
                for(int j(1),cnt=(m*3);j<=m&&cnt<n;++j)
                    for(int i(1);i<=(n/m-3)>>1;++i)
                        honkai_star_rail[j].push_back(n-cnt+m*3),
                        honkai_star_rail[j].push_back(++cnt);
                for(int i(1);i<=m;++i)
                {
                    for(int j:honkai_star_rail[i])
                        write(j,' ');
                    *IO::o++='\n';
                }
                for(int i(1);i<=m;++i)
                    honkai_star_rail[i].clear();
            }
        }
    }
    flush();
    return 0;
}

T3混凝土粉末

\(0pts\)

题解 \(\Huge 🈚\)

代码 \(\Huge 🈚\)

T4排水系统

\(0pts\)

题解 \(\Huge 🈚\)

代码 \(\Huge 🈚\)