更好的阅读体验

我的博客观看

T1-Felicity is Coming!

神奇宝贝的进化方案是一个全排列,假设有三种宝可梦,那么对应就可以有:

(1,2,3)(1,3,2)(2,1,3)(2,3,1)(3,1,2)(3,2,1)这六种进化方案(六种全排列)

这里(1,3,2)相当于:1进化成1,2进化成3,3进化成2

需要满足所有约束条件才能作为可行进化方案:

对于一个训练馆,之前有a个b种类的宝可梦,那么训练馆里所有的宝可梦进化之后,还要有a个b种类的宝可梦才行,种类不能增加,不能减少,也不能改变

问一共有多少个可行方案

解法

如果a宝可梦和b宝可梦能互相进化,一定满足a出现过的训练馆和b出现过的训练馆以及次数都相同

所以开vector来维护这一性质,然后sort,没错vector之间可以直接sort(大雾

相同的一定放在一起,n个相同的会产生n!的贡献,对于没有出现过的宝可梦,也会产生一个贡献,因为进化是不能一对多或多对一的,所以贡献也是一个n!

ac代码

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define mod 1000000007
  4. using namespace std;
  5. vector<int>a[1000010];
  6. int n,m,g,x;
  7. ll cnt=1,ans=1;
  8. int main()
  9. {
  10. scanf("%d%d",&n,&m);
  11. for(int i=1;i<=n;i++)
  12. {
  13. scanf("%d",&g);
  14. for(int j=1;j<=g;j++)scanf("%d",&x),a[x].push_back(i);
  15. }
  16. sort(a+1,a+m+1);
  17. for(int i=2;i<=m;i++)
  18. if(a[i]==a[i-1])cnt++,ans=ans*cnt%mod;
  19. else cnt=1;
  20. printf("%lld\n",ans);
  21. return 0;
  22. }

T2-Felicity's Big Secret Revealed

给定一个01串,一个有效的n切割定义如下:一个横杠代表一次切割,第一条横杠前面的01串不算,最后一条横杠后面的01串不算,将两个横杠中的01串转化成十进制数字,假设这些数字的最大值是MAX且这些数字囊括了1-MAX的所有数字,则称为一次有效切割。求2~n+1次有效切割的切法总数。

解法

由于题目要求包含所有1—MAX的数字,且n<=75,所以MAX<=20。

dp[i][k]表示第i位前有一次切割且状态为k,接着从第i位开始枚举到第j位为下一个横杆的位置,设这两段横杆之间的数字为p(十进制),则

dp[j+1][k|(1<<p-1)]+=dp[i][k],k为1~(1<<20)的状态。最后把dp[i][(1<<t)-1](0<=i<=n,1<=t<=20)加起来就可以了。

ac代码

  1. #include<bits/stdc++.h>
  2. #define mod 1000000007
  3. #define lim 1048576
  4. using namespace std;
  5. int n,ans,a[100],dp[100][lim+10];
  6. int main()
  7. {
  8. memset(dp,0,sizeof(dp)),scanf("%d",&n);
  9. for(int i=0;i<n;i++)scanf("%1d",&a[i]);
  10. for(int i=0;i<n;i++)
  11. {
  12. dp[i][0]=1;
  13. for(int k=0;k<lim;k++)
  14. {
  15. if(!dp[i][k])continue;
  16. for(int j=i,p=a[i];j<n&&p<=20;j++,p=(p*2+a[j]))
  17. if(p)dp[j+1][k|(1<<(p-1))]=(dp[j+1][k|(1<<(p-1))]+dp[i][k])%mod;
  18. }
  19. }
  20. for(int i=0;i<=n;i++)for(int k=1;k<=20;k++)ans=(ans+dp[i][(1<<k)-1])%mod;
  21. printf("%d\n",ans);
  22. }

T3-Harmony Analysis

已知向量中每个坐标的值都为1或者-1

给出k(0<=k<=9),构造出2k个2k维向量,使得任意这2^k个向量中任意两个向量点积为0

解法

首先手推一下k为3时是什么样的

  1. ++++++++
  2. ++++****
  3. ++**++**
  4. ++****++
  5. +*+*+*+*
  6. +*+**+*+
  7. +**++**+
  8. +**+*++*

嗯,是这个样子的,对比一下k为2时的

  1. ++++
  2. ++**
  3. +*+*
  4. +**+

可以发现将k为2时的扩大一倍会形成前4行,后4行是怎么来的呢,前四行偶数位都取反(异或1)

别问我怎么看出来的,就这样看出来的QAQ

按照这样构造就可以了QWQ

ac代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,m=1,a[512][512];
  4. int main()
  5. {
  6. a[0][0]=1,scanf("%d",&n);
  7. for(int i=1;i<=n;i++)
  8. {
  9. for(int j=0;j<m;j++)for(int k=m*2-1;k>=0;k--)a[j][k]=a[j][k/2];
  10. for(int j=m;j<m*2;j++)for(int k=0;k<m*2;k++)a[j][k]=a[j-m][k];
  11. for(int j=m;j<m*2;j++)for(int k=1;k<m*2;k+=2)a[j][k]^=1;
  12. m*=2;
  13. }
  14. for(int i=0;i<m;i++)
  15. {
  16. for(int j=0;j<m;j++)if(a[i][j]==1)putchar('+');else putchar('*');
  17. putchar('\n');
  18. }
  19. return 0;
  20. }

hgoi#20190513的更多相关文章

  1. HGOI 20181028 题解

    HGOI 20181028(复赛备考) /* 真是暴力的一天,最后一题MLE?由于数组开得太大了!!! 270滚粗 考场上好像智商高了很多?!(假的) */ sol:暴力求解,然后没有数据范围吐槽一下 ...

  2. HGOI NOIP模拟4 题解

    NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...

  3. HGOI 20191106

    HGOI 20191106 t1 旅行家(traveller) 2s,256MB [题目背景] 小X热爱旅行,他梦想有一天可以环游全世界-- [题目描述] 现在小X拥有n种一次性空间转移装置,每种装置 ...

  4. 「HGOI#2019.4.19省选模拟赛」赛后总结

    t1-Painting 这道题目比较简单,但是我比较弱就只是写了一个链表合并和区间DP. 别人的贪心吊打我的DP,嘤嘤嘤. #include <bits/stdc++.h> #define ...

  5. HGOI 20190407 Typing Competition Round #1 出题记

    /* ljc20020730出的HGOI20190407的模拟赛. 考试结果比预期难的不少,可能是由于本来计划5h的比赛打了4h吧. 就当普及组模拟赛好了... 难度大概4紫吧(弱省省选难度) 出境 ...

  6. HGOI 20190310 题解

    /* 又是又双叒叕WA的一天... 我太弱鸡了... 今天上午打了4道CF */ Problem 1 meaning 给出q组询问,求下列函数的值$ f(a) = \max\limits_{0 < ...

  7. [hgoi#2019/3/21]NOIP&NOI赛后总结

    前言 今天做的是是2010年提高组和NOI的题目,做过几道原题,但是还是爆炸了,我真的太弱了. t1-乌龟棋 https://www.luogu.org/problemnew/show/P1541 这 ...

  8. HGOI 20190303 题解

    /* 记一串数字真难. 5435 今天比赛又是hjcAK的一天. 今天开题顺序是312,在搞T1之前搞了T3 昨天某谷月赛真是毒瘤. 但是讲评的同学不错,起码T4看懂了... 构造最优状态然后DP的思 ...

  9. HGOI 20180224 题解

    /* The Most Important Things: ljc chat with fyh on QQTa说期末考Ta数学74分感觉不好但是我觉得fyh是地表最强的鸭~~(of course en ...

随机推荐

  1. Method and apparatus for establishing IEEE 1588 clock synchronization across a network element comprising first and second cooperating smart interface converters wrapping the network element

    Apparatus for making legacy network elements transparent to IEEE 1588 Precision Time Protocol operat ...

  2. uwp - 做一个相对炫酷的动画按钮/按钮动画

    原文:uwp - 做一个相对炫酷的动画按钮/按钮动画 看腻了系统自带的button animation何不尝试下自定义一个较为炫酷的动画顺便提升用户体验.效果图: 动画分为几个部分,分别是:内圆从中心 ...

  3. respondsToSelector的作用

    1.respondsToSelector 用来推断某一个方法时候实现(以下的代码意思:假设baseAPIdidStartRequest这种方法实现了,那么就去调用,防止出现异常) if ([self. ...

  4. 如何构造请求处理对象链(Pipeline)

    在开发中,我们经常会遇到这样一个场景:传入一个对象,经过不同的节点对这个对象做不同的操作,比如ASP.NET Core 中的pipeline,IIS中的HTTPpipeline等.在这类问题中,往往我 ...

  5. Python 绘图利器 —— ggplot

    安装: 命令行:pip install ggplot 1. 杂项 NameError: name 'ggsave' is not defined. Python ggplot- ggsave func ...

  6. Matlab随笔之画图函数总结

    原文:Matlab随笔之画图函数总结 MATLAB函数画图 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATL ...

  7. abp框架(aspnetboilerplate)设置前端报错显示

    abp在后端抛出异常 throw new UserFriendlyException($"抛出一个错误"); 在发布之前,需要设置是否把报错发送给前端 如果将此设置为true,则会 ...

  8. StackLayout

    堆栈式地放置内容可以在xaml中完成视图,也可以在cs代码中完成视图 Xamarin的所有视图和布局都是可以 1.在xaml中完成 2.在cs代码中完成视图 (类比WPF) 示例 在cs代码中完成视图 ...

  9. HALCON学习之算子大全

    1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训练数据上. 2.classify_class_gmm ...

  10. jquery 用json设置css

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...