链接:http://211.140.156.254:2333/contest/65

  这次Rating重回Rank18,我是20的守门员(滑稽)

  这次题目和数据普遍偏水,我T2打错了一个变量名竟然过了所有的样例而且有90分(滑稽)

  但最后一题SB了,忽略了还有不为2的几次幂的情况,所以炸成10分。

  200分竟然Rank6,不过xu‘yi’zhou大佬直接AK了这场比赛。

  

  T1 类欧几里得算法(不存在的,爆搜+打表找规律)

  给出的标算是这样的: 

比较简单的类欧几里得算法,考虑如果当前所需电阻

  • 大于1,串联 1Ω 电阻

  • 小于1,并联 1Ω 电阻

  然后给出我的算法:

  首先根据简单的物理学知识,可以得到当目前电阻为a/b时,再加上一个电阻的情况有:

  a+b/b(串联上一个1Ω的电阻)

  a/a+b(并联上一个1Ω的电阻)

  所以我们暴力广搜,别指望过去

  然后准备好纸和笔,令读入的两个数为a/b,开始:

  for (a=1;;++a)

  for (b=1;;++b)

  让你的暴力开始跑吧,我们定义ans=(a,b)

  可以得到这些性质:

  (a,1)=(1,a)=a

  (a,b)=(b,a)

  (a,b+a)=(a,b)+b/a

  然后发现这些性质后就可以直接递归求解了(我用了迭代,注意边界为a=1)

  CODE

#include<cstdio>
using namespace std;
typedef long long LL;
LL a,b,ans;
inline void swap(LL &a,LL &b)
{
LL t=a; a=b; b=t;
}
int main()
{
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
scanf("%lld%lld",&a,&b);
for(;;)
{
if (a>b) swap(a,b);
if (a==) { printf("%lld",ans+b); break; }
if (b%a==) { printf("%lld",ans+b/a); break; }
ans+=b/a; b%=a;
}
return ;
}

  T2 一道比较简单的贪心题目

  先把数组sort一遍,如果没有1的话就输-1

  考虑已经能组合出 1∼x 的数值

  那么下一个硬币取 x 以内最大的数 k

  使能组合出 1∼x+k,直到得到要求的个数

  由于这里x的范围较大,所以每一次推进不能拿来加(要不然就等着吃TLE吧),%一下即可

  CODE

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;
const LL N=;
LL a[N],ans,x,n,now,last;
inline char tc(void)
{
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
}
inline void read(LL &x)
{
x=; char ch=tc();
while (ch<''||ch>'') ch=tc();
while (ch>=''&&ch<='') x=x*+ch-'',ch=tc();
}
int main()
{
//freopen("B.in","r",stdin); freopen("B.out","w",stdout);
register int i;
read(x); read(n);
for (i=;i<=n;++i)
read(a[i]);
sort(a+,a+n+);
if (a[]!=) { puts("-1"); return ; }
ans=now=last=; a[n+]=x+;
while (now<x)
{
while (now>=a[last+]-&&last<n) ++last;
if (last==n) { ans+=(x-now)/a[last]; break; }
ans+=(a[last+]-now-)/a[last]+; now+=((a[last+]-now-)/a[last]+)*a[last];
}
printf("%lld",ans);
return ;
}

  T3 首先可以考虑一下性质:对于数列中的数,如果不是2的整数幂只要在最后乘上去就可以了(原理很简单,主要开始没想到这个导致写了一个可以过的DP但后来放弃了)

  还有一点,当所有的数都是2的幂次的时候,判断是否可以合出2048只需要判断它们的和是否达到2048即可(可以自己想像2进制的加法,就是2048的原理)

  所以我们用一个类似于背包的东西来记录所有价值和小于2048的方案(大于的可能会很麻烦),用子段的总数减去即可。

  所有还要乘上非2的幂次的数,由于全部都是2的幂次,快速幂求之。

  CODE

#include<cstdio>
using namespace std;
const int P=,mod=;
int f[P],n,x,m,tot,ans;
inline char tc(void)
{
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=; char ch=tc();
while (ch<''||ch>'') ch=tc();
while (ch>=''&&ch<='') x=x*+ch-'',ch=tc();
}
inline void inc(int &x,int y)
{
if ((x+=y)>=mod) x-=mod;
}
inline void dec(int &x,int y)
{
if ((x-=y)<) x+=mod;
}
inline int quick_pow(int x,int p)
{
int res=;
while (p)
{
if (p&) res=((long long)res*x)%mod;
x=((long long)x*x)%mod;
p>>=;
}
return res;
}
int main()
{
//freopen("C.in","r",stdin); freopen("C.out","w",stdout);
register int i,j;
read(n); f[]=;
for (i=;i<=n;++i)
{
read(x);
if (x^(x&-x)) continue;
for (++m,j=P-;j>=x;--j)
inc(f[j],f[j-x]);
}
for (i=;i<P;++i)
inc(tot,f[i]);
int now=quick_pow(,m);
dec(ans=quick_pow(,m),tot);
ans=((long long)ans*quick_pow(,n-m))%mod;
printf("%d",ans);
return ;
}

EZ 2018 03 23 NOIP2018 模拟赛(五)的更多相关文章

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

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

  2. EZ 2018 03 16 NOIP2018 模拟赛(四)

    链接:http://211.140.156.254:2333/contest/64 我去掉了一百多分! 这次的题目怎么说呢,特别水,但是就是出现了一些很逗的错误导致炸裂. 最好笑的是SB的不只我一个: ...

  3. EZ 2018 03 09 NOIP2018 模拟赛(三)

    最近挺久没写比赛类的blog了 链接:http://211.140.156.254:2333/contest/59 这次的题目主要考验的是爆搜+打表的能力 其实如果你上来就把所有题目都看过一次就可以知 ...

  4. EZ 2018 06 17 NOIP2018 模拟赛(十九)

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

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

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

  6. EZ 2018 05 20 NOIP2018 模拟赛(十五)

    这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...

  7. EZ 2018 06 24 NOIP2018 模拟赛(二十)

    很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...

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

    这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...

  9. EZ 2018 05 26 NOIP2018 模拟赛(十六)

    这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...

随机推荐

  1. 带你从零学ReactNative开发跨平台App开发(二)

    ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...

  2. [Linux]《鸟哥的私房菜》笔记 (缓慢更新)

    暂时不更新了..这几天一看起书来发现内容很多,这样写blog太慢,也没意义.所以现在是每天看书,在笔记本上记笔记,再配合着<操作系统>和 linux内核 加深理解.往后会以心得体会为主写一 ...

  3. 适用于 Windows 的自定义脚本扩展

    自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...

  4. Oracle EBS 创建 RMA

    DECLARE l_api_version_number NUMBER := 1; l_return_status VARCHAR2(2000); l_msg_count NUMBER; l_msg_ ...

  5. QtDesigner与程序设计模式

    在我的上一篇博文中提到我认识到UI设计的重要性.在这里将解析一下使用QtDesigner设计UI进行程序GUI的设计,QtDesigner的.ui文件可以转化为许多的程序代码,比如我知道的就有:c++ ...

  6. 使用mysqldump备份时为什么要加上 -q 参数(5.7默认为on)

    使用mysqldump备份时为什么要加上 -q 参数(5.7默认为on) 写在前面:我们在使用mysqldump备份数据时,请一定记住要加上 -q 参数,后果可能是很严重的,不要给自己挖坑哦. 先来看 ...

  7. Java 中File类的createNewFile()与createTempFile(), delete和deleteOnExit区别

    1. Java 中File类的createNewFile()与createTempFile()的区别 最近,在看代码时看到了一个方法, File.createTempFile() ,由此联想到File ...

  8. 【转】Java学习---Java Web基础面试题整理

    [原文]https://www.toutiao.com/i6592359948632457731/ 1.什么是Servlet? 可以从两个方面去看Servlet: a.API:有一个接口servlet ...

  9. sql !=与null

    在写SQL 条件语句是经常用到 不等于‘<>’的筛选条件,此时要注意此条件会将字段为null的数据也当做满足不等于的条件而将数据筛选掉. 例:表A A1  B1 1 0 2 1 3 NUL ...

  10. 关于Java集合类库中的几种常用队列

    Java中几种常用的队列 阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞.试图从空的阻塞队列中获取元素的线程将会被阻塞 ...