CF1616F Tricolor Triangles(构造、高斯消元)

解析

关键性质:三元环合法等价于边权和模3等于0。

还有一个常识:三元环的级别是O(mm)O(m\sqrt m)O(mm)
证明:
三个点度数都大于 m\sqrt mm 的点不超过Cm3=mmC_{\sqrt m}^3=m\sqrt mCm3=mm 个。
如果含有度数小于m\sqrt mm 的点,考虑从这样的点伸出去的每条边,最多和 m\sqrt mm 条边配对成环,所以也不超过 mmm\sqrt mmm 个。

所以本题暴力找出所有的三元环高斯消元就行了,常数很小。
看题解学会了一直因为惯性懒得学的高斯约旦法。

暴力高消确实挺不容易想到的,总会往神仙构造那边想。
但第一个关键性质没有看出来不太应该。

代码

//luogu
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
using namespace std;const int N=2e5+100;
const int inf=1e9;
const int mod=998244353;
inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}int n,m;
int id[80][80];
int a[5050][270],num;
int ans[270];
void print(int n,int m){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) printf("%d ",a[i][j]);puts("");}puts("");
}signed main(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);#endifint T=read();while(T--){num=0;memset(id,0,sizeof(id));memset(a,0,sizeof(a));memset(ans,0,sizeof(ans));n=read();m=read();for(int i=1;i<=m;i++){int x=read(),y=read(),w=read();id[x][y]=id[y][x]=i;if(w!=-1){++num;a[num][i]=1;a[num][m+1]=w;}      }for(int x=1;x<=n;x++){for(int y=x+1;y<=n;y++){for(int z=y+1;z<=n;z++){if(id[x][y]&&id[y][z]&&id[x][z]){++num;a[num][id[x][y]]=a[num][id[x][z]]=a[num][id[y][z]]=1;a[num][m+1]=0;}}}}//printf("num=%d\n",num);int id=0;//print(num,m+1);for(int i=1;i<=m;i++){int pos=0;for(int j=id+1;j<=num;j++){if(a[j][i]){pos=j;break;}}if(!pos) continue;++id;swap(a[id],a[pos]);if(a[id][i]==2){for(int j=i;j<=m+1;j++) a[id][j]=(3-a[id][j])%3;}for(int j=1;j<=num;j++){if(j!=id&&a[j][i]){//printf("j=%d\n",j);int x=a[j][i];for(int k=i;k<=m+1;k++){a[j][k]=(a[j][k]-x*a[id][k]+6)%3;//printf("  k=%d %d*%d\n",k,a[j][i],a[id][k]);}}}//print(num,m+1);}bool flag=0;for(int i=id+1;i<=num;i++){if(a[i][m+1]){puts("-1");flag=1;break;}}if(flag) continue;for(int i=1;i<=id;i++){for(int p=1;p<=m;p++){if(a[i][p]){ans[p]=a[i][m+1];break;}}}for(int i=1;i<=m;i++) printf("%d ",ans[i]?ans[i]:3);puts("");}return 0;
}
/*
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SignalR2结合ujtopo实现拓扑图动态变化

上一篇文章基于jTopo的拓扑图设计工具库ujtopo&#xff0c;介绍了拓扑设计工具&#xff0c;这一篇我们使用SignalR2结合ujtopo实现拓扑图的动态变化。仅仅作为演示&#xff0c;之前的文章SignalR2简易数据看板演示&#xff0c;用一个小的示例演示了SignalR作为数据看板的用法&a…

树的同构模板题(法1.最小表示法+法2.树哈希)

树的同构problemsolutioncodesolutioncodeproblem 模板题 solution Ⅰ. 最小表示法 将树转化为 0/10/10/1 括号序列&#xff1a;从根开始 dfs\text{dfs}dfs&#xff0c;000 就往下遍历一个儿子&#xff0c;111 就返回&#xff0c;构成一个 2n2\times n2n 的括号序列。 显然…

CF917B MADMAX

CF917B MADMAX 题意&#xff1a; Alice和Bob有一个n个点m条边的DAG&#xff0c;每条边上有一个小写英文字母表示权值&#xff0c;Alice和Bob每人有一个棋子&#xff0c;每个人放在一个节点上&#xff08;可以放在同一个节点上&#xff09;。 第一轮Alice可以沿一条边把棋子移…

CF1534F:Falling Sand(tarjan、贪心、dp)

解析 本题做的过程大概是&#xff1a;到了正解门口决定回头&#xff0c;绕了地球一圈最后从另一边走到正解了… 我的分析&#xff1a; 首先 easy version 很简单&#xff0c;如果从一列最大值可以走到另一列最大值&#xff0c;那么后者就没用了。缩完点所有的零度点就是答案。…

Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)

来源&#xff1a;https://www.cnblogs.com/7tiny/p/10493805.html【前言】Ocelot是一个用.NET Core实现并且开源的API网关&#xff0c;它功能强大&#xff0c;包括了&#xff1a;路由、请求聚合、服务发现、认证、鉴权、限流熔断、并内置了负载均衡器与Service Fabric、Butterf…

CF464E The Classic Problem(主席树+哈希+最短路)

CF464E The Classic Problemproblemsolutioncodeproblem 题目链接 solution 经典题。 本题很特别的是每条边的边权都是 222 的幂&#xff0c;而且数据读入的是指数。 所以可以将路径权值看作一个二进制串&#xff0c;每加一条边就是对应二进制位 111&#xff0c;当然会有相…

CF1192B Dynamic Diameter(LCT)

Foreword\text{Foreword}Foreword zhengrunzhe 大佬的矩阵做法过于神奇&#xff0c;蒟蒻无法理解… 欧拉序的做法确实非常巧妙&#xff0c;但我也想不到这么神仙的做法… 提供一种可能简单一些的 LCT 做法。 由于本人 LCT 无法像大佬那么神&#xff0c;讲的会比较详细一些&…

博弈论(基础概念+例题)

博弈论(b站视频) 文章目录一些概念以Nim游戏为例Nim游戏介绍定义 必败/必胜局面必败/必胜局面的判定引理Nim游戏判定引理的等价命题有向图游戏对判定引理的数学描述-Sg函数有向图游戏的和题目&#xff1a;[有向图游戏][有向图游戏的和][构造/转化类]一些概念 以Nim游戏为例 Ni…

.NET Core 3.0 linux 部署小贴士

dotnet core 3.0 目前还是测试版&#xff0c;在linux下安装 sdk 需要有一些注意事项1.下载urlhttps://dotnet.microsoft.com/download/thank-you/dotnet-sdk-3.0.100-preview-009812-linux-x64-binaries2.安装指令mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.0.100…

莓良心(第二类斯特林数)

莓良心problemsolutioncodeproblem 莓在执行任务时&#xff0c;收集到了 nnn 份岩浆能源&#xff0c;其中第 iii 份的能量值是 wiw_iwi​ &#xff0c;她 决定将它们分成恰好 kkk 组带回基地&#xff0c;每一组都要有至少 111 份能源。 每一组能源会对运输设备产生负荷值&…

CF1654E Arithmetic Operations(根号分治)

解析 降智谔谔题。 明明都把做法大块想出来&#xff0c;最后很沙雕的一步掉牛角尖里了… 无能狂怒之下写了一发实际复杂度 n2n^2n2 的代码。 不过暴力艹题还是很爽的。 可能确实不太好卡吧&#xff0c;让我自己构造我是卡不掉。 更何况CF应该不会有人和我一样在如此沙雕的地方…

P2575 高手过招

P2575 高手过招 题意&#xff1a; AKN玩游戏玩累了&#xff0c;于是他开始和同伴下棋了&#xff0c;玩的是跳棋&#xff01;对手是wwx&#xff01;这两位上古神遇在一起下棋&#xff0c;使得棋局变得玄幻莫测&#xff0c;高手过招&#xff0c;必有一赢&#xff0c;他们都将用…

PuppeteerSharp: 更友好的 Headless Chrome C# API

前端就有了对 headless 浏览器的需求&#xff0c;最多的应用场景有两个UI 自动化测试&#xff1a;摆脱手工浏览点击页面确认功能模式爬虫&#xff1a;解决页面内容异步加载等问题也就有了很多杰出的实现&#xff0c;前端经常使用的莫过于 PhantomJS 和 selenium-webdriver&…

尽梨了(贪心+dp)

尽梨了problemsolutioncodeproblem 丰之崎学园附近共有 nnn 个商店&#xff0c;在时刻 000 时&#xff0c;英梨梨从学园出发开始购物。 从学园走到任意一个商店&#xff0c;或从一个商店走到另一个商店需要 111 单位时间。 如果英梨梨在时刻 ttt 到达了商店 iii &#xff0c…

CF1612G Max Sum Array

解析 被蓝题虐了。&#xff08;悲 确实不太难&#xff0c;就是没往那边想。 考虑如果某个值的下标分别位 i1,i2,...,ini_1,i_2,...,i_ni1​,i2​,...,in​ 那么如何计算贡献。 每一个下标和前面统计时作为被减数&#xff0c;和后面统计时作为减数&#xff0c;所以 iki_kik​ …

【Acwing 219. 剪纸游戏】

【Acwing 219. 剪纸游戏】 题意&#xff1a; 给定一张 NM 的矩形网格纸&#xff0c;两名玩家轮流行动。 在每一次行动中&#xff0c;可以任选一张矩形网格纸&#xff0c;沿着某一行或某一列的格线&#xff0c;把它剪成两部分。 首先剪出 11 的格纸的玩家获胜。 两名玩家都采取…

中国.NET:东莞+长沙.NET俱乐部现场花絮及合肥、苏州、上海等地活动预

《传承有序》与微软技术的发展历程相似&#xff0c;微软俱乐部的发展经历着沉沉浮浮&#xff0c;曾经随着微软走向封闭与固执&#xff0c;.NET社区年轻一代的声音被忽略&#xff0c;.NET社区后继无人。社区的沉默是可怕的&#xff0c;很多社区沉寂消亡。但是在2018年&#xff0…

团不过(dp)

团不过problemsolutioncodeproblem 由比滨结衣和雪之下雪乃在玩 NimNimNim 游戏。 共有 nnn 堆石子&#xff0c;双方轮流操作&#xff0c;每次可以从一堆非空石子堆中取走任意个石 子&#xff0c;取走最后一个石子的人胜利。 她们决定让由比滨结衣先手&#xff0c;但忘记了每…

【AcWing 235. 魔法珠

【AcWing 235. 魔法珠 题意&#xff1a; 有n堆魔法珠&#xff0c;第i堆有ai个&#xff0c;两个人轮流进行以下操作&#xff1a; 当轮到某人操作时&#xff0c;如果每堆中魔法珠的数量均为 1&#xff0c;那么他就输了。 问谁赢谁输 题解&#xff1a; 经典博弈论问题 注意本…

P5039 [SHOI2010]最小生成树(网络流)

解析 我大受震撼。 真的没想到是网络流。&#xff08;事后诸葛&#xff1a;看几百的数据范围应该试试枚举算法&#xff09; 一道比较开眼界的题吧。 然而用一个十分钟写完的假做法可以骗90分&#xff0c;还是挺香的 首先是一个没什么意思的转化&#xff1a;操作等价于给一条边…