更好的阅读体验

我的博客观看

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代码

#include<bits/stdc++.h>
#define ll long long
#define mod 1000000007
using namespace std;
vector<int>a[1000010];
int n,m,g,x;
ll cnt=1,ans=1;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&g);
for(int j=1;j<=g;j++)scanf("%d",&x),a[x].push_back(i);
}
sort(a+1,a+m+1);
for(int i=2;i<=m;i++)
if(a[i]==a[i-1])cnt++,ans=ans*cnt%mod;
else cnt=1;
printf("%lld\n",ans);
return 0;
}

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代码

#include<bits/stdc++.h>
#define mod 1000000007
#define lim 1048576
using namespace std;
int n,ans,a[100],dp[100][lim+10];
int main()
{
memset(dp,0,sizeof(dp)),scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%1d",&a[i]);
for(int i=0;i<n;i++)
{
dp[i][0]=1;
for(int k=0;k<lim;k++)
{
if(!dp[i][k])continue;
for(int j=i,p=a[i];j<n&&p<=20;j++,p=(p*2+a[j]))
if(p)dp[j+1][k|(1<<(p-1))]=(dp[j+1][k|(1<<(p-1))]+dp[i][k])%mod;
}
}
for(int i=0;i<=n;i++)for(int k=1;k<=20;k++)ans=(ans+dp[i][(1<<k)-1])%mod;
printf("%d\n",ans);
}

T3-Harmony Analysis

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

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

解法

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

++++++++
++++****
++**++**
++****++
+*+*+*+*
+*+**+*+
+**++**+
+**+*++*

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

++++
++**
+*+*
+**+

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

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

按照这样构造就可以了QWQ

ac代码

#include<bits/stdc++.h>
using namespace std;
int n,m=1,a[512][512];
int main()
{
a[0][0]=1,scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=0;j<m;j++)for(int k=m*2-1;k>=0;k--)a[j][k]=a[j][k/2];
for(int j=m;j<m*2;j++)for(int k=0;k<m*2;k++)a[j][k]=a[j-m][k];
for(int j=m;j<m*2;j++)for(int k=1;k<m*2;k+=2)a[j][k]^=1;
m*=2;
}
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)if(a[i][j]==1)putchar('+');else putchar('*');
putchar('\n');
}
return 0;
}

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. 停止学习Wireshark

    下载和安装好Wireshark之后,启动Wireshark而且在接口列表中选择接口名,然后開始在此接口上抓包.比如.假设想要在无线网络上抓取流量,点击无线接口.点击Capture Options能够配 ...

  2. jQuery立即调用表达式

    http://www.imooc.com/code/3247 立即调用表达式 任何库与框架设计的第一个要点就是解决命名空间与变量污染的问题.jQuery就是利用了JavaScript函数作用域的特性, ...

  3. e.target e.currenttarget

    概述 当事件穿过 DOM 时,识别事件的当前目标对象(Identifies the current target for the event, as the event traverses the D ...

  4. 今天用pro安装nginx+php+mysql出现故障的解决方法

    今天用pro安装nginx+php+mysql出现故障的解决方法 by 伍雪颖 dyld: Library not loaded: @@HOMEBREW_CELLAR@@/openssl/1.0.1h ...

  5. C# WPF 仿网易云音乐(PC)Banner动画控件

    在自定义用户控件内添加3个border(左.中.右,以下分别简称为:b1.b2.b3),对border进行缩放和移动动画.往右切换时b1放大平移到b2的位置,b2缩小平移到b3的位置,b3平移到b1的 ...

  6. DLL动态库的创建,隐式加载和显式加载

    动态库的创建 打开VS,创建如下控制台工程,工程命名为DllTest: 在弹出的对话框中选择"DLL"后单击"完成"按钮: 在工程中新建DllTest.h和Dl ...

  7. 使用python移动飞信模块发送短信

    作者:miaoo 1.应用场景 由于自己做的一个系统需要用到发送短信到自己手机的功能,于是搜索了一下,发现了一个通过移动飞信通道发送短信开源库:PyFetion PyFetion 模拟实现了飞信的通信 ...

  8. QPointer,QSharedPointer,QWeakPointer的区别与使用例子(QSharedPointer类似Delphi里的引用计数,是强引用,而QWeakPointer是弱引用,不影响原始对象的引用计数,相当于是在暗中观察对象,但保持联系,需要的时候就会出现)

    QPointer is a template class that provides guarded pointers to Qt objects and behaves like a normal ...

  9. ShopNC本地生活o2o网站的源代码,没有域名限制

    较前某VIP源代码论坛分享了套ShopNC本地生活o2o站点系统.下载过来却发现根本不能用,所以一直没分享出来.今天咱们这边分享的这套ShopNC本地生活o2o站点源代码,无不论什么的限制,直接ins ...

  10. String转Color

    原文:String转Color 很硬性的转换,谁知道更好的忘不吝赐教啊. /// <summary> /// String To Color /// </summary> // ...