EZ 2018 02 28 NOIP2018 模拟赛(二)
我TM的终于改完了(其实都是SB题)
题目链接:http://211.140.156.254:2333/contest/53
T1送分,T2前40%送分,还有骗分机制在里面,T3暴力50
所以200应该有的吧(事后诸葛亮)
但T2的第一问智障了,但是无解骗分(直接搞一个数再开个根)弄了38分,所以RANK还是蛮高的。
日常膜拜dalao CJJ 终于涨Rating了
T1 很无脑,但有点坑。就是纯的高精度乘法,注意一下0.2输出.2之类的问题就好了
小数点不用管,最后算一下小数部分几位再输出就可以了
CODE
#include<cstdio>
#include<string>
#include<iostream>
#include<cstring>
using namespace std;
string s;
int a[],b,p,i,j,last[],ans[],k,len;
int main()
{
//freopen("A.in","r",stdin); freopen("A.out","w",stdout);
cin>>s; cin>>b; last[len=]=;
while (s[]=='') s.erase(,);
while (s[s.size()-]==''||s[s.size()-]=='.') s.erase(s.size()-,);
for (i=s.size()-;i>=;--i)
if (s[i]=='.') p=k; else a[++k]=s[i]-'';
p*=b;
while (b--)
{
memset(ans,,sizeof(ans));
for (i=;i<=len;++i)
for (j=;j<=k;++j)
{
ans[i+j-]+=last[i]*a[j];
ans[i+j]+=ans[i+j-]/;
ans[i+j-]%=;
}
if (ans[k+len]!=) len=k+len; else len=k+len-;
for (i=;i<=len;++i)
last[i]=ans[i];
}
for (i=len;i>=p+;--i)
putchar(ans[i]+'');
if (p) putchar('.');
for (i=p;i;--i)
putchar(ans[i]+'');
return ;
}
T2 无脑数学推理即可。
考虑找出所有数的最小质因数(素数打表即可),然后我们可以发现
对于第一问,每次将素数个数集合一分为二,然后重复直到大小为一,如样例最小质因数集合为{5,2,1,1},质因数为{2,3,5,7};
则

所以答案就是不停地加1除以2直到等于1即可
然后是第二问,我们肯定希望个数最多的最早询问(贪心),但在操作过程中会发现这不一定最优
于是我们倒着想,从最少的向上合并,每次找出集合中最少的两个数加起来,这样就倒着实现了贪心
也可以用样例理解一下

所以总平均代价=9+4+2=15;15/9≈1.666667
小根堆即可
CODE
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
const int prime[]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,},N=,SIZE=;
priority_queue< int,vector<int>,greater<int> > tree;
int c[N],t[N],cnt,i,j,n,x,ans;
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline int work(int x,int dep)
{
if (x==) return dep;
work((x+)/,dep+);
}
int main()
{
read(n);
for (i=;i<=n;++i)
{
read(x);
for (j=;j<SIZE;++j)
if (x%prime[j]==) { c[i]=prime[j]; break; }
if (!c[i]) c[i]=x;
}
sort(c+,c+n+);
for (i=;i<=n;++i)
if (c[i]^c[i-]) t[++cnt]++; else t[cnt]++;
printf("%d\n",work(cnt,));
for (i=;i<=cnt;++i)
tree.push(t[i]);
for (i=;i<cnt;++i)
{
int x=tree.top(); tree.pop();
int y=tree.top(); tree.pop();
ans+=x+y; tree.push(x+y);
}
printf("%.6lf",(double)ans/n);
return ;
}
T3 大力数据结构题。
考虑一个50分的算法:对于每次询问,O(n)找出所有a[i]>=x>a[i-1]的数的对数,就使ans++
但如果优化可能会比较困难。
所以考虑另一种算法:记录每一个高度下的ans[](即此时如果洪水高度为x,那么可以直接得到ans[x]),比如样例:

当a[4]变成1后:

有没有发现,当一个石头下降(or 上升)时,如果当前高度x下,它两边都有石头(在此高度下),那么相应的ans[x]就+1;它两边都是空的(在此高度下),那么相应的ans[x]就-1;否则不变。
所以相当于我们在修改时先把当前石头高度清零,再把它拔到对应的高度下,所以每次更新都是区间的。
因此线段树or树状数组即可
由于a[i]<=1e9,因此我们把所有数据都读进来再离散化一下就可以了
线段树CODE
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=;
struct data
{
int num,x,id,r;
}a[N];
int tree[N*],add[N*],n,m,i,opt,cnt;
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline void write(int x)
{
if (x/) write(x/);
putchar(x%+'');
}
inline int max(int a,int b)
{
return a>b?a:b;
}
inline int min(int a,int b)
{
return a<b?a:b;
}
inline int comp1(data a,data b)
{
return a.x<b.x;
}
inline int comp2(data a,data b)
{
return a.num<b.num;
}
inline void up(int root)
{
tree[root]=tree[root*]+tree[root*+];
}
inline void down(int root,int l,int r)
{
if (add[root])
{
tree[root*]+=add[root]*l;
tree[root*+]+=add[root]*r;
add[root*]+=add[root];
add[root*+]+=add[root];
add[root]=;
}
}
inline void change(int root,int l,int r,int beg,int end,int v)
{
if (l>=beg&&r<=end)
{
tree[root]+=(r-l+)*v;
add[root]+=v;
return;
}
int mid=l+r>>;
down(root,mid-l+,r-mid);
if (beg<=mid) change(root*,l,mid,beg,end,v);
if (end>mid) change(root*+,mid+,r,beg,end,v);
up(root);
}
inline int query(int root,int l,int r,int id)
{
if (l==r&&l==id) return tree[root];
int mid=l+r>>,res=;
down(root,mid-l+,r-mid);
if (id<=mid) res+=query(root*,l,mid,id);
if (id>mid) res+=query(root*+,mid+,r,id);
return res;
}
int main()
{
read(n); read(m);
for (i=;i<=n;++i)
read(a[i].x),a[i].num=i;
for (i=n+;i<=n+m;++i)
{
read(opt);
if (opt==) read(a[i].x),a[i].num=i;
if (opt==) read(a[i].id),read(a[i].x),a[i].num=i;
}
sort(a+,a+n+m+,comp1);
for (i=,a[].r=;i<=n+m;++i)
if (a[i].x!=a[i-].x) a[i].r=a[i-].r+; else a[i].r=a[i-].r; cnt=a[n+m].r;
sort(a+,a+n+m+,comp2);
for (i=;i<=n;++i)
if (a[i].r>a[i-].r) change(,,cnt,a[i-].r+,a[i].r,);
for (i=n+;i<=n+m;++i)
if (!a[i].id) write(query(,,cnt,a[i].r)),putchar('\n'); else
{
int num=a[i].id,l,r;
if (num==) l=; else l=a[num-].r;
if (num==n) r=; else r=a[num+].r;
if (max(l,r)<a[num].r) change(,,cnt,max(l,r)+,a[num].r,-);
if (min(l,r)) change(,,cnt,,min(a[num].r,min(l,r)),);
a[num].r=a[i].r;
if (max(l,r)<a[num].r) change(,,cnt,max(l,r)+,a[num].r,);
if (min(l,r)) change(,,cnt,,min(a[num].r,min(l,r)),-);
}
return ;
}
EZ 2018 02 28 NOIP2018 模拟赛(二)的更多相关文章
- EZ 2018 02 26 NOIP2018 模拟赛(一)
这次是校内OJ(HHHOJ)线上比赛,网址:http://211.140.156.254:2333/contest/51 (我去刚刚快写完了手贱关掉了) 这次总体难度也不高,T1&&T ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- EZ 2018 05 04 NOIP2018 模拟赛(十二)
这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...
- EZ 2018 06 24 NOIP2018 模拟赛(二十)
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来 ...
- EZ 2018 05 20 NOIP2018 模拟赛(十五)
这次的比赛充满着玄学的气息,玄学链接 首先讲一下为什么没有第十四场 其实今天早上9点时看到题目就叫了:原题! 没错,整套试卷都做过,我还写了题解 然后老叶就说换一套,但如果仅仅是这样就没什么 但等13 ...
- EZ 2018 03 09 NOIP2018 模拟赛(三)
最近挺久没写比赛类的blog了 链接:http://211.140.156.254:2333/contest/59 这次的题目主要考验的是爆搜+打表的能力 其实如果你上来就把所有题目都看过一次就可以知 ...
- 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比我更惨 ...
随机推荐
- flutter row 文字显示不全
解决:在row层中的text层加一个expend flutter Row里面元素居中显示 new Expanded( flex: , child: new Row( children: <Wid ...
- Android--PullToRefreshListView的onRefreshComplete()不起作用的问题
今天用到了网上开源的下拉刷新组件PullToRefreshListView的第三方下拉刷新的ListView 我们发现 有时候我们当使用它的onRefreshComplete()方法是,我们下拉出来的 ...
- java基础知识文章汇总
将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...
- nopcommerce
nopcommerce是国外的一个高质量的开源b2c网站系统,基于EntityFramework4.0和MVC3.0,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的,基 ...
- SQLServer中DataLength()和Len()两内置函数的区别(转载)
最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE ...
- 基元用户模式构造--互锁构造 Interlocked 实现的异步web请求实例
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- mysql主从不同步问题 Error_code: 1236
第一种情况,开启GTID,从库与主库不同步. 1.在从库上查看从的状态 mysql> show slave status \G *************************** 1. ...
- 清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法
如下解决了五个问题 1. 清空数据 2. 有外键也可以, 因为是逆向删除, 从最后一张表删除. 且使用的是delete, 因为truncate不能对有外键的表 3. 种子问题, 如果表存在种子重设为0 ...
- Resource View Window of Visual Studio
https://msdn.microsoft.com/en-us/library/d4cfawwc.aspx For the latest documentation on Visual Studio ...
- Geometric Search
几何搜索 平衡搜索树(BST)在几何方面的应用,处理的内容变成几何对象,像点,矩形. 1d range search 先来看一维的情况,一维的范围搜索是后面的基础,处理的对象是在一条线上的点.这是符号 ...