首页 > 其他分享 >P8819 [CSP-S 2022] 星战 做题记录

P8819 [CSP-S 2022] 星战 做题记录

时间:2023-09-02 13:33:04浏览次数:45  
标签:星战 pri sum nowsum iu iv 2022 CSP op

不可以,总司令。

题目传送门

思路

首先,当图中每个点出度为 \(1\) 时,从任一点出发必定会进入环。

证明:假设有一点不符合,则沿着它的出边一直走会到一个出度为 \(0\) 的「终点」,与每个点出度为 \(1\) 矛盾。

想通了这点,这题就不难了。

发现出度要 \(O(n)\) 维护,入度可以 \(O(1)\) 维护,考虑 Hash。

具体地,给每个点赋一个随机权值 \(w(p)\),入度为进入它的点的权值和,则大概率 \(\sum_{p \in V} w(p) = \sum p.\mathrm{in}.\mathrm{wei} \iff \sum p.\mathrm{in}= \lvert V \rvert\)。

Code

#include <iostream>
#include <random>
#define UP(i,s,e) for(auto i=s; i<e; ++i)
#define DOUBLE_HASH 1
using std::cin; using std::cout;
std::mt19937 rdna(0x383494);
using ll = long long;
using ull = unsigned ll;
using i128 = __int128;
constexpr ll MOD1 = 0x383494000111CCF;
constexpr ll MOD2 = 0x383494000222CCF;
constexpr int N = 5e5;
namespace m{ // }{{{
#if DOUBLE_HASH
struct Num{
	ll val1, val2;
	Num &operator=(Num const&)=default;
	Num &operator=(ll x){ val1 = x%MOD1; val2 = x%MOD2; return *this; }
	Num(){}
	Num(ll x, ll y):val1(x%MOD1), val2(y%MOD2){}
	bool operator==(Num const b){
		return (val1-b.val1)%MOD1 == 0 && (val2-b.val2)%MOD2 == 0;
	}
	Num &operator+=(Num const b){
		val1 += b.val1;
		val1 %= MOD1;
		val2 += b.val2;
		val2 %= MOD2;
		return *this;
	}
	Num &operator-=(Num const b){
		val1 -= b.val1;
		val1 %= MOD1;
		val2 -= b.val2;
		val2 %= MOD2;
		return *this;
	}
};
#else
using Num = ull;
#endif
Num pri[N], sum[N], allsum[N]; 
// sum[i]: linked roads, allsum[i]: linked & destroyed
Num nowsum, tot; // all degs; ans when print YES
int in, im;
void work(){
	cin >> in >> im; 
	UP(i, 0, in){
#if DOUBLE_HASH
		pri[i] = {(ll)rdna(), (ll)rdna()};
#else
		pri[i] = (ll)rdna();
#endif
		tot += pri[i];
	}
	UP(i, 0, im){
		int iu, iv;
		cin >> iu >> iv; iu--, iv--;
		allsum[iv] += pri[iu];
	}
	UP(i, 0, in){
		sum[i] = allsum[i];
		nowsum += sum[i];
	}
	int iq; cin >> iq;
	UP(i, 0, iq){
		int op, iu, iv;
		cin >> op >> iu, iu--;
		if(op&1) cin >> iv, iv--;
		if(op == 1){
			sum[iv] -= pri[iu];
			nowsum -= pri[iu];
		} else if(op == 2){
			nowsum -= sum[iu];
			sum[iu] = 0;
		} else if(op == 3){
			sum[iv] += pri[iu];
			nowsum += pri[iu];
		} else {
			nowsum -= sum[iu];
			nowsum += allsum[iu];
			sum[iu] = allsum[iu];
		}
		if(nowsum == tot){
			cout << "YES\n";
		} else {
			cout << "NO\n";
		}
	}
}
} // {}}}
int main(){std::ios::sync_with_stdio(0); cin.tie(0); m::work(); return 0;}

标签:星战,pri,sum,nowsum,iu,iv,2022,CSP,op
From: https://www.cnblogs.com/x383494/p/17673594.html

相关文章

  • 【游记】CSP2023赛前集训游记
    9.1赛前集训的前一天。学校报道的日子,大半天都在yzsy上课。晚上回来没有颓废(很难得啊),把线性基学了一下,然后就开始补数学,从\(9\)点补到\(10\)点。然后只写了几章,看来效率不是只有一点点底啊。然后写了一篇脸滚键盘,总结了一下前半段OI生涯所犯的一些错误,汲取一下经验。想......
  • Kali2022 安装PyCharm
    PyCharm是一个集成的Python开发环境工具。能够调试代码、生成和运行代码。Pycharm是python开发人员不可缺少的神器。环境要求最少2GB内存,建议8GB内存1024x768最低屏幕分辨率Python2.7,或Python3.5或更高版本本文将在Kali2022中进行安装。下载安装包首先我们到PyCharm的......
  • 开发小技巧 - 合理使用Visual Studio 2022内置任务列表(TODO)
    前言在开发编码过程中经常会因为各种问题而打断自己的思绪和开发计划,可能会导致本来准备开发或者需要测试的功能到要上线的时候才想起来没有做完。这种情况相信很多同学都遇到过,咱们强大的VisualStudio内置了一个任务列表(TODO)能让我们当做待办清单功能使用,接下来我们快速了解一......
  • OpenCV的安装与配置(VS2022)
    ......
  • 【考后总结】9 月 CSP-S 模拟赛 1
    9.1CSP模拟32AfterHours-TheWeekndThoughtIalmostdiedinmydreamagain(Baby,almostdied)Fightin'formylife,Icouldn'tbreatheagainI'mfallin'intonew(Oh,oh)Withoutyougoin'smooth(Fallin'in)'Cau......
  • 【团队协作】都2022年了,前后端合作开发还不使用Apifox?
    文章目录前言一、Apifox介绍二、安装使用三、创建接口文档......
  • 电路仿真软件Proteus中文版下载,Proteus2022最新版 中文版介绍
    ProteusPro仿真软件是LabcenterElectronics公司(中国总代理为广州风标电子技术有限公司)的EDA工具软件,是一款适用于单片机教学、单片机应用开发领域的专员人员使用的仿真软件。ProteusPro支持IAR、Keil和MPLAB等多种编译器,软件内的模型处理器支持多种类型的格式,是世界上著名单片机......
  • 【专题】2022年中国母婴行业新媒体营销价值研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33528报告合集显示,由于新生儿出生率下降,母婴行业进入了存量时代。在这一背景下,抖音电商成为越来越多消费者的选择,尤其是24-40岁的三四线城市女性。这一消费群体更倾向于在线上购买,给母婴行业的线上销售带来了巨大的机遇。阅读原文,获取专题报告合集......
  • 2023西安/成都/深圳CSPM-3国标项目管理含金量真高,太值了
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • 2022年iOS上架及证书最新申请流程
    最近的15年,手机行业无论怎么变,ios系统依然还是占据着行业的榜首位置,而打包一个苹果的app,门槛则比较高。主要的原因在于苹果app的开发,打包时需要p12格式的证书文件和描述文件profile文件(在hbuilder和apicloud这些h5打包平台,ios证书又叫私钥证书。),而这些文件的创建则又需要苹果mac电......