首页 > 其他分享 >2023.11.10测试

2023.11.10测试

时间:2023-11-12 19:45:22浏览次数:31  
标签:10 2023.11 leq 测试 操作 点权 rightarrow

\[\text{NOIP模拟赛-2023.11.10} \]

T1 进步科学

一棵以 \(1\) 为根的 \(n\) 个点的树,初始时所有点的点权都是 \(0\),每个点有期望的点权(\(0\) 或 \(1\))。每次操作可以选择一个点 \(i\) 变化它的点权,这个操作效果会在一秒后传给它的父亲,在 \(j\) 秒后传给它的 \(j\) 级祖先。特别的,如果有多个操作效果同时叠加于一个点,则该点不改变点权也不传递操作效果。每秒只能操作一次,问最少几秒能达到期望效果

\(1\leq n\leq 16\)

一眼状压,但是不会,于是贪心,最后怒砍 \(10\) 分

考虑枚举答案,设 \(f_{i,s}=0/1\) 表示第 \(i\) 秒时 \(s\) 状态是否可行,转移 \(f_{i,s}\rightarrow f_{i+1,s'}\)。问题就出在这个 \(s'\) 怎么搞

我一开始想 \(s\rightarrow s'\) 过于困难,但是其实有一种处理方法。我们可以将产生 \(s\) 的操作,即前 \(i\) 秒的这些操作全部后移一秒操作,然后直接考虑第一秒操作哪个点。那只要我们预处理出每个点操作 \(j\) 次的状态 \(sat_{i,j}\) 即可

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

const int N=20,SS=(1<<16)+10;

int n,m,fa[N];
int sta[N][N],des,f[N][SS];

int main()
{
	freopen("decoration.in","r",stdin);
	freopen("decoration.out","w",stdout);

	scanf("%d",&n);
	for(int i=2; i<=n; i++)
		scanf("%d",&fa[i]);
	for(int i=1; i<=n; i++)
	{
		int x;  scanf("%d",&x);
		des^=(1<<i-1)*x;
	}

	for(int i=1; i<=n; i++)
	{
		int k=i;
		for(int j=1; j<=n; j++)
		{
			if(k)
				sta[i][j]=sta[i][j-1]^(1<<k-1);
			else
				sta[i][j]=sta[i][j-1];
			k=fa[k];
		}
	}

	f[0][0]=1;  int S=(1<<n)-1;
	for(int i=0; i<=n; i++)
	{
		if(f[i][des])
			return printf("%d\n",i),0;
		for(int s=0; s<=S; s++)
		{
			if(!f[i][s])
				continue;
			f[i+1][s]=1; // cout<<i<<" "<<s<<endl;
			for(int j=1; j<=n; j++)
				f[i+1][s^sta[j][i+1]]=1;
		}
	}
	

	return 0;
}

标签:10,2023.11,leq,测试,操作,点权,rightarrow
From: https://www.cnblogs.com/xishanmeigao/p/17825076.html

相关文章

  • 11.9~10
    上午就上了节化学就来机房了,试图用一种新的方式敲扫描线,然后失败,滚去做P1502窗口的星星了DZ别再直接把我一包纸拿走去上厕所了╰(‵□′)╯贺题解ing下午发现我的方法好像才是很新的方法,然而这道题好像和板子不太一样?反正没看到有我那种写法,恼了看着题解改一天了,都怀疑是我......
  • KubeSphere 社区双周报 | KubeSphere 3.4.1 发布 | 2023.10.27-11.09
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.10.27-2023.11.09。贡献者名单新晋KubeSphereCon......
  • 10.和为k的子数组
    题目概述:给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列解题思路:先进行前缀和处理,再暴力枚举每个子数组,并判断其和是否为k时间复杂度:\(O(n^2)\)代码:classSolution{publicintsubarraySum(int......
  • 20211105李宜时思考题1
    FullIdent方案是一种身份认证和密码协议的方案,其解密过程验证的步骤通常包括以下几个阶段:收集信息:在这一步,收集必要的信息,比如用户的身份信息和相关的密钥。密钥协商:这一步涉及到用户端和服务器端的密钥协商。这通常包括了用户的私钥和服务器的公钥。验证用户身份:......
  • 2023.11.12——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • WorkPlus即时通讯app:10分钟快速搭建,支持局域网私有化部署!
    随着数字通讯的飞速发展,“IM+办公”模式被越来越多的政企组织所接受和采用。然而,公有云IM服务的信息安全问题时有发生,这使得一些政府部门和事业单位对此存在着爱恨交加的复杂心态。在这样的背景下,私有化IM作为一种解决方案逐渐受到关注。私有化IM可以在企业自己的服务器上部署和运......
  • Win10系统共享文件解除连接数限制
    一.方法1、首先在win10系统中点击开始菜单,选择控制面板;2、点击系统和安全;3、点击管理工具;4、点击进入,本地安全策略进行操作设置;5、点击进入,安全设置-本地策略-安全选项”里面的“交互式安全:可缓冲保存的前次登陆个数”,默认的共享最大连接数为20台;6、超过数量的电脑将会被提示无法共......
  • win10系统phpstorm改用PowerShell终端
    习惯了linux的命令行操作,windowns的cmd都不支持,现在好了win10的PowerShell支持了linux命令操作。文件--》设置--》工具--》Terminal将Shellpath路径改为 C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe保存后重启phpstorm,熟悉的linux命令就可以使用了......
  • # (2023-2024-1) (20232410) 《网络》第1周学习总结
    教材学习内容总结网络空间安全的定义,现状,法律,标准。教材学习中的问题和解决过程问题:zuc算法有何创新性问题解决方案:运用ai提问回答感悟:网络空间安全是一门综合性学科,在信息化时代中有着重要的战略意义。参考资料《网络空间安全导论》网络空间安全导论书单......
  • P1077-DP【黄】
    昨天好几道题没做出来很郁闷,结果今天上来半小时不到就直接做出一道黄DP题了,不错,又有写题的冲动了。这道题我一直被那个“因为方案数可能很多,请输出方案数对1000007取模的结果。”这句话吓到了,因为我在想如果涉及求最优方案,那么势必会有比较,那么既然取了摸还怎么比较啊?不会另要开......