我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 模拟赛(二)的更多相关文章

  1. EZ 2018 02 26 NOIP2018 模拟赛(一)

    这次是校内OJ(HHHOJ)线上比赛,网址:http://211.140.156.254:2333/contest/51 (我去刚刚快写完了手贱关掉了) 这次总体难度也不高,T1&&T ...

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

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

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

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

  4. EZ 2018 05 04 NOIP2018 模拟赛(十二)

    这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...

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

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

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

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

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

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

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

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

  9. EZ 2018 05 13 NOIP2018 模拟赛(十三)

    这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...

随机推荐

  1. 13 款惊艳的 Node.js 框架——第2部分

    [编者按]本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站.丰富 API 以及实时应用的开发流程.本文系国内 ITOM 管理平台 OneAPM ...

  2. LeetCoder题解之Find All Anagrams in a String

    1.题目描述 2.题目分析 直接使用 哈希表记录子串的信息,然后对比两个哈希表信息即可 3.代码 vector<int> findAnagrams(string s, string p) ...

  3. Hibernate中Session.get()方法和load()方法的详细比较

    一.get方法和load方法的简易理解  (1)get()方法直接返回实体类,如果查不到数据则返回null.load()会返回一个实体代理对象(当前这个对象可以自动转化为实体对象),但当代理对象被调用 ...

  4. selenium-键盘和鼠标事件

    常见的键盘操作 from selenium.webdriver.common.keys import Keys 模拟enter键:send_keys(Keys.ENTER)键盘F1~F12: send ...

  5. Linux每日小技巧---统计服务器IP连接数

    netstat命令 [root@:vg_adn_tidbCkhsTest:172.31.30.62 ~]#netstat -tun | awk '{print $5}' | cut -d: -f1 | ...

  6. jQuery事件整合

    一.jQuery事件 1.focus()元素获得焦点 2.blur()元素失去焦点 3.change() 表单元素的值发生变化(可用于验证用户名是否存在) 4.click() 鼠标单击 5.dbcli ...

  7. 13.2SolrCloud集群使用手册之CoreAdmin API

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ CoreAdminHandler是用来管理Solr cores的,用来管理一个Solr instance中所有 ...

  8. jQuery 实现复选框的全选与反选

    <script> //实现全选与反选 $(".allAndNotAll").click(function () { if ($(this).prop("che ...

  9. 【2018暑假集训模拟一】Day1题解

    T1准确率 [题目描述] 你是一个骁勇善战.日刷百题的OIer. 今天你已经在你OJ 上提交了y 次,其中x次是正确的,这时,你的准确率是x/y.然而,你最喜欢一个在[0; 1] 中的有理数p/q(是 ...

  10. C++的技术探究

    C++深究 函数指针 double pam(int, double); // prototype double (*pf)(int, double); // declare function poin ...