首页 > 其他分享 >P2664 树上游戏

P2664 树上游戏

时间:2023-10-11 09:11:22浏览次数:32  
标签:连通 P2664 颜色 游戏 siz 路径 树上 每个

P2664 树上游戏

解法一:淀粉的另一种形式。

正常淀粉求得是每条路径,此题要求每个点为端点的所有路径,所以处理当前连通块时不仅要考虑根的答案,也要考虑根的子树对另一棵子树的影响

解法二:考虑颜色的贡献。

跳出对点的答案的计算,思考每种颜色分别的贡献。对于每种颜色,\(i\) 对于 \(j\) 没有该颜色的贡献,当且仅当 \(i,j\) 之间的路径上没有这种颜色,所以考虑删掉每一种颜色,每个点的答案就是 \(n-\text{i 所在连通块的 siz}\)。

另一个性质:每个点只有一种颜色,所以每个点都只会是它自己颜色的分割点,所以一个点只会是一个连通块的根,而以 \(x\) 为根连通块的颜色就是 \(a_{fa_x}\),可以把一个颜色连通块的 \(siz\) 存在这个连通块的根上,从上向下计算。具体实现使用了很不聪明的虚树,被题解 \(\mathcal O(n)\) 吊打/kk。

标签:连通,P2664,颜色,游戏,siz,路径,树上,每个
From: https://www.cnblogs.com/WrongAnswer90-home/p/17756236.html

相关文章

  • 项目一:猜数字游戏
    猜数字游戏:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>voidgame()//自定义函数{ intguess=0; intnumber=0; number=rand()%100; while(1) { printf("请输入要猜的数字:"); scanf("%d",&guess); ......
  • 搭建游戏服务端初始准备
    1.  开发游戏服务端,一般会从编写联网的程序着手,因为游戏服务端最重要的任务是处理网络请求。尽管网络编程很重要,但从“学以致用”的角度来看,先“不择手段”(用现成的库)把游戏做出来,再深入了解,也未尝不可。......
  • C语言编写的“猜数字“小游戏
    2023年10月7日,今天给大家带来的是用C语言编写的一个猜数字小游戏,使用了循环就可以完成  首先我们需要先做一个简单的目录,这样方便多次使用,增加了游戏的可玩性,看代码: 1voida_catalogue()2{3printf("************************************\n");4prin......
  • 虚拟机备份的wim镜像部署到物理机上出现游戏无法打开的解决办法
    虚拟机备份的wim镜像部署到物理机上时,注册表仍然残留了虚拟机的特征,部分游戏在启动时会检测到虚拟机痕迹,以崩坏·星穹铁道为例,打开游戏提示:“游戏无法运行在虚拟环境中,请更换设备后重试”。解决办法:定位到注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Cla......
  • 做了一个简单的充气小游戏
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>voidmenu(){ printf("**************GamicCard**************\n"); printf("***********press1tostart***********\n"); printf("***********pre......
  • 【Python】数独游戏
    StartimportrandomclassSudokuGenerator:BOARD_SIZE=9SUBGRID_SIZE=3def__init__(self)->None:self.board=[[0for_inrange(self.BOARD_SIZE)]for_inrange(self.BOARD_SIZE)]defgenerate(self):self.fill_va......
  • 游戏开发 - 图片的格式
    PPM PNG JPEG 压缩 压缩算法 压缩策略 基于手机的项目 Android支持的压缩格式IOS支持的压缩格式 项目中遇到的问题和解决方案 后续的问题反走样与在游戏中的影响 采样方式与游戏中的影响......
  • 【JAVA】数独游戏
    StartpublicclassSudokuGame{publicstaticvoidmain(String[]args){SudokuGeneratorgenerator=newSudokuGenerator();int[][]borad=generator.generate();Sudokusudoku=newSudoku(borad);sudoku.printf();......
  • 80、90童年回忆之小霸王游戏机网页版
    前言在如今快节奏的生活中,我们常常追逐着最新潮流,迷失了曾经的经典与回忆。现在,有一种游戏机能够带你回到小时候,让你重温那些令人难以忘怀的游戏时光,这就是小霸王游戏机!作为80年代和90年代最受欢迎的游戏机之一,它陪伴了整整一代人的成长。本文介绍小霸王游戏机网页版架设......
  • C语言练习--拿球小游戏
    题目:一共100个球,两人轮流拿,每人每次最多拿5个,最后一个拿的人赢;如果我先拿,怎么拿一定会赢?#include<stdio.h>#include<stdlib.h>#include<time.h>intsc();intmain(){//设置随机数生成器的种子为当前时间srand(time(NULL));intbal=100;......