计蒜客NOIP2017提高组模拟赛(三)day2-数三角形
这题有点坑啊
设A为两边颜色不同的角,B为两边颜色相同的角
那么考虑三种三角形:异色,同色,其他
对于任何一个异色三角形,一定会有三个颜色不同的角,
对于任何一个同色三角形,一定会有零个颜色不同的角,
对于任何一个其他三角形,一个会有两个颜色不同的角,
那么A一定等于异色三角形数目*3+其他三角形数目*2
对于任何一个异色三角形,一定会有零个颜色相同的角,
对于任何一个同色三角形,一定会有三个颜色相同的角,
对于任何一个其他三角形,一个会有一个颜色相同的角,
那么B一定等于同色三角形数目*3+其他三角形数目*1
设异色为x种,同色为y中,其他为z种
则A=3x+2z B=3y+z
题目要求的就是3x-6y
发现就是A-2B
然后就水过了~
PS这数据范围10^5也不对啊。。。难道是考虑高精度么。。。
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<queue>
#include<vector>
#define INF 0x7f7f7f7f
#define pii pair<int,int>
#define ll long long
using namespace std;
int n,m;
namespace solve2
{
int G[][];
int n,m;
void solve(){
n=::n,m=::m;
for(int i=;i<=m;i++){
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
G[x][y]=G[y][x]=c;
}
ll ans=;
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
for(int k=j+;k<=n;k++){
if(G[i][j]==G[j][k]&&G[j][k]==G[i][k]){
ans-=;
}
else if(G[i][j]!=G[j][k]&&G[j][k]!=G[i][k]&&G[i][j]!=G[i][k]){
ans+=;
}
}
}
}
printf("%lld\n",ans);
}
}
namespace solve1
{
ll A,B;
int a[][];
int n,m;
void solve(){
n=::n,m=::m;
for(int i=;i<=m;i++){
int x,y,c;
scanf("%d%d%d",&x,&y,&c);c--;
a[x][c]++,a[y][c]++;
}
for(int i=;i<=n;i++){
ll s1=n--a[i][]-a[i][];
ll s2=a[i][];
ll s3=a[i][];
A+=s1*s2+s1*s3+s2*s3;
B+=s1*(s1-)/+s2*(s2-)/+s3*(s3-)/;
}
printf("%lld",A-*B);
}
}
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if('-'==ch)f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int main()
{
// freopen("data.in","r",stdin);
n=read(),m=read();
if(n<=){
solve2::solve();
}
else{
solve1::solve();
}
return ;
}
计蒜客NOIP2017提高组模拟赛(三)day2-数三角形的更多相关文章
- 计蒜客NOIP2017提高组模拟赛(三)day1
火山喷发 火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 n 个生物分别具有 A1,A2,⋯,An点生命值,一次火山喷发总计 MM 轮 ...
- 计蒜客NOIP2017提高组模拟赛(四)day1
T1:小X的质数 小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小 X 认为,质数是一切自然数起源的地方. 在小 X 的认知里,质数是除了本身和 1 以外,没有其他因数的 ...
- 计蒜客NOIP2017提高组模拟赛(五)day1-展览
传送门 发现这题选或不选对状态的优劣程度不会产生影响,如果已经确定了两个数a和b,那么最优的首项和公比也都是唯一确定的, 与对于后面的数x,加进去也好不加进去也好,首项和公比依旧是原来的 于是我们用尺 ...
- 计蒜客NOIP2017提高组模拟赛(五)day1-机智的 AmyZhi
传送门 很水的题目啦QAQ #include<cstdio> #include<cstdlib> #include<algorithm> #include<c ...
- 计蒜客NOIP2017提高组模拟赛(五)day2-蚂蚁搬家
传送门 这题可以用线段树来维护 #include<cstdio> #include<cstdlib> #include<algorithm> #include< ...
- 计蒜客NOIP2017提高组模拟赛(五)day2-成绩统计
传送门 用hash,因为map的复杂度可能在这题中因为多一个log卡掉,但是hash不会 可能因为这个生成的随机数有循环的情况,不是完全均匀的 而且这题hash表的长度也可以开的很大 #include ...
- 计蒜客NOIP2017提高组模拟赛(三)day2-直线的交点
传送门 简单几何+逆序对 发现当两条直线甲乙与平板的交点在上面甲在较左的位置,那么下面甲在较右的位置就可以相交 然后把上面的位置排下序,下面离散化+树状数组即可 #include<cstdio& ...
- 计蒜客NOIP2017提高组模拟赛(三)day2-小区划分
传送门 dp,注意边界 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cst ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
随机推荐
- C语言第三次博客作业—循环结构
一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数 char sex; //sex表示性别 double High; //Hight表示身高 scanf("%d&qu ...
- Beta预备
团队名称:稳住!我们能赢 Beta预备: 讨论组长是否重选的议题和结论 项目组长可以说是一个团队的灵魂和核心.一个好的领导者可以激发团队成员的工作热情,提高开发效率,保质保量的完成工作.虽然在Alph ...
- edittext实现自动查询,刷新listview
mEdittextqueryvalue.addTextChangedListener(new TextWatcher() { @Override pub ...
- video与audio的使用
HTML5 DOM 为 <audio> 和 <video> 元素提供了方法.属性和事件. 这些方法.属性和事件允许您使用 JavaScript 来操作 <audio> ...
- vue style width a href动态拼接问题 ?
style width 这个问题 折磨了我一个上午了 好惭愧 因为项目涉及到 进度条 所以必须用行内样式 style 用过vue的都知道 vue中style的用法 大众用法 :style=&quo ...
- python之路--day11---迭代器和生成器
迭代: 迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 为什么要有迭代器: 数据类型的取值,字符串,列表,元组依靠索引可以取值,但是字典,集合,文件这些数据类型无法 ...
- linux下执行java类(运行java定时器)
假如有一个定时器TimerTest.java import java.io.IOException; import java.util.Timer; public class TimerTest { ...
- Mosquito集群模式
参考链接: http://blog.csdn.net/z729685731/article/details/70142182 http://blog.csdn.net/yuhaiyang457288/ ...
- 新概念英语(1-95)Tickets,please!
Lesson 95 Tickets, please. 请把车票拿出来. Listen to the tape then answer this question. Why did George and ...
- 开发技巧(3-1)Eclipse查找关键字
1.选择资源目录->选择search-file菜单 2.在弹出的对话框中, 输入要[搜索的字符串],选择[selected resources],点击[search]按钮 3.搜索结果