2018.9.22 Bubble Cup 11-Finals(Online Mirror,Div.2)
感受了一下ACM的感觉,然后被神题和神犇们暴踩了
夭寿啦,机房大佬非法组队啊
比赛前i207M插的“怕不是不到九点就要弃疗”的flag成功生效
一开始先扫了一遍题,我一开始以为A题是个扫一遍的题,然后发现自己naive了,遭到了wyt的嘲讽,不过i207M觉得这是个权值数据结构,然而我太蒻了并不会,于是他就去写了。然后就听到Zhang_RQ说B题是个圆方树,果断弃了,终于发现C很可做,这不是泡泡堂么,然后我写了一发过掉了。然后i207M交了一发$A$挂了,发现他读错题了,然后就听到zhoutb2333说这是个CDQ,我们又(?)果断弃掉了=。=
然后wyt跟我说F是个大根堆?(我**居然信了)
然后他T了,我觉得是他写萎了,我也按他的思路写了一发
然后我也T了,发现他根本不是写萎了,是想萎了,这不是扫一遍就完了吗=。=
看了看发现H题有不少(十几个?)人A了,我和i207M就去看,转化了一下题面发现这好像是个计数问题。i207M立刻切出来了(!),然而蒟蒻的我一时并没完全听懂,我说我先码着你再想想,码到一半他又跟我说了说终于听懂了,然后测一发样例
哇,挂啦
i207M发现漏了一种情况,然后他改了一处就过掉了,我一时还在问问问,不过后来想明白了
然后我们就开始找可做题(其实已经没了=。=),他看上了$E$我看上了$G$,然后他说完$E$我们感觉没什么特别明显的思路,不过他觉得$G$很可做,然后我就去看$J$了,感觉$J$是个特别可做的数位DP。结果讨论了半天发现连状态都设不下,于是暂时弃掉了,又去刚$G$结果也无果,最后我们就在九点弃疗了=。=
整个比赛还是很欢乐的,这次只放我们切的三道水题了2333
Update on 2018.9.28:准备更新A和B
Update on 2018.10.9:咕咕了一个多星期之后终于更了A,B还在咕咕咕的路上(滚那
A.AI Robots
考场时众多大佬用CDQ/树套树碾过去了,事实上这个题并不难......
我们将机器人按视力从高到低排序,然后依次考虑每个机器人,把机器人们加入一棵权值线段树。这样如果新加入的机器人能看到之前的机器人的话,之前的这些机器人也能看到新加入的机器人,用线段树维护区间和,就可以直接计算贡献了。现在的问题是智商的差距如何考虑,因为智商的差距非常小,我们可以直接枚举每个智商的差值来统计答案,复杂度$O(nklog$ $n)$。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
struct a
{
int p,e,q;
}rob[N];
int un1[N],un2[N];
int root[N],val[*N],son[*N][];
int n,m,l1,l2,cnt,tot;
long long ans;
bool cmp(a x,a y)
{
return x.e>y.e;
}
void add(int &nde,int l,int r,int pos)
{
if(!nde) nde=++tot; val[nde]++;
if(l==r) return ; int mid=(l+r)/;
if(pos<=mid) add(son[nde][],l,mid,pos);
else add(son[nde][],mid+,r,pos);
}
long long query(int nde,int l,int r,int nl,int nr)
{
if(!nde) return ;
if(l>=nl&&r<=nr) return val[nde];
int mid=(l+r)/; long long ret=;
if(nl<=mid) ret+=query(son[nde][],l,mid,nl,nr);
if(mid<nr) ret+=query(son[nde][],mid+,r,nl,nr);
return ret;
}
int main ()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&rob[i].p,&rob[i].e,&rob[i].q);
un1[i]=rob[i].p,un2[i]=rob[i].q;
}
sort(rob+,rob++n,cmp);
sort(un1+,un1++n),l1=unique(un1+,un1++n)-un1-;
sort(un2+,un2++n),l2=unique(un2+,un2++n)-un2-;
for(int i=;i<=n;i++)
{
rob[i].p=lower_bound(un1+,un1++l1,rob[i].p)-un1;
rob[i].q=lower_bound(un2+,un2++l2,rob[i].q)-un2;
}
for(int i=;i<=n;i++)
{
for(int j=-m;j<=m;j++)
{
int pos=lower_bound(un2+,un2++l2,un2[rob[i].q]+j)-un2;
int ll=lower_bound(un1+,un1++l1,un1[rob[i].p]-rob[i].e)-un1;
int rr=upper_bound(un1+,un1++l1,un1[rob[i].p]+rob[i].e)-un1-;
if(un2[pos]==un2[rob[i].q]+j)
ans+=query(root[pos],,l1,ll,rr);
}
add(root[rob[i].q],,l1,rob[i].p);
}
printf("%lld",ans);
return ;
}
C.Space Formula
首先把最大的$b$配给我们的选手,然后(按其他选手实力)从大到小贪心。如果这个人配上最小的都能赢我们就把最大的给他,减小之后的压力,否则找一个尽可能大的给他让他打不过我们,易知这样最优(详见ZJOI 泡泡堂)
#include<set>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
long long a[N],b[N],aa[N],bb[N];
long long n,d,l1,l2,p1,p2,rnk;
multiset<long long> st;
multiset<long long>::iterator it;
int main ()
{
scanf("%lld%lld",&n,&d);
for(int i=;i<=n;i++) scanf("%lld",&a[i]);
for(int i=;i<=n;i++) scanf("%lld",&b[i]);
long long forc=a[d]+b[];
for(int i=;i<=n;i++) if(i!=d) aa[++l1]=a[i];
for(int i=n;i>=;i--) st.insert(b[i]); rnk=;
for(int i=;i<=l1;i++)
{
if(aa[i]>forc) rnk++,it=st.end(),it--,st.erase(it);
else
{
if(aa[i]+(*(st.begin()))>forc) {rnk++,it=st.end(),it--,st.erase(it);continue;}
long long res=forc-aa[i];it=st.upper_bound(res);
it--; st.erase(it);
}
}
printf("%lld",rnk);
return ;
}
F.Splitting money
扫一遍的大水题,不想多说
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long bit[];
long long n,maxx,c,ans;
int main ()
{
scanf("%lld",&n);
for(int i=;i<=n;i++)
scanf("%lld",&bit[i]);
scanf("%lld%lld",&maxx,&c);
for(int i=;i<=n;i++)
if(bit[i]>maxx)
ans+=((long long)ceil((double)(bit[i]-maxx)/(double)(maxx+c)))*c;
printf("%lld",ans);
return ;
}
H.Palindrome Pairs
伪装成字符串的计数题
因为两个串组合后我们可以随便排列字母,所以能否回文显然只跟每个字母在每个串中出现的次数的奇偶性有关。我们把出现奇数次的字母这位看成$1$,出现偶数次的字母这位看成$0$,这样每个串就可以表示为一个$26$位的零一串,拼起来可以看做异或,回文就是异或后只有一位为$1$。因为要求无序的,所以我们直接开个$map$计每种串出现的次数,每次枚举一位统计上当前串这位取反得到串的个数,最后加上这个串出现的次数即可。
#include<map>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
map<int,long long> cnt;
char rd[M];
int n,len;
long long ans;
int main ()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%s",rd);
int str=;
int len=strlen(rd);
for(int j=;j<len;j++)
str^=(<<(rd[j]-'a'));
ans+=cnt[str];
for(int j=;j<;j++)
ans+=cnt[str^(<<j)];
++cnt[str];
}
printf("%lld",ans);
return ;
}
2018.9.22 Bubble Cup 11-Finals(Online Mirror,Div.2)的更多相关文章
- Bubble Cup 11 - Finals [Online Mirror, Div. 1]题解 【待补】
Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robo ...
- Bubble Cup 12 - Finals Online Mirror, unrated, Div. 1
Bubble Cup 12 - Finals Online Mirror, unrated, Div. 1 C. Jumping Transformers 我会状压 DP! 用 \(dp[x][y][ ...
- codeforce1046 Bubble Cup 11 - Finals 题解
比赛的时候开G开了3h结果rose说一句那唯一一个AC的是羊的心态就崩了.. 这套题感觉质量挺好然后就back了下 A: AI robots 有三个限制条件:相互能够看见和智商的差.使用主席树,可以维 ...
- Codeforces Bubble Cup 8 - Finals [Online Mirror] B. Bribes lca
题目链接: http://codeforces.com/contest/575/problem/B 题解: 把链u,v拆成u,lca(u,v)和v,lca(u,v)(v,lca(u,v)是倒过来的). ...
- Codeforces Bubble Cup 8 - Finals [Online Mirror]H. Bots 数学
H. Bots Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/H Desc ...
- Codeforces Bubble Cup 8 - Finals [Online Mirror] D. Tablecity 数学题
D. Tablecity Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/D ...
- Codeforces Bubble Cup 8 - Finals [Online Mirror] F. Bulbo DP
F. Bulbo Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/F Des ...
- Bubble Cup X - Finals [Online Mirror]
来自FallDream的博客,未经允许,请勿转载,谢谢. 组了个菜鸡队打cf上的ACM比赛 比较快做完了8题但是菜的抠脚罚时巨多,所以最后被顶到了19名(居然没出首页) 自己的号自从上次疯狂掉分就没动 ...
- Bubble Cup X - Finals [Online Mirror] B. Neural Network country 矩阵快速幂加速转移
B. Neural Network country time limit per test 2 seconds memory limit per test 256 megabytes Due to t ...
随机推荐
- deep learning loss总结
在深度学习中会遇到各种各样的任务,我们期望通过优化最终的loss使网络模型达到期望的效果,因此loss的选择是十分重要的. cross entropy loss cross entropy loss和 ...
- Java 内存模型_1
title: Java 内存模型_1 date: 2017-01-15 17:11:02 tags: [JMM] categories: [Programming,Java] --- 概述 本文记录 ...
- 北美跨境电商平台Wish透露未来一年在华规划
9月12日,北美跨境电商平台Wish在深圳透露了未来一年在中国区的重点规划.Wish中国区总裁丁浩川表示,在下一阶段,Wish公司将继续围绕 提升平台流量. 加强品类支撑. 深化库存管理. 推进物流改 ...
- 记一次centos6升级salt-minion启动失败的问题
记一次centos6升级salt-minion启动失败的问题 作者:耀耀 blog:https://www.liuyao.me 一.起因 升级Salt-minion后 使用/etc/init.d/sa ...
- 图片人脸检测(OpenCV版)
图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 功能展示 识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下: 多 ...
- PLSQL Developer windows 64位连接数据库的问题
使用PLSQL Developer 工具连接到数据库进行开发,目前主流windows 系统都是64位操作系统,而PLSQL Developer 只有32位程序,所以在连接数据库上遇到一些问题. PL ...
- hive的udf创建永久函数
上传jar包到hdfs目录中, hdfs dfs -put /home/user/hive-functions.jar /user/hive/jars/hive-functions.jar cre ...
- 第一章 HTML介绍
1.1 Html和CSS的关系 学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1. HTML是网页内容的载体.内容就 ...
- oracle将多个结果集用逗号拼接成字符串
有两个函数wmsys.wm_concat和listagg 1,SELECT wmsys.wm_concat(CATALOG_NAME) FROM "DATASHARE"." ...
- 特别好用的eclipse快捷键
alt+/ 提示 alt+shift+r重命名 alt+shift+j添加文档注释 Ctrl+shift+y小写 Ctrl+shift+x大写 ctrl+shift+f格式化代码(需要取消输入法的简繁 ...