EZ 2018 03 23 NOIP2018 模拟赛(五)
链接: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 模拟赛(五)的更多相关文章
- EZ 2018 03 30 NOIP2018 模拟赛(六)
链接:http://211.140.156.254:2333/contest/67 转眼间上次加回来的Rating又掉完了. 这次不知为何特别水,T1想了一段时间没想出来弃了,导致后面心态炸了. T2 ...
- EZ 2018 03 16 NOIP2018 模拟赛(四)
链接:http://211.140.156.254:2333/contest/64 我去掉了一百多分! 这次的题目怎么说呢,特别水,但是就是出现了一些很逗的错误导致炸裂. 最好笑的是SB的不只我一个: ...
- EZ 2018 03 09 NOIP2018 模拟赛(三)
最近挺久没写比赛类的blog了 链接:http://211.140.156.254:2333/contest/59 这次的题目主要考验的是爆搜+打表的能力 其实如果你上来就把所有题目都看过一次就可以知 ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- EZ 2018 05 20 NOIP2018 模拟赛(十五)
这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...
- EZ 2018 06 24 NOIP2018 模拟赛(二十)
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...
- EZ 2018 06 02 NOIP2018 模拟赛(十七)
这次的比赛是真心比较狗,我TM的写了30min的树剖ZZ地直接memset超时了 话说我既然想到差分就应该去写差分的啊! 好了不过这次Rank还挺高的,终于要打进前10了当然是假的了. 好了下面开始讲 ...
- EZ 2018 05 26 NOIP2018 模拟赛(十六)
这次难道就是传说中的标准分大赛?而且这次比赛的链接不翼而飞了 一堆人153pts然后就有Rank4?看来这个Rank4不值钱了,才涨了50+的Rating. 不过还好最后5min的时候想出了T1正解, ...
随机推荐
- Android--用JS去控制WebView显示的字体的大小
<script type="text/javascript"> function changeFontSize(size) { var tfs = '120%'; va ...
- 使用GitHub-Pages创建博客和图片上传问题解决
title: 使用GitHub Pages创建博客和图片上传问题解决 date: 2017-10-22 20:44:11 tags: IT 技术 toc: true 搭建博客 博客的搭建过程完全参照小 ...
- 前端构建工具Gulp使用总结
1.安装准备 1.1 Node.js安装 在安装Gulp之前首先的安装Node.js, 安装教程详见Node.js 安装配置 1.2 npm安装 在安装node的时候会自动安装npm模块管理器,详见n ...
- Appium环境搭建python篇(mac系统)
1.安装Appium 通过终端安装: 安装nodejs,下载地址:https://nodejs.org/download/,安装完成后打开终端输入node -v,检查是否安装成功 安装npm,打开终端 ...
- sqlserver 跨服务器备份表
exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Querie ...
- IE 出现stack overflow 报错的原因归纳
1. 重定义了系统的触发事件名称作为自定义函数名如: onclick / onsubmit ... 都是系统保留的事件名称,不允许作为重定义函数名称: 2. IE缓存满了,无法写入.解决办法:清空 ...
- mysql-client 与mysql-server的区别
mysql-server 与 mysql-client是DBMS的两个面向不同操作对象的工具. server是DBMS面向物理层次,包含存储数据的一系列机制.处理方法的集成: client是DBMS面 ...
- linux操作系统基础讲解
计算机的组成及功能: 现在市场上的计算机组成结构遵循冯 诺依曼体系,由CPU.内存.I/O设备,存储四大部分组成. CPU是整个计算机的核心部件,主要由运算器和控制器组成,它负责整个计算机的程序运行以 ...
- 修改TEMPDB所在的路径
USE master go ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'Path\tempdb.mdf') go AL ...
- SDN2017 第五次实验作业
实验目的 1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 3.抓包分析验证负载均衡 实验步骤 建立以下拓扑,并连接上ODL控制器. 利用ODL下发组表.流表,实现建议负载均衡 s1组 ...