T1 星际旅行

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

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

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

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

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

  2>任意两个自环

  3>一个自环+一条边

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

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

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #define ll long long
  5. using namespace std;
  6. ll n,m,d[],fa[],in[],sum,rt,tot,ans;
  7. ll find(ll x)
  8. {
  9. if(fa[x]!=x) fa[x]=find(fa[x]);
  10. return fa[x];
  11. }
  12. int main()
  13. {
  14. scanf("%lld%lld",&n,&m);
  15. ll u,v;
  16. for(ll i=;i<=n;i++) fa[i]=i;
  17. for(ll i=;i<=m;i++){
  18. scanf("%lld%lld",&u,&v);
  19. ll fx=find(u),fy=find(v);
  20. if(u==v) sum++;
  21. else{
  22. fa[fx]=fy;
  23. in[u]++;in[v]++;
  24. }
  25. d[u]++;d[v]++;
  26. }
  27. for(ll i=;i<=n;i++){
  28. if(d[i]!=){
  29. find(i);
  30. rt=i;
  31. break;
  32. }
  33. }
  34. for(ll i=;i<=n;i++){
  35. if(d[i]!=&&find(i)!=fa[rt]){
  36. puts("");
  37. return ;
  38. }
  39. }
  40. for(ll i=;i<=n;i++){
  41. ans+=(in[i]-)*in[i]/;
  42. }
  43. tot/=;
  44. ans+=(sum-)*sum/;
  45. ans+=sum*(m-sum);
  46. printf("%lld\n",ans);
  47. return ;
  48. }

星际旅行

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分,血的教训啊!!!

  1. 砍树

T3 超级树

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

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

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #define ll long long
  5. using namespace std;
  6. ll n,mod,f[][];
  7. int main()
  8. {
  9. scanf("%lld%lld",&n,&mod);
  10. f[][]=;f[][]=;
  11. for(int i=;i<=n;i++){
  12. ll m=n-i+;
  13. for(int l=;l<=m;l++){
  14. for(int r=;r<=m-l;r++){
  15. ll sum=f[i][l]*f[i][r]%mod;
  16. f[i+][l+r]=(f[i+][l+r]+sum)%mod;
  17. f[i+][l+r+]=(f[i+][l+r+]+sum)%mod;
  18. f[i+][l+r]=(f[i+][l+r]+sum*l*)%mod;
  19. f[i+][l+r]=(f[i+][l+r]+sum*r*)%mod;
  20. f[i+][l+r-]=(f[i+][l+r-]+sum*r*l*)%mod;
  21. f[i+][l+r-]=(f[i+][l+r-]+sum*(l-)*l)%mod;
  22. f[i+][l+r-]=(f[i+][l+r-]+sum*(r-)*r)%mod;
  23. }
  24. }
  25. }
  26. printf("%lld",f[n][]%mod);
  27. }

超级树

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. HTML+CSS基础 border css属性 Div块 盒子

    border  css属性 边框颜色 border-color:red/#ffffff/rgb()默认为黑色 边框样式 border-style:solid (实线) dashed (虚线).默认为n ...

  2. 如何判断服务器之间的服务是否可用?ping 还是 telnet?

    1. 背景 机器A需要调用机器B的服务,为此要保证服务的可用性,我们有时候用ping,有时候用telent来验证机器A和B的连通性,但有时候会出现这种情况,A可以ping通B,但A调用B的服务会一直报 ...

  3. linq 获取不重复数据,重复数据 var unique = arr.GroupBy(o => o).Where(g => g.Count() == 1) .Select(g => g.ElementAt(0));

    static void Main(string[] args) { int[] arr = { 1, 3, 3, 3, 3, 4, 5, 4, 5, 8, 9, 3 }; //不重复 var uniq ...

  4. C# 随机 抽奖 50个随机码 不重复

    static List<int> Given50RandomNumbers() { List<int> intList = new List<int>(); for ...

  5. 基本认证(Basic Authorization)

    ---------------------------------- import arcpy from base64 import encodestring username = 'xxx' pas ...

  6. U9创建BE组件

    打开UBF,新建项目->实体项目 输入名称后,点击确定,第二步:修改名称以在后期作为文件夹区分 第三步:创建实体 第四步:添加U9基础对象引用 拖动到解决方案的Reference 第五步:右键构 ...

  7. HTML input属性详谈

    value属性 value属性指定输入字段的初始值: <form> 名字:<br> <input type="text" name="you ...

  8. Ext.create方法分析

    Ext.create方法实际上是Ext.ClassManager的instantiate的别名 分析如下: (function(Class, alias, arraySlice, arrayFrom, ...

  9. [b0012] Hadoop 版hello word mapreduce wordcount 运行(二)

    目的: 学习Hadoop mapreduce 开发环境eclipse windows下的搭建 环境: Winows 7 64 eclipse 直接连接hadoop运行的环境已经搭建好,结果输出到ecl ...

  10. 通过jQuery给<li>绑定点击事件

    背景:有个需求需要js中实现li标签的事件绑定,li通过在ajax请求中动态添加,按照常理,使用jQuery,可以使用以下方法绑定点击事件: $(function(){  commonAjaxCall ...