一句话:我看错考试时间了,我以为11:30结束,T2T3暴力没来得及交。

为什么考试的时间忽然变了啊。。。没转过来

一定要看清考试的起止时间!

虽说T2T3连爆搜都没打,只打特殊性质只有32分。爆搜分还挺高的。

当特殊性质不好扩展时,记得把爆搜打上。

本来是想T1先送上暴力,然后尝试肝T2,然后是T3暴力,有时间再回来优化T1。

但是整场考试时间是崩的,也没回T1。。。然而T2T3

注意分数与时间的权衡。

T1:Reverse

BFS。

二营长打法极其简单。因为是BFS所以一个点不会被多次更新。

那么一次更新了一个区间内的全部奇数或偶数,下次遇到的时候直接跳过就行了。

用链表实现,代码特别特别特别简单。常数也特别小,复杂度O(n),相较于线段树优化建边还少个log。

 #include<iostream>
using namespace std;
int dt[],q[],R[],n,m,k,S,x;
int main(){
cin>>n>>k>>m>>S;
for(int i=;i<=n;++i)dt[i]=n+,R[i]=i+;
while(m--)cin>>x,dt[x]=-;
dt[S]=;q[]=S;
for(int h=,t=;h<=t;++h){
int st=max(,q[h]-k+),l=st+st+k--q[h];st=min(n-k+,q[h]);int r=st+st+k--q[h];
for(int i=l;i<=r;i=R[i])if(dt[i]>dt[q[h]]+)dt[i]=dt[q[h]]+,q[++t]=i;
for(int i=l;i<=r;){int rr=R[i];R[i]=max(R[i],r);i=rr;}
}
for(int i=;i<=n;++i)cout<<(dt[i]>n?-:dt[i])<<" ";cout<<endl;
}

T2:Silhouette

神仙数学题,考场上死在容斥上了。

无解的判定就是横纵最大值不同。

不然的话我们把读入序列排序,对答案没有影响。

从大到小扩展,扫每一种权值。

然后这种权值占据的是一个矩形或一个L形,并且要求这个区域内每行每列都恰好出现了这个值。

容斥,f[i]表示一共a行中至少i行不满足条件。

ABab表示的是一个A×B的矩形挖掉一个(A-a)×(B-b)的小矩形之后得到的L形,当前处理的数字是S。

$f[i]=\sum\limits_{i=0}^{a}C_a^i \times (S^i \times ( (S+1)^{A-i} - S^{A-i} ) )^b \times ( S^i \times (S+1)^{a-i} )^{B-b}$

这一类“至少”的容斥也没少做,容斥系数是$(-1)^i$

式子的含义是先选出是哪i行不合条件,$C_a^i$

接下来在A×b的矩阵里选合法的方案,

考虑每一列,其中这不合法的i行不出现数字S,所以是[0,S-1]里面选,$S^i$

然后剩下的行里面需要出现数字S,那就是瞎选的方案减去没出现S的方案,即$(    (S+1)^{A-i} - S^{A-i} )$

每一列都是这样,所以要b次方

接下来需要计算那一个a×(B-b)的矩形,被限制不合法的i行还是不能放$S^i$,剩下的随便$(S+1)^{a-i}$

然后每一列都这样,要B-b次方

 #include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define mod 1000000007
#define int long long
int pw(int b,int t,int a=){for(;t;t>>=,b=b*b%mod)if(t&)a=a*b%mod;return a;}
bool com(int a,int b){return a>b;}
int fac[],x[],n,y[],ans=,invv[],inv[];
int C(int b,int t){return fac[b]*inv[t]%mod*inv[b-t]%mod;}
int cal(int A,int B,int a,int b,int s){
int tot=;
for(int i=;i<=a;++i)tot=(tot+pw(mod-,i)*C(a,i)%mod*pw(s,B*i)%mod*pw(pw(s+,A-i)-pw(s,A-i)+mod,b)%mod*pw(pw(s+,a-i),B-b))%mod;
return tot%mod+mod;
}
main(){
fac[]=inv[]=inv[]=fac[]=invv[]=;
for(int i=;i<=;++i)fac[i]=fac[i-]*i%mod,invv[i]=mod-mod/i*invv[mod%i]%mod,inv[i]=inv[i-]*invv[i]%mod;
scanf("%lld",&n);
for(int i=;i<=n;++i)scanf("%lld",&x[i]);
for(int i=;i<=n;++i)scanf("%lld",&y[i]);
sort(x+,x++n,com);sort(y+,y++n,com);
int p1=,p2=;
while(p1<=n||p2<=n){
int num=max(x[p1],y[p2]),cnt1=,cnt2=;
while(p1<=n&&x[p1]==num)p1++,cnt1++;
while(p2<=n&&y[p2]==num)p2++,cnt2++;
ans=ans*cal(p1-,p2-,cnt1,cnt2,num)%mod;
}
printf("%lld\n",ans);
}

Tips:感谢王hecao更正。

T3:Seat

skyh倾情压行注释。

[考试反思]1004csp-s模拟测试59:惊醒的更多相关文章

  1. [考试反思]0718 NOIP模拟测试5

    最后一个是我...rank#11 rank#1和rank#2被外校大佬包揽了. 啊...考的太烂说话底气不足... 我考场上在干些什么啊!!! 20分钟“切”掉T2,又27分钟“切”掉T1 切什么切, ...

  2. CSPS模拟测试59

    这场考得我心态爆炸......... 开场T1只会$n^{2}$,然后发现bfs时每个点只需要被更新一次,其他的更新都是没用的. 也就是说,我们可以只更新还没被更新的点? 于是我先YY了一个链表,发现 ...

  3. csp-s模拟测试59(10.4)「Reverse」(set)·「Silhouette」(容斥)

    A. Reverse 菜鸡wwb又不会了..... 可以线段树优化建边,然而不会所以只能set水了 发现对于k和当前反转点固定的节点x确定奇偶性所到达的节点奇偶性是一定的 那么set维护奇偶点,然后每 ...

  4. [考试反思]0814NOIP模拟测试21

    前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...

  5. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

  6. [考试反思]0909csp-s模拟测试41:反典

    说在前面:我是反面典型!!!不要学我!!! 说在前面:向rank1某脸学习,不管是什么题都在考试反思后面稍微写一下题解. 这次是真的真的运气好... 这次知识点上还可以,但是答题策略出了问题... 幸 ...

  7. [考试反思]0729NOIP模拟测试10

    安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...

  8. [考试反思]0714/0716,NOIP模拟测试3/4

    这几天时间比较紧啊(其实只是我效率有点低我在考虑要不要坐到后面去吹空调) 但是不管怎么说,考试反思还是要写的吧. 第三次考试反思没写总感觉缺了点什么,但是题都刷不完... 一进图论看他们刷题好快啊为什 ...

  9. [考试反思]1003csp-s模拟测试58:沉淀

    稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...

随机推荐

  1. ELK 学习笔记之 Logstash之filter配置

    Logstash之filter: json filter: input{ stdin{ } } filter{ json{ source => "message" } } o ...

  2. MongoDB 学习笔记之 索引

    索引: db.media.createIndex({"Tracklist": 1}) 1表示升序 -1表示降序 我们要着重看一下对数组创建索引的情况. 构建一个集合:db.medi ...

  3. redis mysql 连接池 之 golang 实现

    1 mysql 连接池代码 package lib import ( "database/sql" "fmt" "strconv" &quo ...

  4. GUI tkinter (pack、grid、place)布局篇

    """1.其实我们已经接触过 tkinter 的一种布局,就是 pack 布 局,它非常简单,我们不用做过多的设置,直接使用一个 pack 函数就可以了.2.grid 布 ...

  5. 【包教包会】Chrome拓展开发实践

    首发于微信公众号<前端成长记>,写于 2019.10.18 导读 有句老话说的好,好记性不如烂笔头.人生中,总有那么些东西你愿去执笔写下. 本文旨在把整个开发的过程和遇到的问题及解决方案记 ...

  6. 腾讯新闻抢金达人活动node同构直出渲染方案的总结

    我们的业务在展开的过程中,前端渲染的模式主要经历了三个阶段:服务端渲染.前端渲染和目前的同构直出渲染方案. 服务端渲染的主要特点是前后端没有分离,前端写完页面样式和结构后,再将页面交给后端套数据,最后 ...

  7. 【Spring Cloud】全家桶介绍(一)

    一.微服务架构 1.微服务架构简介 1.1.分布式:不同的功能模块部署在不同的服务器上,减轻网站高并发带来的压力. 1.2.集群:多台服务器上部署相同应用构成一个集群,通过负载均衡共同向外提供服务. ...

  8. c++11::initializer_list

    #include <initializer_list> template <class T> class initializer_list; initializer_list对 ...

  9. python学习-变量和简单类型(二)

    学习笔记中的源码:传送门 1.注释: 单行注释(#):多行注释("""或者''') 2.python标准数据类型:数字(numbers).字符串(string).列表(l ...

  10. alinode与node性能测试方法与分析

    需求和技术指标整理 node服务在引入node性能监控过程中,需要使用alinode,为了对alinode与官方node各项性能指标的差异有进一步的认识,现开展以下调研.测试. 原理性分析 alino ...