莫名其妙暴涨Rating

其实题目都挺好挺简单的,但是越简单就越容易ZZ

不理解问什么第一题这么多人找环

不过T2是真心细节题,T3太难了

题目戳这里

T1

仔细分析题意发现那个交换规则就是废话,如果有方案的话相当于直接把邮票给别人,因此就很显然了

把人和邮票分开来,由每个人向自己想要的邮票建一条边。最后看一看是否存在完美匹配即可

懒得写网络流了,然后匈牙利哲学复杂度,O(能过)

CODE

#include<cstdio>
#include<cstring>
using namespace std;
const int N=10005;
struct edge
{
int to,next;
}e[N<<1];
int from[N],head[N],n,m,cnt,ans,x,y;
bool vis[N];
inline void read(int &x)
{
x=0; char ch=getchar();
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
}
inline void add(int x,int y)
{
e[++cnt].to=y; e[cnt].next=head[x]; head[x]=cnt;
}
inline bool find(int now)
{
for (register int i=head[now];i!=-1;i=e[i].next)
if (!vis[e[i].to-n])
{
vis[e[i].to-n]=1;
if (!from[e[i].to-n]||find(from[e[i].to-n]))
{
from[e[i].to-n]=now;
return 1;
}
}
return 0;
}
int main()
{
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
register int i;
while (scanf("%d%d",&n,&m)!=EOF)
{
memset(head,-1,sizeof(head));
memset(e,-1,sizeof(e));
memset(from,0,sizeof(from));
for (cnt=0,i=1;i<=m;++i)
read(x),read(y),add(x,y+n);
for (ans=0,i=1;i<=n;++i)
memset(vis,0,sizeof(vis)),ans+=find(i);
puts(ans^n?"NO":"YES");
}
return 0;
}

T2

粗看上去很难的一道题,其实很。。。。。。

由于要让所有长度为k的子串都是一些字符串的字串,因此我们想到把字符串的所有长度为k-1的字串hash后当成一个点,然后相邻的字串对应的点之间连一条边

然后,如果有环则可以无限刷下去

所以我们先判环,再找出最长路

但是SPFA判环的复杂度是O(哲学),而且这里边权都是1,因此我们可以用基于广搜的拓扑排序来搞,复杂度O(n)

不过这里最难写的其实还是hash,这里不像写自然溢出因为涉及到减法,所以hash成一个longlong的数然后开个map就好了

CODE

#include<cstdio>
#include<cstring>
#include<map>
using namespace std;
typedef long long LL;
const int N=100005,seed=2333;
struct edge
{
int to,next;
}e[N];
map <LL,int> hash;
LL pow[N];
int head[N],q[N],step[N],ru[N],tot,cnt,n,k,ans;
char s[N];
inline void add(int x,int y)
{
e[++cnt].to=y; e[cnt].next=head[x]; head[x]=cnt; ++ru[y];
}
inline int max(int a,int b)
{
return a>b?a:b;
}
inline void clear(void)
{
hash.clear();
memset(head,-1,sizeof(head));
memset(e,-1,sizeof(e));
memset(ru,0,sizeof(ru));
memset(step,0,sizeof(step));
ans=cnt=tot=0; --k;
}
inline int topo(void)
{
register int i; int H=0,T=0;
for (i=1;i<=tot;++i)
if (!ru[i]) step[i]=k,q[++T]=i;
while (H<T)
{
int now=q[++H]; ans=max(ans,step[now]);
for (i=head[now];i!=-1;i=e[i].next)
if (!(--ru[e[i].to])) step[e[i].to]=max(step[e[i].to],step[now]+1),q[++T]=e[i].to;
}
return T;
}
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
register int i;
for (pow[0]=1,i=1;i<N;++i) pow[i]=pow[i-1]*seed;
while (scanf("%d%d",&n,&k)!=EOF)
{
clear();
while (n--)
{
scanf("%s",s+1); int len=strlen(s+1);
LL now=0,last;
for (i=1;i<=k;++i)
now=now*seed+s[i];
if (!hash[now]) hash[now]=++tot;
for (last=now,i=k+1;i<=len;++i)
{
now=(last-pow[k-1]*s[i-k])*seed+s[i];
if (!hash[now]) hash[now]=++tot;
add(hash[last],hash[now]); last=now;
}
}
if (!k) { puts("INF"); continue; }
if (topo()!=tot) { puts("INF"); continue; } else printf("%d\n",ans);
}
return 0;
}

T3

这道题考试的时候也没多想,直接码了一个暴力

然后事实证明这是最明智的选择

对于这种需要大量数学基础的题目连组合数都看不出来的我还是原地爆炸算了

标算在此

爆搜30CODE

#include<cstdio>
#include<vector>
using namespace std;
const int N=1000005,mod=1000000007;
vector <int> r[N];
int n,m,t,a[N],x,y,f[N],s[N],ans;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline int max(int a,int b)
{
return a>b?a:b;
}
inline bool check(void)
{
for (register int i=1;i<=m;++i)
{
int res=0;
for (register int j=0;j<r[i].size();++j)
res+=f[r[i][j]];
if (res!=s[i]) return 0;
}
return 1;
}
inline void DFS(int now)
{
if (now>n) { if (check()) ans=ans+1==mod?0:ans+1; return; }
for (register int i=0;i<=a[now];++i)
{
f[now]=i;
DFS(now+1);
}
}
int main()
{
//freopen("C.in","r",stdin); freopen("C.out","w",stdout);
register int i,j;
read(n); read(m);
for (i=1;i<=m;++i)
{
read(x);
for (j=1;j<=x;++j)
read(y),r[i].push_back(y);
for (read(s[i]),j=0;j<r[i].size();++j)
a[r[i][j]]=max(a[r[i][j]],s[i]);
}
for (read(t),i=1;i<=t;++i)
read(x),read(y),a[x]=y;
DFS(1);
printf("%d",ans);
return 0;
}

EZ 2018 05 01 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 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  6. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  7. EZ 2018 04 21 NOIP2018 模拟赛(九)

    终于停止了掉Rating的浪潮! 猥琐的链接 这次200分才Rank10,而且很多人并列 庆幸T2最后20分钟发现期望的算法打错了,然后拿到了50pts,250收场 T1 水题*1 这道题不仅做过,而 ...

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

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

  9. EZ 2018 03 30 NOIP2018 模拟赛(六)

    链接:http://211.140.156.254:2333/contest/67 转眼间上次加回来的Rating又掉完了. 这次不知为何特别水,T1想了一段时间没想出来弃了,导致后面心态炸了. T2 ...

随机推荐

  1. Jaguar_websocket结合Flutter搭建简单聊天室

    1.定义消息 在开始建立webSocket之前,我们需要定义消息,如:发送人,发送时间,发送人id等.. import 'dart:convert'; class ChatMessageData { ...

  2. 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)

    使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...

  3. 大于2t的磁盘分区,并格式化ext4挂载

    1:MBR分区表:(MBR含义:主引导记录) 所支持的最大卷:2T (T; terabytes,1TB=1024GB) 对分区的设限:最多4个主分区或3个主分区加一个扩展分区. 2:GPT分区表:(G ...

  4. SQL Server下ADO.NET 怎么获取数据库SQL语句INSERT,UPDATE,DELETE了多少行数据

    ADO.NET 在发送SQL语句到SQL Server数据库后,怎么知道真正INSERT,UPDATE,DELETE了多少行数据呢? 使用SQL Server内置的全局变量@@ROWCOUNT即可,@ ...

  5. C# 泛型约束 xxx<T> Where T:约束(一)

    泛型约束 代码举例 发现我们游戏的代码中,主程写了很多类似这样的代码: public static T CreateObject<T>(out int objectId) where T ...

  6. Linux 快速查看系统配置-熟悉新环境的配置

    问题背景: 当我们使用新的环境的时候,需要很快得熟悉自己环境的配置,这时候我们如果知道一些命令就极为方便了.这样你就能对自己的环境较为熟悉,进行工作的时候也能随心所欲了. 如果你使用workstati ...

  7. C# MVC 使用 CKEditor图片上传 提示“不正确的服务器响应”

    重点:看一下你使用的CKEditor版本 过程: 后台需要一款富文本编辑器.经过挑选后,最后选择了FCKEditor 的升级版 CKEditor .在官网下载了4.10.1版本. 经过一番配置后,富文 ...

  8. day2-课堂笔记

    #面向对象 函数=方法 系统内建函数:len().id() 对象函数

  9. MP实战系列(八)之SpringBoot+Swagger2

    SpringBoot一个原则,爱好编程的朋友们都知道,那就是"习惯优于配置". 今天一上来主要说的还是代码,个人比较喜欢来的实战系列的,不过有的时候还是比较偏重于理论,理论是造轮子 ...

  10. 垃圾回收相关(深入理解Java虚拟机中的内容)

    程序计数器.虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收.垃圾回收主要是针对 Java 堆和方法区进行. 判断一个对 ...