EZ 2018 05 20 NOIP2018 模拟赛(十五)
这次的比赛充满着玄学的气息,玄学链接
首先讲一下为什么没有第十四场
其实今天早上9点时看到题目就叫了:原题!
然后老叶就说换一套,但如果仅仅是这样就没什么
但等13min后结束这场考试后,一评测发现有人A了T1
但老叶并没有开启Unrated,然后大家集体垫底被踩
然后我就莫名掉了74Rating
但是之后第二场很快就开始了,但是等第二场测完之后还是没有进行Unrated处理,结果就白掉分了
真是Dog至极
然后讲一下题目,这次主要是T2炸了,花了蛮长时间写O(n^2)的玄学的,然后所有数据点中竟没有一个点的n小于5000(全是90000+)
但是T3莫名快速幂多得了40pts还是很令人欣慰的
T1
这道题无疑是本场最不可做的一道题
具体的满分算法需要二维树状数组 or 主席树来搞
这里就直接优化一下暴力得50pts就很优秀了
由于本题数据n的范围不大,可以直接埃式筛来搞
50CODE
#include<cstdio>
using namespace std;
const int N=100005,MAX_SIZE=1000005;
int a[N],n,q,l[N],r[N],x[N],y[N],max_num;
bool prime[MAX_SIZE];
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 void write(long long x)
{
if (x/10) write(x/10);
putchar(x%10+'0');
}
inline int max(int a,int b)
{
return a>b?a:b;
}
inline void get_prime(int m)
{
register int i,j;
for (prime[1]=1,i=2;i<=m;++i)
if (!prime[i]) for (j=i<<1;j<=m;j+=i) prime[j]=1;
}
inline long long work(int l,int r,int x,int y)
{
long long tot=0; register int i,j;
for (i=x;i<=y;++i)
if (!prime[i])
for (j=l;j<=r;++j)
{
int now=a[j];
while (!(now%i)) ++tot,now/=i;
}
return tot;
}
int main()
{
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
register int i;
for (read(n),i=1;i<=n;++i)
read(a[i]);
for (read(q),i=1;i<=q;++i)
read(l[i]),read(r[i]),read(x[i]),read(y[i]),max_num=max(max_num,y[i]);
get_prime(max_num);
for (i=1;i<=q;++i)
write(work(l[i],r[i],x[i],y[i])),putchar('\n');
return 0;
}
T2
这其实时一道比较经典的水题了
我们先考虑在一条直线上的情况,就是Luogu P1367
假设两只蚂蚁A,B面对面相遇:
然后他们掉头,相当于穿过了对方并且互换身份:
但是有一个性质:它们的相对位置不会改变
什么意思——就是不管它们怎么移动,第i只蚂蚁的左边一定是第i-1只蚂蚁,右边一定是第i+1只蚂蚁
然后只要sort一下就可以了
但是对于这道题是一个圆的情况,则有些在后面的蚂蚁可能会排到前面去
但是蚂蚁的位置还是不变,并且相对位置保持相对不变,因此我们只要知道第1只蚂蚁的位置就可以顺次求出后面蚂蚁的位置
我们设第一只蚂蚁的相对排名为cnt,初始值为1.每当一只蚂蚁从l-1到达0时,cnt++;每当一只蚂蚁从0爬到l-1时,cnt--
然后就排序后通过cnt正确输出顺序即可
因为当前HHHOJ没有开放这次题目,因此到Atcoder提交即可
CODE
#include<cstdio>
#include<algorithm>
const int N=1e5+5;
int a[N],n,l,t,x,w;
long long cnt=1;
using namespace std;
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 void write(int x)
{
if (x/10) write(x/10);
putchar(x%10+'0');
}
int main()
{
//freopen("B.in","r",stdin); freopen("B.out","w",stdout);
register int i;
read(n); read(l); read(t);
for (i=1;i<=n;++i)
{
read(x); read(w);
if (w==1) a[i]=(x+t)%l,cnt+=(x+t)/l; else a[i]=(x-t%l+l)%l,cnt-=t%l>x?t/l+1:t/l;
}
cnt=(cnt%n+n-1)%n+1;
sort(a+1,a+n+1);
for (i=cnt;i<=n;++i)
write(a[i]),putchar('\n');
for (i=1;i<cnt;++i)
write(a[i]),putchar('\n');
return 0;
}
T3
首先30pts的爆搜不讲
然后这题有一个性质:若n>=m,即ans为2^2m,因为就有所有的塔都有可能红或蓝
快速幂求之即可,结合爆搜可以得70pts
考虑DP,这里用r表示红的,b表示蓝的
我们首先发现,每一次操作的时候加上去的要么是"rr","rb","br","bb",而且手上红色蓝色的和总是为n
而且条件很简单,若第一位r则此时手上必须有1个r
然后我们设f[i][j]表示进行第i次操作时手上有j个红色的方案总数,则蓝的有n-j个
又发现这样可能会用重复的方案,然后我们发现:若对于两种状态,手上的红色个数不为0,那么它们就重复了
因此我们设f[i][j][0/1]表示此时红色的是否取完过,然后再转移即可
CODE
#include<cstdio>
#include<cstring>
using namespace std;
const int N=3005,mod=1e9+7;
int f[2][N][2],n,m,ans;
inline void inc(int &x,int y)
{
x+=y; x-=x>=mod?mod:0;
}
int main()
{
register int i,j,k;
scanf("%d%d",&n,&m);
for (i=1;i<=n;++i)
f[0][i][0]=1; f[0][0][1]=1;
for (i=0;i<m;++i)
{
int now=i&1,nxt=now^1;
memset(f[nxt],0,sizeof(f[nxt]));
for (j=0;j<=n;++j)
for (k=0;k<=1;++k)
{
if (j) inc(f[nxt][j-1][k|(j==1)],f[now][j][k]);
if (j) inc(f[nxt][j][k|(j==1)],f[now][j][k]);
if (n-j) inc(f[nxt][j+1][k],f[now][j][k]);
if (n-j) inc(f[nxt][j][k],f[now][j][k]);
}
}
for (i=0;i<=n;++i)
inc(ans,f[m&1][i][1]);
printf("%d",ans);
return 0;
}
EZ 2018 05 20 NOIP2018 模拟赛(十五)的更多相关文章
- EZ 2018 05 04 NOIP2018 模拟赛(十二)
这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...
- EZ 2018 05 26 NOIP2018 模拟赛(十六)
这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...
- EZ 2018 05 13 NOIP2018 模拟赛(十三)
这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...
- EZ 2018 05 01 NOIP2018 模拟赛(十一)
莫名其妙暴涨Rating 其实题目都挺好挺简单的,但是越简单就越容易ZZ 不理解问什么第一题这么多人找环 不过T2是真心细节题,T3太难了 题目戳这里 T1 仔细分析题意发现那个交换规则就是废话,如果 ...
- EZ 2018 03 23 NOIP2018 模拟赛(五)
链接:http://211.140.156.254:2333/contest/65 这次Rating重回Rank18,我是20的守门员(滑稽) 这次题目和数据普遍偏水,我T2打错了一个变量名竟然过了所 ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- EZ 2018 06 24 NOIP2018 模拟赛(二十)
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...
- EZ 2018 04 21 NOIP2018 模拟赛(十) -LoliconAutomaton的退役赛
难得的一次Unrated,避免了重回1500的尴尬 其实题目都还可以,但只不过所有人T1都炸了,可能是数据的锅(假的) 而且我因为T1SB的把T2弃了,没想到是千年水题 T3莫名爆炸,然后TM的40分 ...
随机推荐
- .NET中资源文件的使用
工作需要,为VB.NET WinForm程序提供一个中英文界面切换功能,大方向有三个ini.XML.资源文件. 首先ini太过时,坚决不打算用.资源文件和XML相比提供了一个资源文件管理器,编写键值对 ...
- Git服务器配置及本地克隆提交、服务器获取
1.服务器Git安装配置 相关链接 相关链接 注意ssh-keygen .修改权限 权限: 相关链接 2.本地获取 git clone name@ip:服务器项目位置 相关链接 3.创建 ...
- PHP开发APP接口学习笔记
习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...
- 04-openldap客户端安装
阅读视图 基础环境准备 关闭sssd及安装nslcd客户端 配置nslcd客户端 启动nslcd进程 客户端验证 ssh登录自动创建家目录 1. 基础环境准备 本文承接openldap服务端安装配置, ...
- word中从正文开始编码的方法
假如第1页和第2页是首页和目录,你想从第3页的正文开始设置页码 1. 将光标移到第二页的最后位置,点击插入“分隔符”,选择“分节类型”的“下一页”,确定.这时光标自动移到第三页. 2. 点击插入页码, ...
- MD5生成
/// <summary> /// 32位MD5加密 /// </summary> /// <param name="input"></p ...
- weblogic CVE-2018-2628漏洞利用工具
weblogic CVE-2018-2628漏洞利用 漏洞环境: Windows2018R2 weblogic10.3.6 漏洞利用过程: 搭建好存在CVE-2018-2628漏洞的weblogic平 ...
- 反射的作用—>实现框架的功能
框架与框架要解决的核心问题 我们做房子卖给用户住,用于用户自己安装门窗和空调,我做的房子就是框架,用户需要使用我的框架,把门窗插入进我提供的框架中.框架与工具类有区别,工具类被用户的类调用,而框架则是 ...
- win7系统开机后电脑桌面背景变黑的解决方法
自从微软放弃了对win7系统的维护更新,一些BUG也就慢慢出现了,最近用户反映,开机后电脑桌面背景变黑,即使重新换了桌面背景,还是会出现这种情况.下面小编就来告诉大家怎样解决这一问题. 1.点击开始菜 ...
- 彻底修改 Windows 系统用户名
在 Windows 安装的时候会输入一个用户名,电脑店装的一般都会给你设置成Admin之类的.这个时候你想要改成自己的,一般都是直接在 控制面板 > 用户帐户和家庭安全 > 用户帐户 &g ...