『模拟赛』暑假集训CSP提高模拟13

Rank

上半最后一次正式模拟赛,感觉还彳亍

image

A. 小孩召开法1

原[ABC278F] Shiritori

签到题。

博弈论+状压+记搜秒了,感觉不用太细说。

不过是暑假以来第一次首 A 啊,开始还胡乱想 SG 定理的做法,后来发现不用那么复杂。

点击查看代码
#include<bits/stdc++.h>
#define fo(x,y,z) for(register int (x)=(y);(x)<=(z);(x)++)
#define fu(x,y,z) for(register int (x)=(y);(x)>=(z);(x)--)
using namespace std;
typedef long long ll;
#define lx ll
inline lx qr()
{
	char ch=getchar();lx x=0,f=1;
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
	return x*f;
}
#undef lx
#define qr qr()
const int Ratio=0;
const int N=1e5+5;
const int mod=998244353;
int n,sg[1<<17][17];
string s[17];
namespace Wisadel
{
    int Wdfs(int now,int las)
    {
        if(sg[now][las]!=-1) return sg[now][las];
        fo(i,1,n)
            if(!(now&(1<<(i-1))))
            {
                bool can=0;
                if(!las) can=1;
                else
                {
                    int len=s[las].size();
                    if(s[las][len-1]==s[i][0]) can=1;
                }
                if(!can) continue;
                if(!Wdfs((now|(1<<(i-1))),i)) return sg[now][las]=1;
            }
        return sg[now][las]=0;
    }
    short main()
    {
        // freopen(".in","r",stdin),freopen(".out","w",stdout);
        memset(sg,-1,sizeof sg);
        n=qr;
        fo(i,1,n) cin>>s[i];
        if(Wdfs(0,0)) printf("First\n");
        else printf("Second\n");
        return Ratio;
    }
}
int main(){return Wisadel::main();}

B. 小孩召开法2

原LibreOJ 6669.Nauuo and Binary Tree

又挂在交互题上了。

果然是对树不敏感导致的,询问次数超了。

正解是逐层遍历,通过找最近公共祖先来优化询问的次数。

点击查看代码
#include<bits/stdc++.h>
#define fo(x,y,z) for(register int (x)=(y);(x)<=(z);(x)++)
#define fu(x,y,z) for(register int (x)=(y);(x)>=(z);(x)--)
using namespace std;
typedef long long ll;
#define lx int
inline lx qr()
{
	char ch=getchar();lx x=0,f=1;
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
	return x*f;
}
#undef lx
#define qr qr()
const int Ratio=0;
const int N=3e3+5;
const int mod=998244353;
int n;
int fx[N],dep[N],in[N],dpt;
vector<int>v[N];
unordered_map<int,int>mp;
namespace Wisadel
{
    short main()
    {
        // freopen(".in","r",stdin),freopen(".out","w",stdout);
        n=qr;
        fo(i,2,n)
        {
            printf("? 1 %d\n",i);fflush(stdout);
            dep[i]=qr;v[dep[i]].emplace_back(i);
            if(dep[i]==1) fx[i]=1;
            dpt=max(dpt,dep[i]);
        }
        fo(i,2,dpt)
            for(int x:v[i])
            {
                int lca=1;mp.clear();
                fo(j,0,v[i-1].size()-1)
                {
                    int y=v[i-1][j];
                    if(j==v[i-1].size()-1) 
                    {
                        fx[x]=y;in[y]++;
                        break;
                    }
                    if(in[y]==2) continue;
                    int zc=y;
                    while(zc&&zc!=lca&&!mp[zc]) zc=fx[zc];
                    if(zc!=lca) continue;
                    printf("? %d %d\n",x,y);fflush(stdout);
                    int dis=qr;
                    if(dis==1)
                    {
                        fx[x]=y;in[y]++;
                        break;
                    }
                    int lcdp=(dep[x]+dep[y]-dis)/2;
                    zc=y;
                    while(dep[zc]!=lcdp) mp[zc]=1,zc=fx[zc];
                    lca=zc;
                }
            }
        printf("! ");
        fo(i,2,n) printf("%d ",fx[i]);
        fflush(stdout);
        return Ratio;
    }
}
int main(){return Wisadel::main();}

C. 小孩召开法3

原P6240 好吃的题目

赛时由于又又被 T2 硬控了,这道题也是只打了个最低级的暴力,每次询问做一次 dp。

正解是猫树分治,挺新奇的玩意,(下午光颓了还没细学

D. 小孩召开法4

原[AGC056B] Range Argmax

更抽象的题,不评价了。

这回排的高主要是因为把 T1 做出来了,感觉 T2 T3 都还有提高的空间。

嗯嗯好的所以明天有人愿意跟我组队吗(呜呜
嗯嗯好的所以明天有人愿意跟我组队吗(呜呜
嗯嗯好的所以明天有人愿意跟我组队吗(呜呜
嗯嗯好的所以明天有人愿意跟我组队吗(呜呜
嗯嗯好的所以明天有人愿意跟我组队吗(呜呜

可能想看的

image



完结撒花~

posted @   Ratio_Y  阅读(67)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示