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

C.Space Formula

首先把最大的$b$配给我们的选手,然后(按其他选手实力)从大到小贪心。如果这个人配上最小的都能赢我们就把最大的给他,减小之后的压力,否则找一个尽可能大的给他让他打不过我们,易知这样最优(详见ZJOI 泡泡堂)

 1 #include<set>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int N=200005;
 7 long long a[N],b[N],aa[N],bb[N];
 8 long long n,d,l1,l2,p1,p2,rnk;
 9 multiset<long long> st;
10 multiset<long long>::iterator it;
11 int main ()
12 {
13     scanf("%lld%lld",&n,&d);
14     for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
15     for(int i=1;i<=n;i++) scanf("%lld",&b[i]);
16     long long forc=a[d]+b[1];
17     for(int i=1;i<=n;i++) if(i!=d) aa[++l1]=a[i];
18     for(int i=n;i>=2;i--) st.insert(b[i]); rnk=1;
19     for(int i=1;i<=l1;i++)
20     {
21         if(aa[i]>forc) rnk++,it=st.end(),it--,st.erase(it);
22         else
23         {
24             if(aa[i]+(*(st.begin()))>forc) {rnk++,it=st.end(),it--,st.erase(it);continue;}
25             long long res=forc-aa[i];it=st.upper_bound(res);
26             it--; st.erase(it);
27         }
28     }
29     printf("%lld",rnk);
30     return 0;
31 }

F.Splitting money

扫一遍的大水题,不想多说

 1 #include<queue>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 long long bit[200005];
 7 long long n,maxx,c,ans;
 8 int main ()
 9 {
10     scanf("%lld",&n);
11     for(int i=1;i<=n;i++)
12         scanf("%lld",&bit[i]);
13     scanf("%lld%lld",&maxx,&c);
14     for(int i=1;i<=n;i++)
15         if(bit[i]>maxx)
16             ans+=((long long)ceil((double)(bit[i]-maxx)/(double)(maxx+c)))*c;
17     printf("%lld",ans);
18     return 0;
19 }

H.Palindrome Pairs

伪装成字符串的计数题

因为两个串组合后我们可以随便排列字母,所以能否回文显然只跟每个字母在每个串中出现的次数的奇偶性有关。我们把出现奇数次的字母这位看成$1$,出现偶数次的字母这位看成$0$,这样每个串就可以表示为一个$26$位的零一串,拼起来可以看做异或,回文就是异或后只有一位为$1$。因为要求无序的,所以我们直接开个$map$计每种串出现的次数,每次枚举一位统计上当前串这位取反得到串的个数,最后加上这个串出现的次数即可。

 1 #include<map>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int N=100005,M=1000005;
 7 map<int,long long> cnt;
 8 char rd[M];
 9 int n,len;
10 long long ans;
11 int main ()
12 {
13     scanf("%d",&n);
14     for(int i=1;i<=n;i++)
15     {
16         scanf("%s",rd);
17         int str=0;
18         int len=strlen(rd);
19         for(int j=0;j<len;j++)
20             str^=(1<<(rd[j]-‘a‘));
21         ans+=cnt[str];
22         for(int j=0;j<26;j++)
23             ans+=cnt[str^(1<<j)];
24         ++cnt[str];
25     }
26     printf("%lld",ans);
27     return 0;
28 }

原文地址:https://www.cnblogs.com/ydnhaha/p/9696912.html

时间: 2024-10-10 21:05:36

2018.9.22 Bubble Cup 11-Finals(Online Mirror,Div.2)的相关文章

Bubble Cup 11 - Finals [Online Mirror, Div. 1] 体验记 + 部分题解

原文链接https://www.cnblogs.com/zhouzhendong/p/CF1045.html 体验?? 陈老爷(cly_none) 带我们飞. 遥遥领先的yzy(yzyyylx) nb . fx 口胡大法好. 哈哈.最后7~8分钟卡常 5974ms 过一道 6000ms 题. 陈老爷切掉了 A D J . yzy 干掉了 C 和 G . fx 半程口胡.中途有事. zzd 菜鸡贡献10多发罚时,导致队伍罚时爆炸.这个菜鸡zzd只 AC 了 I B H ,并在最后7~8分钟把陈老爷

Bubble Cup X - Finals [Online Mirror]

来自FallDream的博客,未经允许,请勿转载,谢谢. 组了个菜鸡队打cf上的ACM比赛 比较快做完了8题但是菜的抠脚罚时巨多,所以最后被顶到了19名(居然没出首页) 自己的号自从上次疯狂掉分就没动过了,感觉像是红名橙名大佬中的一股清流. A.奇怪的贪心,我写了一发结果挂了,题解见大爷博客 B.dp方程很容易列出来,然后写个矩阵乘法就行了. C.每个点的位置决定了两边的白色小三角形的面积,这个面积是关于位置的一次函数,所以排序之后贪心就行了. D.二分+网络流判定 E.dp方程容易列出,然后换

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 the recent popularity of the Deep learning new countries are starting to look like Neural Networks. That is, the countries are being built deep with ma

Bubble Cup 8 finals G. Run for beer (575G)

题意: 给定一个带权无向图,每条边的代价为边权/当前速度,每次到达一个新节点,速度都会除以10. 求0号点到n-1号点的最小代价,如果多解输出点数最少的解,输出代价.路径点数.路径经过的点. 1<=边数<=10^5, 1<=点数<=10^5, 0<=边权<=9 题解: 比较有趣的一道题…难度不算太高,但一些地方比较容易想错… 这题的边代价可变本身并不是什么大问题,因为是图中所有边一起变大, 但是一开始就会遇到一个问题,就是总代价数字过大,没有办法直接存储和比较. 观察到

Bubble Cup 8 finals C. Party (575C)

题意: 给定n个人,分两天晚上去夜总会开派对,要求每天恰好有n/2个人去,且每人去的夜总会各不相同. 每个人对不同的晚上不同的夜总会有不同的满意度,求一个方案使得所有人的满意度之和最大. 夜总会数量=人的数量=n,2<=n<=20,且n是偶数. 0<=每一项满意度<=10^6. 时间限制2s,空间限制4MB. 题解: 在这题上卡了很久… 初看这题觉得是费用流…写完发现图建错了… 然后改成暴力枚举哪些人在第一天晚上去再跑费用流… 每个人只和对应晚上的夜总会连边,然后两天晚上的夜总会再

Bubble Cup 8 finals B. Bribes (575B)

题意: 给定一棵n个点和有向边构成的树,其中一些边是合法边,一些边是非法边, 经过非法边需要1的费用,并且经过之后费用翻倍. 给定一个长为m的序列,问从点1开始按顺序移动到序列中对应点的总费用. 1<=n<=10^5, 1<=m<=10^6 题解: 还是比较水的… 正解是各种方法求LCA,在点上打标记,最后DFS一遍就可以得到答案. 用tarjan求LCA可以做到总复杂度O(n*α)… 我傻傻地见树就剖,强行O(n log n log n)碾过去了… 每次把起点终点之间的路径的经过

Bubble Cup 8 finals H. Bots (575H)

题意: 简单来说就是生成一棵树,要求根到每个叶子节点上的路径颜色排列不同, 且每条根到叶子的路径恰有n条蓝边和n条红边. 求生成的树的节点个数. 1<=n<=10^6 题解: 简单计数. 显然,前n层的边的颜色是任意的,所以第i层就是2^i个点. 对于后n层,可以直接由上一层转移. 因为已经知道上一层合法的个数,那么如果现在每个点扩展两条边, 那么上一层的状态中,某种颜色的个数已经达到n的情况就有一条边不可扩展, 所以要减去2*C(i-1,n). 1 2 3 4 5 6 7 8 9 10 11

Bubble Cup 8 finals I. Robots protection

题意: 有一个正方形区域, 要求支持两个操作: 1.放置三角形,给定放置方向(有4个方向,直角边与坐标轴平行),直角顶点坐标,边长 2.查询一个点被覆盖了多少次 1<=正方形区域边长n<=5000 1<=询问数<=10^5 保证输入合法,三角形被正方形区域完全包含. 题解: 嗯这是一道数据结构题… 一开始我想起来之前做过但没做出来的一道三角形修改三角形查询的分块题… 然后…GEOTCBRL说,是k-d tree呀,CF上面有标程代码长度限制的… 然而我并不会用k-d tree做这个

Bubble Cup 8 finals E. Spectator Riots (575E)

题意: 一个长宽是100000单位的球场上有很多暴动的观众,每个观众都有一个速度v, 在一秒内,观众会等概率地移动到与原位置的曼哈顿距离<=v的地方(不会移动到界外). 你需要选取三个位置,这三个位置要求满足在一秒之后可能会出现观众. (这里不需要考虑概率大小,只要概率不为0就是满足的) 然后过这三点作圆,请选取在初始状态一秒后圆内观众数的期望值最大的方案输出. 如果有多种,输出半径最大的方案. 题解: 第一眼看起来非常可怕… 什么每秒移动速度呀…什么期望呀…先被吓死就做不了了… 其实是假装要扯