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

前言

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

本来 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. redis 简单整理——持久化之AOF[二十]

    前言 简单介绍一下AOF. 正文 AOF(append only file)持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢复数据的目的. AOF的主要作用 是解决了 ...

  2. Borůvka MST算法

    当我认为最MST(最小生成树)已经没有什么学的了,才发现世界上还有个这个kruskal和prim结合的玩意 Borůvka 运用并查集的思想,先将每一个初始点集初始化为有且只有自己的点集,然后每一次合 ...

  3. Apsara Stack 技术百科 | 可运营的行业云,让云上资源跑起来

    ​简介:企业级云管理平台,如何打造千人千面的个性化体验,从应用.云资源.硬件等进行全局智能优化,实现资源配置的最佳配比,构建精细化运营能力? ​ 距离第一例新冠疫情病例的发现,不知不觉中已经过去两年, ...

  4. “2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席

    ​简介:2021年12月8-9日,"2021ISIG中国产业智能大会" 将在上海举行.阿里巴巴资深技术专家,钉钉宜搭创始人叶周全将作为特邀嘉宾出席大会. 2021年12月8-9日, ...

  5. WPF开源轻便、快速的桌面启动器

    前言 今天大姚给大家分享一款WPF开源.简单.轻便.快速的桌面启动器(支持多主题.多语言:简体中文.繁体中文.英文等):CurvaLauncher. WPF介绍 WPF 是一个强大的桌面应用程序框架, ...

  6. [Go] golang 去除 URI 链接中的 query string 参数

    思路是使用 golang 的 net/url 包提供的方法解析url各部分,其中 URL.RawQuery 为查询参数部分,格式如 :a=b&c=d 然后我们再通过 strings.Repla ...

  7. [FAQ] dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib

    通过 ls -al /usr/local/opt 可以看到 icu4c 链接的不是 libicui18n.64.dylib. 一般是 node 版本问题会出现该提示,通过观察版本大小,决定是升级还是使 ...

  8. STM32 ADC使用问题

    基本信息 MCU:STM32F105R8T6 库:HAL 平台:MDK 精度:12位 问题一 现象: 在测量的时候,发现采样值在 1023 ~ 1042 和 1279 ~ 1290 两个区间之间无法测 ...

  9. 21°C的冬天

    2023-12-08 16:15:36 星期五 标题没有在胡说,今天穿着初秋的衣服还嫌热,尤其是蒋震图书馆的空调更是燥热. 明天就去考教资面试了,但是一点也没有学习的兴趣,今天下午四点就写完了这周所有 ...

  10. vue安装tinyMCE

    目录 [参考视频] [参考文章] 官网: https://www.tiny.cloud/auth/signup/ 资源下载 tinymce 官方为 vue 项目提供了一个组件tinymce-vue n ...