首页 > 其他分享 >『模拟赛』暑假集训CSP提高模拟13

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

时间:2024-08-01 20:28:07浏览次数:14  
标签:13 ch fx int zc dep lx CSP 模拟

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



完结撒花~

标签:13,ch,fx,int,zc,dep,lx,CSP,模拟
From: https://www.cnblogs.com/Ratio-Yinyue1007/p/18337435

相关文章

  • 暑假集训CSP提高模拟13
    暑假集训CSP提高模拟13暑假集训CSP提高模拟13组题人:@joke3579\(T1\)P185.小孩召开法1\(43pts\)原题:[ABC278F]Shiritori部分分未知\(pts\):乱搞。正解状压加记忆化搜索。记录所选字符串的状态及上一个选择的字符串。当存在对方必败时自己必胜。点击......
  • 暑假集训csp提高模拟13
    赛时rank28,T144,T20,T330,T45啊哈哈哈哈哈,我要挂没啦,啊哈哈哈哈哈哈哈哈哈最后10min的心路历程感觉应该又要挂分了(11:20)感觉一分没有(11:23)要被薄纱了(11:25)感觉人均AK,就我不会(11:25)啊哈哈哈哈哈,我太菜了,我要AF0了(11:27)啊哈哈哈,看了一眼自己代码,我咋只......
  • 洛谷P3161 [CQOI2012] 模拟工厂 贪心策略的思考
    P3161[CQOI2012]模拟工厂传送门:模拟工厂问题描述:初始的生产力和商品分别为1和0。每一个时刻可以选择两个动作:生产力+1或者生产生产力数量的商品。现在有很多个订单,每个订单有三个部分:时间t,需要多少商品p,可以获得的价值v。现在需要决定各个时刻的动作选择,以及订单是否接取,以期......
  • Luogu P1613 跑路 题解 [ 蓝 ] [ 倍增 ] [ Floyd 最短路 ] [ 状压 dp ]
    跑路:绝佳倍增好题,思路是化\(2^k\)为\(1\),倍增起预处理作用。最近不知道是撞了什么运,前一脚看的是绿题,写完之后交一发,发现直接被lxl升蓝了,血赚。思路:Floyd首先观察到每次走\(2^k\)的代价为\(1\),我们可以预处理出每次走\(2^i\)能到哪些点。但为了让这题的代码更好实......
  • CodeForces 1132B Discounts
    题目链接:CodeForces1132B【Discounts】思路    因为使用coupons购买q[i]块巧克力,不需要付最便宜的那块巧克力的钱,所以为了使得优惠最大化,所以可以在使用优惠券的时候购买最贵的p[i]块巧克力,所以计算所有巧克力价格高之和和排序后很快能得到答案。代码#include<cst......
  • 2024 CT02 模拟赛
    \(\text{Contest1}\)\(\text{HeavenlyAltitudes}\)\(\text{description}\)给你一个集合\(S=\{1,2,...,n\}\),要求分成\(m\)段,段之间不考虑顺序,段中的元素不考虑顺序,现给你每段的最小值\(a_1,a_2,...,a_m\),求有多少种合法的划分方式,答案对\(10^9+7\)取模。\(1......
  • [赛记] 暑假集训CSP提高模拟 #N/A 总结
    没写的有些多,所以一块写EVA原题:忘了;贪心;赛时将每条鱼放在了右端点,导致分的情况太多,最后没打完;贪心的想一下,将每条鱼放在网的左或右端点肯定不会更劣;将每条鱼作为网的左端点,然后利用相对运动的知识统计出剩下$n-1$条鱼的进入和出去网的范围的时间(可以将出去的时间稍......
  • 代码随想录day16 || 513 树左下角值,112 路径之和,116 中序后序遍历构造二叉树
    切片传递问题question:什么情况下传递切片,什么情况下传递切片指针,为什么有时候会修改原始副本,有时候又不会呢?typesli[]intfuncmain(){ slice:=[]int{1} fmt.Printf("slice:%p\n",slice) change1(slice) fmt.Println("=================================") s2:=......
  • CSP-J2019公交换乘
    马上CSP2024了,做题ing...(题目描述戳它思路1.用结构体双端队列存票,用双端队列的原因是后面要遍历2.结构体元素:price+time+used3.过期的票要及时pop4.不要一边遍历一边pop,用used标记代码#include<bits/stdc++.h>usingnamespacestd;structTicket{intprice......
  • SSCI新质生产力测算数据集(2013-2022年)
    数据来源:参考发表于InternationalReviewofEconomicsandFinance上的文章,基于He和Liu(2024)的做法,构建了一个衡量新质生产力的指标体系,通过熵值法对各个指标进行计算得到各省份新质生产力水平数据。时间跨度:2013-2022年数据范围:省级层面包含指标:样例数据:测算代码:包......