这是一场三人组队赛来的,单人带电子模板不限时单挑试一下.按照难度排序. B - Balls of Buma 题意:玩祖玛,射入任意颜色的球一个,当某段长度变长了且长度变长后>=3则这段就会消除,问把所有的球只用一次射击就消除的方法是多少? 题解:看起来一定要两边对称. int n; char s[300005]; int L[300005], R[300005], top; void test_case() { top = 0; L[++top] = 1; R[top] = 1; for(int…
A. Apprentice Learning Trajectory rdc乱编的做法 考虑贪心,每次会选择结束时间最早的. 设当前时间为 \(x\),那么可以区间有两类 a) \(l_i \leq x \leq r_i-t_i\),b) \(x \leq l_i\),用两个堆维护选择区间的结束时间. 堆被改变的次数与最优解变化次数都是 \(O(n)\) 级别的. B. Balls of Buma C. Cactus Revenge D. DevOps Best Practices E. Elec…
题目链接:https://codeforces.com/contest/1089/problem/E Elma is learning chess figures. She learned that a rook can move either horizontally or vertically. To enhance her understanding of rook movement Elma’s grandmother gave Elma an 8 × 8 chess board and…
题目链接:https://codeforces.com/contest/1089/problem/K time limit per test: 2 seconds memory limit per test: 512 megabytes King Kog got annoyed of the usual laxity of his knights — they can break into his hall without prior notice! Thus, the King decided…
A. Alice the Fan Solved. 题意: 两个人打网球,要求teamA 的得分与其他队伍拉开尽量大 输出合法的方案 思路: $dp[i][j][k][l] 表示 A 赢i局,其他队伍赢j局,两个人比分为k : l 的时候的方案$ #include<bits/stdc++.h> using namespace std; ][][][]; vector<pair<][][][]; void Init() { dp[][][][] = ; ; sum <= ; ++…
下午连着两场比赛,爽. 首先是codeforses,我和一位dalao一起打的,结果考炸了,幸亏不计rating.. A Alice the Fan 这个就是记忆化搜索一下预处理,然后直接回答询问好了,我肯定是傻逼了,还写了这么长,幸亏调处来了. #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<vector> using namespa…
题意 n个节点,n<=200,你需要构造这n个几点成为一棵树,并且这棵树的中序遍历为1-n; 你构造树的节点之间的最短路构成一个n×n的最短距离矩阵d: 同时给你n×n的权重矩阵c:最最小的Σdij*cij 思路 1. 显然,中序遍历,对于根节点来说,左边的序号小于根,右边的需要大于根 2. cij同化成对于i,j之间的最短路上,每条边增加cij,这样相当于对每条边考虑了 3. 下面就是常规套路了,区间dp,dp[l][r]代表范围l-r构成的子树,求和的最小值 枚举l,r的根节点k,显然需要d…
2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) A 题意:有 n 个时刻,第 i 个时刻要么会在 (xi,yi) 生成一个半径为 yi 的圆,要么射击 (xi,yi) 这个点,如果该点在某个圆内则把对应圆删除并输出该圆的标号,否则输出 -1 .任意时刻圆之间不会相交(可以相切). \(n \le 2*10^5, -10^9 \le x_i,y_i \le 10^9, y…
2020 ICPC Universidad Nacional de Colombia Programming Contest A. Approach 三分 显然答案可以三分,注意\(eps\)还有两条线平行的情况 view code #include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O2") double dis2(double ox, double oy, double ex, doubl…
目录 一.前言 二.10月19日热身赛 三.10月20日正式赛 四.结果 一.前言 比赛前我们队有ccpc厦门和icpc银川的名额,然而这两个地区的时间正好撞了,考虑到银川更容易拿奖,加上我们ACM协会参加了几年的icpc/ccpc,学校倒是挺支持的,次次报销,但始终没拿到成绩,我们也挺尴尬的,对学校领导也不好交待,没准哪天领导就不允许报销了,所以也算是破釜沉舟,一定要拿奖. 二.10月19日热身赛 热身赛锅挺多的,40分钟后才可以交题,A题是直接输出答案的超简单题目,C题AC自动机,赛前正好学…
也不知道从何说起,也不知道会说些什么,最想表达的就是很累很累. 从第一天去的时候满怀希望,没什么感觉甚至还有一些兴奋.到后来一直在赶路,感觉很疲惫,热身赛的时候觉得马马虎虎,导致热身赛被咕.然后教练就和我们远程沟通,让我们放松,热身赛本身就是一个很难的项目,等到正式赛就好了. 当正式赛那天,从开始到我做出第一个题目的时候我好像才恍然觉得,自己这是在icpc的现场,很不真实,一开始的时候队友那份很全的模板没有带来(即使带来可能我们也用不太上,因为很多模板现在还是处于看不懂的状态).到后来读题,我的…
A - Archery Tournament 题目大意:按时间顺序出现靶子和射击一个位置,靶子的圆心为(x, y)半径为r,即圆与x轴相切,靶子不会重叠,靶子被击中后消失, 每次射击找出哪个靶子被射中,或者没有射中靶子. 思路:关键点在于,圆都与x轴相切,那么我们能发现,如果射击在(x, y) 这个点,包含它的圆只可能是它左边第一个直径>= y的圆c1, 或者是它右边第一个直径 >=y 的圆c2,因为在c1 和 c2之间的圆不可能覆盖到(x, y), 因为它们的直径小于y,在c1左边和c2右边…
题面:https://nanti.jisuanke.com/t/41408 题意:A,2,3,4,5,6,7,8,9,10,J,Q,K,13张牌,无花色之分,val为1~13. 给n个人名+n个牌,输出人名的ranklist 比较规则: 皇家顺最大 顺子第二,都是顺看最大牌的val 四条第三,先看四张相同牌的val,再看剩下那张牌的val 葫芦第四,先看三张相同牌的val,再看两张相同牌的val 三条第五,先看三张相同牌的val,再看剩下两张牌的val之和 两对第六,先看大的两张相同牌的val,…
目录 Contest Info Solutions A. Berstagram B. The Feast and the Bus C. Trip to Saint Petersburg E. The Coronation F. Data Center G. Discarding Game H. Happy Birthday J. The Parade L. Divide The Students M. SmartGarden N. Wires Contest Info Practice Link…
A. Berstagram Polycarp recently signed up to a new social network Berstagram. He immediately published n posts there. He assigned numbers from 1 to n to all posts and published them one by one. So, just after publishing Polycarp's news feed contained…
The Nth Iteam 题意:F(0)=1,F(1)=1,F(n)=3*F(n-1)+2*F(n-2) (n>=2) ,F(n) mod 998244353.给出Q跟N1,Ni=Ni-1^(F(Ni-1)*F(Ni-1)),求F(N1)^F(N2)^...^F(NQ) 这个比赛的E跟H数据都水得很,但题还是不错的. 比赛时是求了个循环节,又进行了矩阵的降幂,然后本地+测试在时限内跑出了几组1e7的数据,才敢交的,但没想到数据那么水,矩阵快速幂+map记忆化一下就能过. #include<c…
题库链接: https://nanti.jisuanke.com/t/41387 题目大意 给定n个数,与一个数m,求ai右边最后一个至少比ai大m的数与这个数之间有多少个数 思路 对于每一个数,利用二分的方法求他右边大于等于ai+m的数的最后一个值. 关键在于怎么二分呢? 利用线段树存储区间最大值,看这个区间的最大值是不是比ai+m大 代码: #include<bits/stdc++.h> using namespace std; #define maxn 1000005 #define m…
Then n - 1n−1 lines follow. ii-th line contains two integers f_{a_i}(1 \le f_{a_i} < i)fai​​(1≤fai​​<i), w_i(0 \le w_i \le 10^{18})wi​(0≤wi​≤1018) —The parent of the ii-th node and the edge weight between the ii-th node and f_{a_i} (ifai​​(istart fr…
Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, so Fuutaro always plays a kind of card game about generals with her. In this game, the players pick up cards with generals, but some generals have con…
边权转点权,每次遍历到下一个点,把走个这条边的权值加入主席树中即可. #include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> using namespace std; ; struct node{ int l,r,cnt; }tree[maxx*]; int head[maxx],rk[maxx],siz[maxx],top[maxx],son[maxx],d[m…
https://nanti.jisuanke.com/t/41399 题目大意: 有n个灯,m次操作,每次修改[l,r]内的灯,(off - on ,on - off),问最后有几盏灯亮着. 换种说法:n个点m个区间,每次区间内的数+1,最后n个点中计数为奇数的点的个数就是答案. 刚开始没注意,直接用线段树写,超内存了.... 这题因为外层有个T,并且n太大,还要卡内存,太过分了. 卡数据卡内存,每组样例一重循环都会超时.所以可以分块和对m处理来做. 对m处理的话,仔细想一想,只有区间次数被操作…
首先,我要说,我输了,输给了自己的无知,输给了自己的心态与实力. 上海区域赛,打铁而归,最终还是没有比过自己SLG的朋友.要说什么呢?实力的差距,还是说给自己的失败找借口?不能进入金牌区,为什么铜牌区还进不去,自己所有的骄傲,所有的成就似乎被一场比赛击溃.原来自己只是一叶障目不见泰山. 热身赛,知道了位运算的优化技巧,N/32. 2^N枚举,这是跟CDX的差距. 这场比赛,差多少呢,差一脚,3题稳铜,没出最大生成树,这个该出,在回来的火车上想出来用并查集和优先队列优化的H题,特殊构造的D题,2分…
https://open.kattis.com/problems/researchproductivityindex 这道题是考场上没写出来的一道题,今年看看感觉简单到不像话,当时自己对于dp没有什么概念,所以导致考场只能空流泪 首先问期望,肯定就要确定概率.看到这个 就知道肯定一块求是不太好写的,先求上面,上面求发表的期望,那么对于期望我们有e(x) = Σxipi 这里p知道了但是xi不知道,那么我们根据题目描述我们有一个分子一个分母,分子是发表的次数,分母是论文数,首先对于任何j篇论文发表…
题意:有个长度为\(n\)的监狱,犯人在位置\(a\),cop在位置\(b\),你每次可以向左或者向右移动一个单位,或者选择不动并在原地放一个爆竹\(i\),爆竹\(i\)在\(s[i]\)秒后爆炸,cop每次向你的位置移动一个单位,你最终一定会被抓住(因为监狱是有限的),问你在被抓住前,最多能看到多少爆竹爆炸. 题解:我们可以很容易算出最能放多少个爆竹不被cop抓住,和最晚被cop抓住的时间,然后对爆竹的爆炸时间排序,假如我们要放\(x\)个爆竹,那么很显然,最优的放法一定是在第一秒放\(s[…
题意:酒吧里有两个服务员,每个人每次都只能服务一名客人,服务员2按照客人进酒吧的顺序服务,服务员3按照客人的钱来服务,询问\(q\),\(1\)表示有客人进入酒吧,带着\(m\)块钱,\(2\)表示询问服务员2当前应该服务的客人编号,\(3\)表示服务员3当前应该服务的客人编号. 题解:搞两个set,第一个set存pair,存编号和钱,用重载运算符来模拟排序,第二个set只存编号,然后模拟乱搞就行. 代码: #include <bits/stdc++.h> #define ll long lo…
题意:给你一张图,要你去边,使其成为一个边数为\(n-1\)的树,同时要求树的最小边权最大,如果最小边权最大的情况有多种,那么要求总边权最小.求生成树后的所有简单路径上的最小边权和. 题解:刚开始想写最大生成树的,但是很明显不能满足总边权最小的要求.所以这里我们可以用二分,二分最小边权的值,然后再去跑kruskal看是否能构造成一颗树,这样的话我们就能得出满足题目条件的树.之后我们再将边权从大到小排序来枚举,用并查集维护连通块,假如两个块不连通,因为此时的边权是目前最小的,简单路径数是两个连通块…
题意:给你四个数字,你可以用这四个数字凑出四个1位数,一个2位数和两个1位数,或一个3位数和一个1位数,你可以用你凑出的数字进行\(+,-,x\)运算(所有运算符号至少出现一次),问你一共能得到多少个不同的数字. 题解:dfs瞎搞,不合法乘法的细节特别多,在dfs函数里面用flag和mult来分别去除出现\((a+b)*c\)和\((a*b)*10\)的情况. 代码: #include <bits/stdc++.h> #define ll long long #define fi first…
题目链接:https://vjudge.net/problem/Gym-101630A 题意: n个事件,t=1 代表增加一个圆心为(x,y),半径为 abs(y)的靶子,t=2,代表射击的坐标为(x,y)并且询问是否在已出现的靶子上,如果在则输出第几个事件的编号,否则输出-1. 该题有个坑点:(一开始没看到)一个靶子只能被射击一次. 思路:可以用set存每个靶子的位置,但是需要对靶子按照前后空隙大小进行排序,这样之后我们就可以通过射击点的横坐标对set二分查找出最靠近其的靶子,然后就可以往后遍…
题面看这里 \(PS\):符号 \([\ \rm P\ ]\) 的意义是:当表达式 \(\rm P\) 为真则取值为 \(1\),为假则取值为 \(0\). 题目大意 给你一个一天有 \(H\)​​​​​​​ 小时.一小时有 \(M\)​​​​​​​​ 分钟的表和一个正整数 \(A\)​,问一天内有多少个整数时刻,使得分针与时针的夹角小于等于 \(\displaystyle\frac{2\pi A}{HM}\)​. 题目分析 易知分针转速 \(w_1=\displaystyle \frac{2\…