链接: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. 'adb remount'的作用是什么?在什么情况下有用?

    'adb remount' 将 '/system' 部分置于可写入的模式,默认情况下 '/system' 部分是只读模式的.这个命令只适用于已被 root 的设备. 在将文件 push 到 '/sys ...

  2. sublime中如何用less实现css预编译

    实现css预编译的方式有很多,听说glup很流行而且功能也很强大,但是就目前的工作而言,仅要css预编译和YUIcompress就够了,接下来切入正题 Less 是一门 CSS 预处理语言,它扩展了 ...

  3. python 遇到的一些坑

    lst = [1, 2, 4] print lst.__iter__().next() # 打印出来的是 1 print lst.__iter__().next() # 打印出来的是 1 # 调用__ ...

  4. VS插件VisualSVN v5.2.3.0 破解文件

    分享一个VisualSVN v5.2.3的破解文件: >>>> 点此下载 <<<< 下载后,找到VisualSVN的安装目录,例如:C:\Program ...

  5. C#安全加密类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.S ...

  6. 分享几款常用的MySQL管理工具

    MySQL数据库以体积小.速度快.总体拥有成本低等优点,深受广大中小企业的喜爱,像我们常见的MySQL管理工具都有那些呢?下面给大家推荐六个常用的MySQL管理工具!      phpMyAdmin  ...

  7. sql server 存储过程的学习

    存储过程学习笔记 存储过程就是一条或者多条sql语句的集合,为了实现特定任务,而将一些需要多次调用的固定操作语句编写成程序段,这些程序段存储在服务器上,有数据库服务器通过程序来调用.T_SQL:存储过 ...

  8. Oracle Dynamic Performance Views Version 12.2.0.1

    Oracle Dynamic Performance ViewsVersion 12.2.0.1 https://www.morganslibrary.org/reference/dyn_perf_v ...

  9. EF5.0中的跨数据库操作

    以前在用MVC + EF 的项目中,都是一个数据库,一个DbContext,因此一直没有考虑过在MVC+EF的环境下对于多个数据库的操作问题.等到要使用时,才发现这个问题也不小(关键是有个坑).直接说 ...

  10. ASCII码查看

    字母对照表: ASCII可显示字符: ASCII控制字符: