享受爆零的快感

老叶本来是让初三的打的,然后我SB的去凑热闹了

TM的T2写炸了(去你妹的优化),T1连-1的分都忘记判了,T3理所当然的不会

光荣革命啊!

T1

思维图论题,CHJ dalao给出了正解但-1输成0了缅怀

而且这题不能用读优玄学

思路也很新奇,先跑一遍MST,判断是否有无解的情况

然后看一下MST中与1相连的边有几条

如果小于k那么我们把所有与1相连的边减上一个值使它们优先被选,然后跑MST

大于k就加上去即可

注意到这个值可以二分,因此不停做MST即可

CODE

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=5005,M=100005;
const double EPS=1e-5;
struct data
{
int l,r,s;
double add;
}a[M];
int n,m,k,cnt,father[N],tot;
long long ans;
inline bool comp(data a,data b)
{
return a.s+a.add<b.s+b.add;
}
inline int getfather(int k)
{
return father[k]==k?k:father[k]=getfather(father[k]);
}
inline int MST(double x)
{
register int i; int res=0,tot=0;
for (i=1;i<=m;++i)
if (a[i].l==1||a[i].r==1) a[i].add=x;
sort(a+1,a+m+1,comp);
for (i=1;i<=n;++i)
father[i]=i; ans=0;
for (i=1;i<=m;++i)
{
int fx=getfather(a[i].l),fy=getfather(a[i].r);
if (fx!=fy)
{
if (a[i].l==1||a[i].r==1) ++res;
ans+=a[i].s; ++tot;
father[fx]=fy;
}
}
if (tot!=n-1) return -1;
return res;
}
int main()
{
freopen("path.in","r",stdin); freopen("path.out","w",stdout);
register int i;
scanf("%d%d%d",&n,&m,&k);
for (i=1;i<=m;++i)
{
scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].s);
if (a[i].l==1||a[i].r==1) ++tot;
}
if (tot<k||MST(0)==-1) { puts("-1"); return 0; }
double l=-100000.0,r=100000.0;
while (r-l>EPS)
{
double mid=(l+r)/2.0;
int t=MST(mid);
if (t==k) { printf("%lld",ans); break; }
if (t>k) l=mid; else r=mid;
}
return 0;
}

T2

这么小的数据范围,就是套路的状压DP

只有我一个人想到记忆化搜索暴力玄学搜索么

好吧又是我ZZ了

首先发现n的范围只有15,果断状压成01串表示第几个串选或不选

而后预处理一个数组g[i][j]表示当t[i]上的字符为j时,与其它串的匹配情况(用二进制下压缩01串表示)

例如,四个串为

?a?

ab?

aa?

??b

例如

  • g[2]['a']=1101(与第四个,第三个,第一个串分别匹配)=13

  • g[1]['a']=1111=15

然后我们设DP数组f[i][j]表示匹配到第i位时(第i位尚未匹配)所有串的匹配情况为j(二进制下的01串)时方案总数

则有f[i][j]可以转移出

f[i+1][j&g[i][ch]]+=f[i][j]('a'<=ch<='z')

因为这里只要一个位置不匹配那就整个串都不匹配,因此只有两边都是1才满足要求

最后ans+=所有j的1的个数恰好为k个的f[len+1][j]

C++没有以字符为下标的数组,因此所有字符减去'a'即可

CODE

#include<cstdio>
#include<cstring>
using namespace std;
const int N=20,D=50,mod=1000003;
int g[D+5][30],f[D+5][(1<<N+1)+5],n,k,ans,t;
char s[N][55],ch;
inline int count(int x)
{
int tot=0;
while (x) tot+=x&1,x>>=1;
return tot;
}
int main()
{
freopen("question.in","r",stdin); freopen("question.out","w",stdout);
register int i,j; scanf("%d",&t);
while (t--)
{
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
scanf("%d%d",&n,&k);
for (i=1;i<=n;++i)
scanf("%s",s[i]+1); int len=strlen(s[1]+1);
for (i=1;i<=len;++i)
for (ch='a';ch<='z';++ch)
for (j=1;j<=n;++j)
if (s[j][i]=='?'||ch==s[j][i]) g[i][ch-'a']|=1<<j-1;
f[1][(1<<n)-1]=1; ans=0;
for (i=1;i<=len;++i)
for (j=0;j<1<<n;++j)
if (f[i][j]) for (ch='a';ch<='z';++ch)
f[i+1][j&g[i][ch-'a']]=(f[i+1][j&g[i][ch-'a']]+f[i][j])%mod;
for (i=0;i<1<<n;++i)
if (count(i)==k) ans=(ans+f[len+1][i])%mod;
printf("%d\n",ans);
}
return 0;
}

T3

这就是传说中的神题么

暴力的想法都是有的,但是就是刚不出来(只有YZC dalao拿了2分)

标算是DP+KMP+矩阵乘法(快速幂),还是不可食用的

想要标算的同学看BZOJ1009黄学长题解

EZ 2018 05 06 NOIP2018 慈溪中学集训队互测(五)的更多相关文章

  1. EZ 2018 05 26 NOIP2018 模拟赛(十六)

    这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...

  2. EZ 2018 05 20 NOIP2018 模拟赛(十五)

    这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...

  3. EZ 2018 05 13 NOIP2018 模拟赛(十三)

    这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...

  4. EZ 2018 05 04 NOIP2018 模拟赛(十二)

    这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...

  5. EZ 2018 05 01 NOIP2018 模拟赛(十一)

    莫名其妙暴涨Rating 其实题目都挺好挺简单的,但是越简单就越容易ZZ 不理解问什么第一题这么多人找环 不过T2是真心细节题,T3太难了 题目戳这里 T1 仔细分析题意发现那个交换规则就是废话,如果 ...

  6. EZ 2018 04 06 NOIP2018 模拟赛(七)

    我是链接 这次是真的惨,码了将近2hours的可持久化线段树炸掉了! 而且本地拍了一万年也没发现哪里炸了. T1 压位的入门题,话说这道题能拿个99分就可以了(100分要FFT) 对于暴力,就是暴力找 ...

  7. 【loj2461】【2018集训队互测Day 1】完美的队列

    #2461. 「2018 集训队互测 Day 1」完美的队列 传送门: https://loj.ac/problem/2461 题解: 直接做可能一次操作加入队列同时会弹出很多数字,无法维护:一个操作 ...

  8. 【2018集训队互测】【XSY3372】取石子

    题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在 ...

  9. EZ 2018 07 06 NOIP模拟赛

    又是慈溪那边给的题目,这次终于没有像上次那样尴尬了, T1拿到了较高的暴力分,T2没写炸,然后T3写了一个优雅的暴力就203pts,Rank3了. 听说其它学校的分数普遍100+,那我们学校还不是强到 ...

随机推荐

  1. Expo大作战(十三)--expo如何自定义状态了statusBar以及expo中如何处理脱机缓存加载 offline support

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  2. 【转】设置Qt应用程序图标及应用程序名

    一直以来很纠结给qt应用程序添加图标问题,在网上收过一次,但是感觉不够完整,现将自己的实现过程记录下,以便以后查看: 通过网上的例子知道qt助手中有相关说明: Setting the Applicat ...

  3. smarty详细使用教程(韩顺平smarty模板技术笔记)

    MVC是一种开发模式,强调数据的输入.处理.显示是强制分离的 Smarty使用教程1.如何配置我们的smarty解压后把libs文件夹放在网站第一级目录下,然后创建两个文件夹templates 存放模 ...

  4. Jmeter之HTTP Cookie 管理器

    Jmeter所支持的Cookie标准有很多,同时jmeter也提供两组程序实现这些cookie标准,分别是httpclient3与httpclient4.http cookie 管理器中的Implem ...

  5. Mysql 5.7源码编译启动 报error问题:The server quit without updating PID file (/data/data_mysql/mysql.pid).

    一般是报error问题就是我们的mysql没有权限,这里主要是指三点:一个是mysql的安装主目录要设为mysql用户和用户组.一个是logs目录设置为mysql用户以及用户组.还有一个是data目录 ...

  6. 高斯消去、追赶法 matlab

    1. 分别用Gauss消去法.列主元Gauss消去法.三角分解方法求解方程组 程序: (1)Guess消去法: function x=GaussXQByOrder(A,b) %Gauss消去法 N = ...

  7. FZU Monthly-201903 tutorial

    FZU Monthly-201903 tutorial 题目(难度递增) easy easy-medium medium medium-hard hard 思维难度 ABF G CH D E A. D ...

  8. vue2.0模拟锚点

    在vue项目中,因为采用路由跳转,会导致无法使用常规的a标签配合ID的锚点功能. 解决办法: <a href="javascript:void(0)" @click=&quo ...

  9. Oracle_spatial的常见错误与注意事项

    常见的错误 1.ORA-13226:没有空间索引接口将不被支持 当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误.这可能会发生在当你使用的列上没有空间索引.或者优化器没 ...

  10. BZOJ4894:天赋(矩阵树定理)

    Description 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的. 也就是说,有一些天赋必须是要在 ...