T1 星际旅行

题意:n个点,m条边,无重边,有自环,要求经过m-2条边两次,2条边一次,问共有多少种本质不同的方案。本质不同:当且仅当至少存在一条边经过次数不同。

题解:考试的时候理解错题,以为他是一棵树,然后我就凉凉了。。。考试感觉今天T1怎么这么难,看了题解才发现这是一道水题。

只有两条边经过一次,其余都经过两次,考虑拆边,把每条边拆成两条,拆完之后每个点的度一定都是偶数,问题就变成了选择两条边删去,使剩下的图形成欧拉路。

删去的边可以有三种情况:

  1>任意两条有公共顶点的边

  2>任意两个自环

  3>一个自环+一条边

然后就是这道题可能不联通(坑了不少人),注意是边不联通而不是点不连通。因为一个点在外边单着没边并不影响题目要求经过边怎么怎么样,但要是外面有个点单着,而且还连着一个自环,那这张图中的所有边不可能组成欧拉路。具体做法是那一个并查集维护这张图的联通性,不联通就直接输出0就行了。

考试的时候由于题意的理解问题,这道题先是按树做的,后来反应过来是张图,脑子怎么抽筋了,开始改,但由于没看出来是欧拉图,改的一塌糊涂,前前后后做这道题大概要有2个小时。(大家都说很显然的欧拉图,但我觉得不是那么显然。。。太菜了)。

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
ll n,m,d[],fa[],in[],sum,rt,tot,ans;
ll find(ll x)
{
if(fa[x]!=x) fa[x]=find(fa[x]);
return fa[x];
}
int main()
{
scanf("%lld%lld",&n,&m);
ll u,v;
for(ll i=;i<=n;i++) fa[i]=i;
for(ll i=;i<=m;i++){
scanf("%lld%lld",&u,&v);
ll fx=find(u),fy=find(v);
if(u==v) sum++;
else{
fa[fx]=fy;
in[u]++;in[v]++;
}
d[u]++;d[v]++;
}
for(ll i=;i<=n;i++){
if(d[i]!=){
find(i);
rt=i;
break;
}
}
for(ll i=;i<=n;i++){
if(d[i]!=&&find(i)!=fa[rt]){
puts("");
return ;
}
}
for(ll i=;i<=n;i++){
ans+=(in[i]-)*in[i]/;
}
tot/=;
ans+=(sum-)*sum/;
ans+=sum*(m-sum);
printf("%lld\n",ans);
return ;
}

星际旅行

T2 砍树

题解:

一开始一看就码了一个二分,然而二分的左右端点又写错了,导致20分直接丢掉,挺难受的。

这个题不能二分,因为不满足单调性(不信的话可以输出一下search函数的返回值,发现是0101000111。。之类的)。

说正解,需要砍掉的长度tot=Σ[a[i]/d]×d-Σa[i],要求tot<=k;另sum=k+Σa[i],得Σ[a[i]/d]×d<=sum,移项Σ[a[i]/d]<=sum/d;左边的是分段函数而且单调递减,d是从小到大枚举,递增的,除过去递减的,但左边减的快,右边慢,(画图理解)。因为sum/d是向下取整的,所以是分段递减,左边是l的话,r=sum/(sum/l);原谅我也不知道这是为什么。。。只需要判断d=r是否满足Σ[a[i]/d]×d<=sum的条件,满足就更新ans,不满足就下一个。为啥是右端点呢?第一是因为题目要求d最大,右端点就是最大的。第二就是Σ[a[i]/d]是单调递减的,而sum/d是平的,右端点不符合那整段就一定不符合了。

这题很可惜,二分的错解范围打错直接爆0,丢了20分,血的教训啊!!!

砍树

T3 超级树

题意:一棵满二叉树,所有的节点都和他所有的祖先节点连边,问不经过重复点的路径一共有多少。

这题一看我以为有式子能直接推出来,推了十分钟半点规律都没找到,打了个特判就去钢T2了,结果就这道拿分了。。。dp不太明白状态定义,先留坑

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
ll n,mod,f[][];
int main()
{
scanf("%lld%lld",&n,&mod);
f[][]=;f[][]=;
for(int i=;i<=n;i++){
ll m=n-i+;
for(int l=;l<=m;l++){
for(int r=;r<=m-l;r++){
ll sum=f[i][l]*f[i][r]%mod;
f[i+][l+r]=(f[i+][l+r]+sum)%mod;
f[i+][l+r+]=(f[i+][l+r+]+sum)%mod;
f[i+][l+r]=(f[i+][l+r]+sum*l*)%mod;
f[i+][l+r]=(f[i+][l+r]+sum*r*)%mod;
f[i+][l+r-]=(f[i+][l+r-]+sum*r*l*)%mod;
f[i+][l+r-]=(f[i+][l+r-]+sum*(l-)*l)%mod;
f[i+][l+r-]=(f[i+][l+r-]+sum*(r-)*r)%mod;
}
}
}
printf("%lld",f[n][]%mod);
}

超级树

7.18 NOIP模拟测试5 星际旅行+砍树+超级树的更多相关文章

  1. 8.18 NOIP模拟测试25(B) 字符串+乌鸦喝水+所驼门王的宝藏

    T1 字符串 卡特兰数 设1为向(1,1)走,0为向(1,-1)走,限制就是不能超过$y=0$这条线,题意转化为从(0,0)出发,走到(n+m,n-m)且不越过$y=0$,然后就裸的卡特兰数,$ans ...

  2. NOIP模拟测试17&18

    NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...

  3. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  4. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  5. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  6. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  7. NOIP模拟测试5「星际旅行·砍树·超级树」

    星际旅行 0分 瞬间爆炸. 考试的时候觉得这个题怎么这么难, 打个dp,可以被儿子贡献,可以被父亲贡献,还有自环,叶子节点连边可以贡献,非叶子也可以贡献,自环可以跑一回,自环可以跑两回, 关键是同一子 ...

  8. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  9. noip模拟8[星际旅行·砍树·超级树·求和]

    也不能算考得好,虽然这次A了一道题,但主要是那道题太简单了,没啥成就感,而且有好多人都A掉了 除了那一道,其他的加起来一共拿了25pts,这我能咋办,无奈的去改题 整场考试的状态并不是很好啊,不知道是 ...

随机推荐

  1. 深圳龙华有轨电车BIM项目

    本项目是“龙华有轨电车BIM+GIS运维管理平台“研发组成的内容之一,包含站台.电车.变电所等模型绘制. 龙华区有轨电车是深圳市的一条位于龙华区的有轨电车线路,项目规划了三条线路,总长51公里.试验线 ...

  2. 奥展项目笔记04--Spring cloud 通过父工程打包多个子工程,导出可运行的Jar包

    在spring cloud微服务搭建过程中,我们创建了多个微服务模块,如图: 1.父工程Pom文件 <?xml version="1.0" encoding="UT ...

  3. 在.net中读写config文件的各种方法【转】

    今天谈谈在.net中读写config文件的各种方法. 在这篇博客中,我将介绍各种配置文件的读写操作. 由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码, 目的只为了再现实战开发中的各种场 ...

  4. 离线缓存 Visual Studio 2019 (VS2019)的方法

    1. 下面是以管理员身份运行命令行: https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-en ...

  5. Redis 主从同步+哨兵

    简介 通过使用 Redis 自带“主从同步+哨兵守护”功能提高Redis稳定性. 主从同步:保障数据主从数据实时同步. 哨兵:实时监控主redis如果故障,将从redis作为主使用. 环境: 系统:C ...

  6. 【UOJ#389】【UNR#3】白鸽(欧拉回路,费用流)

    [UOJ#389][UNR#3]白鸽(欧拉回路,费用流) 题面 UOJ 题解 首先第一问就是判断是否存在一条合法的欧拉回路,这个拿度数和连通性判断一下就行了. 第二问判断转的圈数,显然我们只需要考虑顺 ...

  7. 排障利器之远程调试与监控 --jmx & remote debug

    监控和调试功能是应用必备的属性之一,其手段也是多种多样. 一般地,我们可以通过:线上日志, zabbix, grafana, cat 等待系统做一问题留底,有问题及时报警,从而达到监控效果. 而对于应 ...

  8. checked,unchecked

    static void Main(string[] args) { byte b1 = 100; byte b2 = 250; //Checked try { byte sum = checked ( ...

  9. E203 bypass buffer

    如果fifo中没有数据,且有输入,则是bypass fifo,同周期内直接把输入数据转到输出数据.如果fifo中有数据,则读取fifo,成为普通的同步fifo. module sirv_gnrl_by ...

  10. iOS中Category和Extension 原理详解

    (一)Category .什么是Category? category是Objective-C .0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是为已 ...