首页 > 其他分享 >2024初三集训模拟测试4

2024初三集训模拟测试4

时间:2024-02-22 12:24:56浏览次数:24  
标签:weight vis ll 0pts 2024 40000 void 初三 集训

2024初三集训模拟测试4

\(T1\) 打赌 \(0pts\)

\(T2\) 舞会 \(0pts\)

\(T3\) 最小生成树 \(0pts\)

  • 经打表,有最小生成树的边权和为 \(n-1\) ,构造每条边上的两端点互质即可。

  • 故 \(\prod\limits_{i=1}^{n}\varphi(i)\) 即为所求。

    点击查看代码
    const ll p=100000007;
    ll phi[40000],prime[40000],vis[40000],len=0;
    void euler(ll n)
    {
    	memset(vis,0,sizeof(vis));
    	phi[1]=1;
    	for(ll i=2;i<=n;i++)
    	{
    		if(vis[i]==false)
    		{
    			len++;
    			prime[len]=i;
    			phi[i]=i-1;
    		}
    		for(ll j=1;j<=len&&i*prime[j]<=n;j++)
    		{
    			vis[i*prime[j]]=1;
    			if(i%prime[j]==0)
    			{
    				phi[i*prime[j]]=phi[i]*prime[j];
    				break;
    			}
    			else
    			{
    				phi[i*prime[j]]=phi[i]*(prime[j]-1);
    			}
    		}
    	}
    }
    int main()
    {
    	freopen("mst.in","r",stdin);
    	freopen("mst.out","w",stdout);
    	ll n,ans=1,i;
    	cin>>n;
    	euler(n);
    	for(i=1;i<=n;i++)
    	{
    		ans=ans*phi[i]%p;
    	}
    	cout<<ans<<endl;
    	fclose(stdin);
    	fclose(stdout);
    	return 0;
    }
    

\(T4\) 买汽水 \(0pts\)

  • 部分分

    • \(50pts\)
      • 超大背包,暴力 \(DFS\) 枚举每天买或不买饮料。

      • 时间复杂度为 \(O(2^{n})\) 。

        点击查看代码
        ll p[50],ans=0;
        void dfs(ll x,ll n,ll m,ll worth,ll weight)
        {
        	if(x==n+1)
        	{
        		if(weight<=m)
        		{
        			ans=max(ans,worth);
        		}
        	}
        	else
        	{
        		if(weight+p[x]<=m)
        		{
        			dfs(x+1,n,m,worth+p[x],weight+p[x]);
        		}
        		dfs(x+1,n,m,worth,weight);
        	}
        }
        int main()
        {
        	freopen("drink.in","r",stdin);
        	freopen("drink.out","w",stdout);
        	ll n,m,i;
        	cin>>n>>m;
        	for(i=1;i<=n;i++)
        	{
        		cin>>p[i];
        	}
        	dfs(1,n,m,0,0);
        	cout<<ans<<endl;
        	fclose(stdin);
        	fclose(stdout);
        	return 0;
        }
        
  • 正解

    • 考虑优化搜索过程,使用双向搜索。具体地,对于 \([1,\left\lfloor \frac{n}{2}\right\rfloor]\) 进行第一遍搜索,对于得到的价值存到一个 set 里面。对于 \([\left\lfloor \frac{n}{2}\right\rfloor+1,n]\) 进行第二遍搜索,对于得到的价值在 set 里面找到满足 \(\le m-\) 当前重量的最大价值,进行转移即可。
    • 时间复杂度为 \(O(2^{\frac{n}{2}}\log n)\) 。
    点击查看代码
    set<ll>vis;
    ll p[50],ans=0;
    void dfsl(ll x,ll n,ll m,ll worth,ll weight)
    {
        if(x==n+1)
        {
            if(weight<=m)
            {
                vis.insert(worth);
            }
        }
        else
        {
            if(weight+p[x]<=m)
            {
                dfsl(x+1,n,m,worth+p[x],weight+p[x]);
            }
            dfsl(x+1,n,m,worth,weight);
        }
    }
    void dfsr(ll x,ll n,ll m,ll worth,ll weight)
    {
        if(x==n+1)
        {
            if(weight<=m)
            {
                ans=max(ans,worth+(*(--vis.upper_bound(m-weight))));
            }
        }
        else
        {
            if(weight+p[x]<=m)
            {
                dfsr(x+1,n,m,worth+p[x],weight+p[x]);
            }
            dfsr(x+1,n,m,worth,weight);
        }
    }
    int main()
    {
        freopen("drink.in","r",stdin);
        freopen("drink.out","w",stdout);
        ll n,m,i;
        cin>>n>>m;
        for(i=1;i<=n;i++)
        {
            cin>>p[i];
        }
        dfsl(1,n/2,m,0,0);
        dfsr(n/2+1,n,m,0,0);
        cout<<ans<<endl;
        fclose(stdin);
        fclose(stdout);
        return 0;
    }
    

总结

  • 开题顺序 \(T4,T2,T1\) 。
  • 要善于从题目背景中获得信息。

标签:weight,vis,ll,0pts,2024,40000,void,初三,集训
From: https://www.cnblogs.com/The-Shadow-Dragon/p/18027043

相关文章

  • 2024初三集训模拟测试4
    T1打赌简单题,模拟一下即可。T2舞会小贪心,尽量找离自己最近的防止后面的不能找。T3最小生成树显然权值和为\(n-1\),就是连互质的数,然后要求父亲小于儿子,所以欧拉函数一乘即可。T4买汽水正解是分成两组后搜索加剪枝,随机化也能过,数据很水。......
  • 2024.02《高效学习法》
     背口诀、划重点、反复温习……各种方法都试过了,可为什么学习成绩还是没有提高呢?其实,你不是不会学习,而是不知道正确的学习方法!日本学习之神DaiGo公开自己独创并长年使用、科学有效、实践性极高的学习秘籍:想象自己把学习内容输出到10岁的孩子都能听懂、不写学习目标而写你掌......
  • AutoCAD2024画圆或矩形实时预览消失了如何解决?
    最近有小伙伴问这个问题,他在使用AutoCAD绘制图形时,发现画圆或矩形实时预览没有了,如下,画图不容易定位,非常影响画图效率,十分苦恼不知道如何恢复? 正常CAD画圆(或矩形)会显示实时预览,如下:操作步骤:AutoCAD20241、打开AutoCAD2024软件,然后在命令栏输入:DRAGMODE,然后按Enter键......
  • 12.【2024初三集训模拟测试4】
    \(\Huge打了一场模拟赛,又垫底了。qwq\)2024初三集训模拟测试4\(\Huge还是垫底赛大佬。qwq\)赛时差点忘改\(freopen\),用的全是\(T1\)的文件,\(9:30\)才发现,吓\(④\)。T1打赌\(?pts\)又是\(\Huge\%\)你,打赌\(\Huge......
  • 【2024-02-09】连岳摘抄
    23:59银灯守岁未应眠,一听阳春自洒然。更祝明朝风日好,梅花满眼踏新年。                                                 ——《除夜次唐诗韵》明·吴与弼人最大的动......
  • 【2024-02-10】连岳摘抄
    23:59愿保兹善,千载为常。欢笑尽娱,乐哉未央。                                                 ——魏晋·曹植所以孔子说:“道不远人。人之为道而远人,不可以为道。”......
  • 2024-02-21 闲话
    下午打算简化一下研究toolkengpt代码,让ChatGPT解释了一遍发现toolkengpt没有真正调用工具,实在是颠覆认知了。差点就想说词语接龙实现不了agi了。后来看随机向量的一些性质感觉看了也没用,也可能是感觉对他那些多元积分进行感性理解比读符号表达式方便一百倍,第一开始......
  • 2024.2.21 まぁ、この世の中ガチャの引き次第で 何もかも説明つくわけだし?
    模拟赛不知道对于\(d(n)\)很大的数可以做根号质因数分解,直接输完了。中午在外面吃饭,去了一家很有创意和技术的餐馆,西安菜还是有辣的,而且还挺不错。晚上看RMR,A队进了,小蜜蜂能不能进呢,不知道。跳跃DP形式形如高维偏序,于是考虑怎么样来做这个东西。常规做法有点菜,考虑高维......
  • 2024.2 做题记录
    省流:因为一月底回厦门玩然后又回泉州过年,直到2.17才开始做题。[APIO2018]铁人两项圆方树和后缀数组我都想开个贴单独写。考虑关于“简单路径”,在点双上都有很特殊的性质。考虑把原图的圆方树建出来,然后考虑简单路径和圆方树的关系。注意到,在同一点双的两点的简单路径的并集,......
  • 2024.2.21游记
    首先,文对于线段\([A,B]\),\([C,D]\)什么时候相交。\(B\)为\(A\)的祖先,\(D\)为\(C\)的祖先相交有一种情况,在\([A,B]\)上有一个分叉,连接\(C\),然后分叉上面为\(D\),这是候,就会发现\(B\)是\(C\)的祖先,\(D\)是\(A\)的祖先代码形式LCA(B,......