计蒜客T2202 数三角形(提高组2017模拟赛(三)day2T3) LZOJ3878攻略
今天模拟赛考了一道计蒜客NOIP2017模拟赛(三)day2T3的数三角形,原题链接 https://nanti.jisuanke.com/t/T2202 ,LZOJ3878攻略。场上想了很久都没转化出来,后来觉得这道想法题很妙,记录一下。
题意:
数出一个完全图中完全异色三角形\(\times 3\)-完全同色三角形\(\times 6\)的答案是多少。
解法:
方法一:
转化为:题目本质上是出现同色三角形好感度-9,出现两条边相等另一条不同的三角形好感度-3, 数一数同色角的个数就行了
方法二:
个人感觉很好理解的,比方法一要好。
设\(A\)为同色角的个数(同色角是指一个顶点连接的两条边颜色相同),\(B\)为异色角的个数。
设三角形中三条边同色的个数为\(x\),三条边均不同颜色的个数为\(y\),其他三角的个数有\(z\)个。
则可以列出下列表格:
| 三条同色边三角形\(x\) | 三条异色边三角形\(y\) | 其他三角形\(z\) | |
|---|---|---|---|
| \(A\) | 3 | 0 | 1 | 
| \(B\) | 0 | 3 | 2 | 
可以列出以下两条等式:
\(A=3\times x+z\quad\quad B=3\times y+2\times z\)
而题目要求同色三角形权值为\(-6\),异色三角形权值为\(3\),即\(-6\times x+3\times y\)。
所以答案就是\(-2\times A+B\)。
#include<cstdio>
using namespace std;
const int maxn=100010;
int n,m,a[maxn][2];
long long A,B;
int main()
{
	int i,x,y,z;
	scanf("%d%d",&n,&m);
	for (i=1;i<=m;i++)
	{
		scanf("%d%d%d",&x,&y,&z);
		z--;
		a[x][z]++,a[y][z]++;
	}
	for (i=1;i<=n;i++)
	{
		x=a[i][0],y=a[i][1],z=n-1-x-y;
		A+=(1ll*x*(x-1)>>1)+(1ll*y*(y-1)>>1)+(1ll*z*(z-1)>>1);
		B+=1ll*x*y+1ll*y*z+1ll*z*x;
	}
	printf("%lld\n",-2*A+B);
	return 0;
}
计蒜客T2202 数三角形(提高组2017模拟赛(三)day2T3) LZOJ3878攻略的更多相关文章
- 2018.12.30【NOIP提高组】模拟赛C组总结
		2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ... 
- 计蒜客 取数游戏(dp)
		有如下一个双人游戏:N个正整数的序列放在一个游戏平台上,两人轮流从序列的两端取数,每次有数字被一个玩家取走后,这个数字被从序列中去掉并累加到取走该数的玩家的得分中,当数取尽时,游戏结束.以最终得分多者 ... 
- 计蒜客 取数游戏 博弈+dp
		题目链接 取数游戏 思路:dp(x, y)表示先手在区间[x, y]能取得的最大分数.当先手取完,就轮到后手去,后手一定会选择当前能令他得到最大分数的策略,其实当先手在[x, y]区间两端取走一个数, ... 
- 2017.07.06【NOIP提高组】模拟赛B组
		Summary 今天比赛感觉题目很奇葩,都可以用许多简单方法来做,正确性都显然,当然也有点水,也就是说是考我们的数感和数学知识,而程序,只是代码的体现. 这次的时间安排感觉不错,因为很快就打完最后一道 ... 
- 2017.08.15【NOIP提高组】模拟赛B组
		Summary 今天比赛很差很差,掉到谷底.第一题快排打错了,漏了递归,变成一个while循环.最后一题k忘记减一,答案一直是无穷大,所以没交.第三题没时间调DP就打了个递归,第二题状态想歪了.四道题 ... 
- 2017.08.08【NOIP提高组】模拟赛B组
		Summary 今天的题目也不算很难,唯一一道没做出来的题目是以前做过的,太不应该了. Problem T1 油滴扩展 题目大意 给你一堆点,你准备要在这么多的点当中滴油.你可以自己安排顺序,每次滴油 ... 
- 2017.08.05【NOIP提高组】模拟赛B组
		Summary 这次比赛打得非常差,第一题我以为是个难题,于是推了一下就没再去想了,然而考场上一堆人AC.第二题状态设错了,导致结果有后效性.结束后pascal卡常卡了36次.第三题别人n²就过了,我 ... 
- 2017.08.06【NOIP提高组】模拟赛B组
		Summary 今天的比赛60+100+100=260分,没有想到第一题正解是搜索,我与AK差一段距离,这段距离,叫倒着搜.总的来说不是很难. Problem T1 天平 题目大意 给你N个排序好的砝 ... 
- 2017.07.11【NOIP提高组】模拟赛B组
		Summary 今天的比赛打得还不错,第一题被同桌灌输的贪心,纯模拟洗脑了,然后steal的看了一下,发现怎么也对不了,一直在检查.最后10分钟才找出反例,推出动态规划方程,没有想到怎么转移,比赛就结 ... 
随机推荐
- 【DP 好题】Kick Start 2019 Round C Catch Some
			题目链接 题目大意 在一条数轴上住着 $N$ 条狗和一个动物研究者 Bundle.Bundle 的坐标是 0,狗的坐标都是正整数,可能有多条狗住在同一个位置.每条狗都有一个颜色.Bundle 需要观测 ... 
- Chrome的cookie放在哪里了,Cookie/Session机制详解
			Chrome的cookie放在哪里了,Cookie/Session机制详解:https://blog.csdn.net/u010002184/article/details/82082951 
- C++练习 | 基于栈的中缀算术表达式求值(double类型
			#include<iostream> #include<stack> #include<cmath> using namespace std; char ch; b ... 
- 编译LAMP部署动态网站环境
			LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Apache=2.4.33 --&g ... 
- shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机
			1.NGINX启动脚本 #!/bin/bash # chkconfig: 235 32 62 # description: nginx [ -f /etc/init.d/functions ] &am ... 
- centos7 安装vim
			刚安装的centos7一般只有vi可以用,vim是没有安装的,如果我们想使用的话,需要我们自己去安装,可以使用如下命令进行安装: yum -y install vim 安装之后就可以正常使用 
- python词云生成-wordcloud库
			python词云生成-wordcloud库 全文转载于'https://www.cnblogs.com/nickchen121/p/11208274.html#autoid-0-0-0' 一.word ... 
- ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析
			ASCII.Unicode.UTF-8.UTF-16.GBK.GB2312.ANSI等编码方式简析 序言 从各种字节编码方法中,能看到那个计算机发展的洪荒时期的影子. ASCII ASCII码有标准A ... 
- 一次MySQL两千万数据大表的优化过程,三种解决方案
			问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ... 
- 【electronjs入门教程 】electronjs 介绍
			官网地址:https://electronjs.org/ 官网文档地址:https://electronjs.org/docs/ electronjs使用 JavaScript, HTML 和 CSS ... 
