一个人有表里两面,你能看到的,仅仅是其中一面而已。

前言

看着这套题非常不可做,但是经历的所有的模拟赛中,这次还是第一次切题(惭愧)

本来 T1 我 1h 就码完了,交了一遍 TLE90 然后后来两个小时的时候感觉不太稳,就开了氧气又交了一遍。。。

然后,就比 yspm 的提交晚了 10min ,痛失首 A。

T1 遗忘之祭仪

解题思路

小水题一道。

我打的是 \(n^4\) 的做法,但是剪枝完也就是差不多 \(n^2\) 的复杂度了。。

直接暴力扫,判断是不是可以放符卡,可以的话直接放就好了。

然后对于所谓的 \(n^2\) 的做法无非是通过 X 进行配对而已(好像没啥差别)

code

#include<bits/stdc++.h>
#define ull unsigned long long
#define f() cout<<"Pass"<<endl
using namespace std;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
const int N=1e3+10,INF=2e9;
int T,n,m,a,b,dsum,fksum;
bool s[N][N],opt[N][N];
char ch[N];
void solve()
{
for(int i=1;i<=n-a+1;i++)
for(int j=1;j<=m-b+1;j++)
{
if(!s[i][j]&&opt[1][1]) continue;
bool jud=false;
for(int p=1;p<=a;p++)
{
if(jud) break;
for(int q=1;q<=b;q++)
{
if(!s[i+p-1][j+q-1]&&opt[p][q])
{
jud=true;
break;
}
}
}
if(jud) continue;
for(int p=1;p<=a;p++)
for(int q=1;q<=b;q++)
s[i+p-1][j+q-1]^=opt[p][q];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(s[i][j])
{
printf("No\n");
return ;
}
printf("Yes\n");
}
void init()
{
dsum=0,fksum=0;
n=read();
m=read();
a=read();
b=read();
int aa=0,bb=0,pa=INF,pb=INF;
for(int i=1;i<=n;i++)
{
scanf("%s",ch+1);
for(int j=1;j<=m;j++)
{
s[i][j]=(ch[j]=='x');
dsum+=s[i][j];
}
}
for(int i=1;i<=a;i++)
{
scanf("%s",ch+1);
for(int j=1;j<=b;j++)
{
opt[i][j]=(ch[j]=='x');
fksum+=opt[i][j];
if(opt[i][j])
{
aa=max(aa,i);
pa=min(pa,i);
bb=max(bb,j);
pb=min(pb,j);
}
}
}
a=aa;
b=bb;
if(pa!=1)
{
for(int i=1;i<=a-pa+1;i++)
for(int j=1;j<=b;j++)
opt[i][j]=opt[i+pa-1][j];
a=a-pa+1;
}
if(pb!=1)
{
for(int i=1;i<=a;i++)
for(int j=1;j<=b-pb+1;j++)
opt[i][j]=opt[i][j+pb-1];
b=b-pb+1;
}
}
signed main()
{
T=read();
while(T--)
{
init();
if(a>n||b>m||(!fksum&&dsum)||(fksum&&dsum%fksum!=0))
{
printf("No\n");
continue;
}
solve();
}
return 0;
}

T2 客星璀璨之夜

解题思路

期望题,考场上看错题面,然后暴力就码错了,挂了 30pts

这个题目,正着推好像有些艰难,考虑逆推。

首先枚举星球的个数,然后枚举每一个位置上的坐标从上一层转移过来的概率,进而求出期望值。

对于每一个位置,从上一层转移过来的概率设为 p 则 \(p=\lfloor\frac{2n+1-i}{2}\rfloor\)

对于恒星有如下转移方程:

\[f_{n,i}=(f_{n-1,i}\times p+f_{n-1,i-2}\times (n-p-1)+\dfrac{f_{n-1,i-1}+f_{n-1,i-2}+1}{2})\div n
\]

对于行星有如下转移方程:

\[f_{n,i}=(f_{n-1,i}\times p+f_{n-1,i-2}\times (n-p-1)+\dfrac{f_{n-1,i}+f_{n-1,i-1}+1}{2})\div n
\]

code

#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define f() cout<<"Pass"<<endl
using namespace std;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
const int N=6e3+10,mod=998244353;
int n,ans,s[N],inv[N],f[N][N];
void INV()
{
inv[0]=inv[1]=1;
for(int i=2;i<=n*2+1;i++)
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
}
signed main()
{
n=read();
INV();
for(int i=1;i<=2*n+1;i++)
s[i]=read();
for(int i=1;i<=n;i++)
for(int j=2,p=(2*i+1-j)/2;j<=2*i+1;j++,p=(2*i+1-j)/2)
if(j&1) f[i][j]=(f[i-1][j]*p%mod+f[i-1][j-2]*(i-p-1)%mod+(f[i-1][j-1]+f[i-1][j-2]+1)%mod*inv[2]%mod)%mod*inv[i]%mod;
else f[i][j]=(f[i-1][j]*p%mod+f[i-1][j-2]*(i-p-1)%mod+(f[i-1][j]+f[i-1][j-1]+1)%mod*inv[2]%mod)%mod*inv[i]%mod;
for(int i=2;i<=2*n+1;i++)
ans=(ans+f[n][i]*(s[i]-s[i-1])%mod)%mod;
printf("%lld",ans);
return 0;
}

T3 割海成路之日

解题思路

挺好的一个题。

一般的题都是通过链的操作联想到树上。

但是,这个题对于链的操作用的线段树需要有区间的性质,似乎不能上树。。。

因此考虑别的算法。

最容易想到的就是冰茶几,毕竟所有点之间为 1 的边都可以直接缩起来。

但是这个优化好像并没有什么用。

于是我们考虑把 2 也给压进去,但是显然要和 1 做区分。

因此,开两个冰茶几,分别维护压缩路径 1 以及压缩路径 1 和 2 的情况。

接下来有了这个思路就是维护冰茶几的大小。

但是问题又出现了,对于路径 3 我们似乎无法维护。

总不能在搞一个 冰茶几吧。。。。

于是我们选择在每一条 3 所联通的节点上存储下 3 所连接的节点的贡献就好了。

代码实现上有亿点难度。。。

code

#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define f() cout<<"Pass"<<endl
using namespace std;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
const int N=3e5+10;
int n,m,ans,die[N],s[N],f[N];
int siz[2][N],fa[2][N];//0->1;1->1,2
int tot,head[N],nxt[N<<1],ver[N<<1],edge[N<<1];
void add_edge(int x,int y,int val)
{
ver[++tot]=y;
edge[tot]=val;
nxt[tot]=head[x];
head[x]=tot;
}
void dfs(int x,int fat,int val)
{
die[x]=fat;
s[x]=val;
for(int i=head[x];i;i=nxt[i])
{
int to=ver[i];
if(to==fat) continue;
dfs(to,x,edge[i]);
}
}
int find(int opt,int x)
{
if(fa[opt][x]==x) return x;
return fa[opt][x]=find(opt,fa[opt][x]);
}
void connect(int opt,int x,int y)
{
int fx=find(opt,x),fy=find(opt,y);
if(fx==fy) return ;
fa[opt][fx]=fy;
siz[opt][fy]+=siz[opt][fx];
}
signed main()
{
n=read();
m=read();
for(int i=1,x,y,val;i<n;i++)
{
x=read();
y=read();
val=read();
add_edge(x,y,val);
add_edge(y,x,val);
}
for(int i=1;i<=n;i++)
{
fa[0][i]=fa[1][i]=i;
siz[0][i]=siz[1][i]=1;
}
dfs(1,0,0);
for(int i=1;i<=n;i++)
{
if(s[i]==1||s[i]==2) connect(1,i,die[i]);
if(s[i]==1) connect(0,i,die[i]);
}
for(int i=1;i<=n;i++)
if(s[i]==3)
f[find(0,die[i])]+=siz[1][i];
for(int i=1,a,b,fro,to;i<=m;i++)
{
a=read();
b=read();
fro=read();
to=read();
if(die[a]==b) swap(a,b);
if(s[b]==3)
{
f[find(0,a)]-=siz[1][b];
f[find(0,die[find(1,a)])]+=siz[1][b];
connect(1,b,a);
s[b]=2;
}
else if(s[b]==2)
{
f[find(0,a)]+=f[b];
connect(0,b,a);
s[b]=1;
}
if(find(1,fro)==find(1,to)) printf("1 ");
else if(find(0,die[find(1,to)])==find(0,fro)) printf("1 ");
else if(find(1,die[find(0,fro)])==find(1,to)) printf("1 ");
else printf("0 ");
ans=siz[1][find(1,fro)]+f[find(0,fro)];
if(s[find(0,fro)]==3) ans+=siz[1][find(1,die[find(0,fro)])];
printf("%lld\n",ans);
}
return 0;
}

7.30考试总结(NOIP模拟28)[遗忘之祭仪·客星璀璨之夜·割海成路之日]的更多相关文章

  1. NOIP 模拟 $28\; \rm 割海成路之日$

    题解 \(by\;zj\varphi\) 用两个集合分别表示 \(1\) 边联通块,\(1,2\) 边联通块 . \(\rm son_x\) 表示当前节点通过 \(3\) 类边能到的 \(2\) 联通 ...

  2. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  3. 5.23考试总结(NOIP模拟2)

    5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...

  4. 5.22考试总结(NOIP模拟1)

    5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...

  5. 2021.9.17考试总结[NOIP模拟55]

    有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...

  6. [考试总结]noip模拟23

    因为考试过多,所以学校的博客就暂时咕掉了,放到家里来写 不过话说,vscode的markdown编辑器还是真的很好用 先把 \(noip\) 模拟 \(23\) 的总结写了吧.. 俗话说:" ...

  7. 2021.8.4考试总结[NOIP模拟30]

    T1 毛衣衬 将合法子集分为两个和相等的集合. 暴力枚举每个元素是否被选,放在哪种集合,复杂度$O(3^n)$.考虑$\textit{meet in the middle}$. 将全集等分分为两部分分 ...

  8. 2021.7.28考试总结[NOIP模拟26]

    罕见的又改完了. T1 神炎皇 吸取昨天三个出规律的教训,开场打完T2 20pts直接大力打表1h. 但怎么说呢,我不懂欧拉函数.(其实exgcd都忘了 于是只看出最大平方因子,不得不线性筛,爆拿60 ...

  9. NOIP 模拟 $28\; \rm 遗忘之祭仪$

    题解 \(by\;zj\varphi\) 直接贪心模拟即可,对于每个点,如果它未被覆盖,直接在这覆盖一次. 每个黑点只会被扫一次,所以总复杂度为 \(\mathcal O\rm (nm)\) Code ...

  10. 2021.9.28考试总结[NOIP模拟64]

    T1 三元组 发现确定\(b,c\)的情况下,\(a\)的值域是连续的.确定\(b\)后\(a+b\)的取值是\([1+b,b+b]\).树状数组维护对每个\(b\)可行的\(c\). 注意取模后取值 ...

随机推荐

  1. IIS 部署到服务器上出现数据库连接失败

    前言 以前遇到过本地运行没有任何问题,部署到服务器上却出现数据库连接失败. 正文 排查顺序: 数据库权限 我们的sql的账号决定了我们的权限,那么要观察下是否我们的账号有该数据库的读写权限,先把权限归 ...

  2. 【2021.6.26 NOI模拟】Problem B. 简单题 another solution

    Problem Description Input 从文件 b.in 中读入数据. 一个正整数 n. Output 输出到文件 b.out 中. 一个整数表示答案. Sample Data Input ...

  3. win11右下角快捷面板打不开的处理方法

    win11右下角快捷面板打不开的处理方法 在搜索中查询计算机管理(因为没有将此电脑放出来,所以就用搜索了) 然后找到服务,找到windows推送通知系统服务,右键属性,将自动改为禁用,然后停止此服务, ...

  4. 力扣682(java)-棒球比赛(简单)

    题目: 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你会得到一个记录操作的字符串列表 ops,其中 ops ...

  5. 璀璨智行:V2X车路协同智慧交通

    ​V2X车用无线通信技术是指车对外界的信息交换,作为未来智能交通运输系统的关键技术,璀璨智行潜心研究V2X技术,致力于V2X车路协同的落地,在智慧交通领域做出了卓越的贡献. 创业机会点 魏军博表示:& ...

  6. E百科 | 第2期 扒一扒能加速互联网的QUIC协议

    简介: 众所周知,QUIC(Quick UDP Internet Connection)是谷歌制定的一种互联网传输层协议,它基于UDP传输层协议,同时兼具TCP.TLS.HTTP/2等协议的可靠性与安 ...

  7. OceanBase时序数据库CeresDB正式商用 为用户提供安全可靠的数据存储管理服务

    简介: OceanBase完成OLAP和OLTP双重能力并行后,向数据管理领域多模方向迈出第一步. 近日,在数据库OceanBase3.0峰会上,OceanBase CEO杨冰宣布首个时序数据库产品C ...

  8. RDS PostgreSQL一键大版本升级技术解密

    ​简介: 内容简要: 一.PostgreSQL行业位置 二.PostgreSQL版本升级背景 三.PostgreSQL版本升级解密 四.PostgreSQL版本升级成果 一.PostgreSQL行业位 ...

  9. WPF 给 Pen 的 DashStyle 设置 0 0 的虚线数组将会让渲染线程消耗大量 CPU 资源

    给 WPF 的 Pen 的 DashStyle 属性设置 0 0 的虚线,在绘制几何图形时,绘制的几何图形的尺寸将关联渲染线程所使用的 CPU 资源.大约在周长大于 500 时,将可以从任务管理器上看 ...

  10. RT-Thead的启动流程

    一.RT-Thread启动流程 由于RT-Thread文档中心已经将得很详细了,这里我就不过多描述,有需要的可以看RT-Thread 文档中心,启动流程如下图所示: 从图中可以看出RT-Thread是 ...