今天模拟赛考了一道计蒜客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攻略的更多相关文章

  1. 2018.12.30【NOIP提高组】模拟赛C组总结

    2018.12.30[NOIP提高组]模拟赛C组总结 今天成功回归开始做比赛 感觉十分良(zhōng)好(chà). 统计数字(count.pas/c/cpp) 字符串的展开(expand.pas/c ...

  2. 计蒜客 取数游戏(dp)

    有如下一个双人游戏:N个正整数的序列放在一个游戏平台上,两人轮流从序列的两端取数,每次有数字被一个玩家取走后,这个数字被从序列中去掉并累加到取走该数的玩家的得分中,当数取尽时,游戏结束.以最终得分多者 ...

  3. 计蒜客 取数游戏 博弈+dp

    题目链接 取数游戏 思路:dp(x, y)表示先手在区间[x, y]能取得的最大分数.当先手取完,就轮到后手去,后手一定会选择当前能令他得到最大分数的策略,其实当先手在[x, y]区间两端取走一个数, ...

  4. 2017.07.06【NOIP提高组】模拟赛B组

    Summary 今天比赛感觉题目很奇葩,都可以用许多简单方法来做,正确性都显然,当然也有点水,也就是说是考我们的数感和数学知识,而程序,只是代码的体现. 这次的时间安排感觉不错,因为很快就打完最后一道 ...

  5. 2017.08.15【NOIP提高组】模拟赛B组

    Summary 今天比赛很差很差,掉到谷底.第一题快排打错了,漏了递归,变成一个while循环.最后一题k忘记减一,答案一直是无穷大,所以没交.第三题没时间调DP就打了个递归,第二题状态想歪了.四道题 ...

  6. 2017.08.08【NOIP提高组】模拟赛B组

    Summary 今天的题目也不算很难,唯一一道没做出来的题目是以前做过的,太不应该了. Problem T1 油滴扩展 题目大意 给你一堆点,你准备要在这么多的点当中滴油.你可以自己安排顺序,每次滴油 ...

  7. 2017.08.05【NOIP提高组】模拟赛B组

    Summary 这次比赛打得非常差,第一题我以为是个难题,于是推了一下就没再去想了,然而考场上一堆人AC.第二题状态设错了,导致结果有后效性.结束后pascal卡常卡了36次.第三题别人n²就过了,我 ...

  8. 2017.08.06【NOIP提高组】模拟赛B组

    Summary 今天的比赛60+100+100=260分,没有想到第一题正解是搜索,我与AK差一段距离,这段距离,叫倒着搜.总的来说不是很难. Problem T1 天平 题目大意 给你N个排序好的砝 ...

  9. 2017.07.11【NOIP提高组】模拟赛B组

    Summary 今天的比赛打得还不错,第一题被同桌灌输的贪心,纯模拟洗脑了,然后steal的看了一下,发现怎么也对不了,一直在检查.最后10分钟才找出反例,推出动态规划方程,没有想到怎么转移,比赛就结 ...

随机推荐

  1. 从零开始,SpreadJS新人学习笔记【第3周】

    表单&函数 阔别多日, SpreadJS新人学习笔记,本周起正式回归!(在断更的这一个月中,我为大家先后录制了14期SpreadJS产品入门系列学习视频,希望帮助那些正在学习和使用 Sprea ...

  2. SVN服务器搭建与配置管理

    1.下载和搭建SVN服务器 现在Subversion已经迁移到Apache网站上了,下载地址:http://subversion.apache.org/packages.html,这是二进制文件包的下 ...

  3. Python和其他编程语言

    Python和其他编程语言 一.Python介绍 Python的创始人为吉多·范罗苏姆(Guido van Rossum),如下图,少数几个不秃头的语言创始人.1989年的圣诞节期间,Guido为了打 ...

  4. Java后端技术面试汇总(第一套)

    面试汇总,整理一波,doc文档可点击[此处下载] 1.基础篇 1.1.Java基础 • 面向对象的特征:继承.封装和多态• final, finally, finalize 的区别• Exceptio ...

  5. Java版本及历史简述

    Java版本及历史简述 初学Java,对于Java那么多版本很困惑,这里做一点笔记,如有错误希望指出. Java由Sun公司创造,后Sun公司被Oracle公司收购,Java也随之变为Oracle的产 ...

  6. springboot配置文件之yml的语法学习

    springboot配置文件(.yml/.yaml.properties) YAML(YAML Ain't Markup Language) YAML A Markup Language:是一个标记语 ...

  7. Stream 分布式数据流的轻量级异步快照

    1. 概述 分布式有状态流处理支持在云中部署和执行大规模连续计算,主要针对低延迟和高吞吐量.这种模式的一个最根本的挑战就是在可能的失败情况下提供处理保证.现有方法依赖于可用于故障恢复的周期性全局状态快 ...

  8. CentOS7部署ntp服务器

    主机 角色 192.168.48.128 Server 192.168.48.129 Client 192.168.48.130 Client 所有主机安装ntp服务 yum install -y n ...

  9. Python(os和sys)理解

    Python(os和sys)理解 os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口; sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时 ...

  10. Storm项目开发纪要

    1.POM引用storm-core和javax.servlet-api这两个组件,如果本地模式跑拓扑,要把<scope>provided</scope>去掉:如果远程发布运行, ...