codeforces
Myriad_Dreamin
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 69 A, B, C, D, E, F
A - DIY Wooden Ladder维护两个点的堆#include <cstdio>#include <queue>#include <algorithm>using namespace std;priority_queue<int, vector<int>, greater<int>> Q;int mai...原创 2019-08-06 09:20:02 · 233 阅读 · 0 评论 -
Codeforces Educational Codeforces Round 56 (Rated for Div. 2) 1093G. Multidimensional Queries
有一kkk维点序列。求[l,r][l,r][l,r]之间Manhattan\text{Manhattan}Manhattan距离最大的点。要求点修改区间查询。解:每维的坐标分解如下:∣aj−bj∣=aj−bj&amp;nbsp;or&amp;nbsp;bj−aj,j=1,2,...,k|a_{j}-b_j|=a_{j}-b_{j}\ or\ b_{j}-a_{j},j=1,2,...,k∣aj−bj∣=...原创 2018-12-16 01:19:55 · 640 阅读 · 0 评论 -
Codeforces Round #525 Div. 2 1088E. Ehab and a component choosing problem(贪心,dfs)
1.答案是全局最大正分量。证明:假设有一分量S=max{val(S)∣S⊂G}S=\max\{val(S)|S\subset G\}S=max{val(S)∣S⊂G}.那么任意其它分量val(S′)⩽val(S)val(S&amp;amp;#x27;)\leqslant val(S)val(S′)⩽val(S).所以对任意kkk划分的分量,1k∑i=1kval(S1)⩽1kkval(S)=val(S)...原创 2018-12-05 03:19:30 · 195 阅读 · 0 评论 -
Codeforces Round #525 Div. 2 1088C - Ehab and a 2-operation task(构造)
可以构造一个序列使得a[i]=ia[i]=ia[i]=i.方法:取g=n+1g=n+1g=n+1,修正第jjj个元素为sg+jsg+jsg+j,从而Δ=sg+j−(p+a[j])\Delta=sg+j-(p+a[j])Δ=sg+j−(p+a[j]),其中p=∑i=j+1nΔi\displaystyle p=\sum_{i=j+1}^{n} {\Delta_i}p=i=j+1∑nΔi,此时可...原创 2018-12-05 03:06:54 · 213 阅读 · 0 评论 -
Codeforce Educational Codeforces Round 55 (Rated for Div. 2) E - Increasing Frequency(尺取法)
考虑CCC和非CCC的贡献.对于每一个数字x≠Cx\neq Cx̸=C,其[l,r][l,r][l,r]贡献是:[l,r][l,r][l,r]中所有的CCC为−1-1−1,xxx为111.用尺取法对每一个数字的贡献序列暴力求解。容易知道如果合并所有的111和−1-1−1,生成的贡献序列的总长度⩽2n\leqslant 2n⩽2n,从而算法复杂度为O(n)O(n)O(n).#include ...原创 2018-11-29 02:22:14 · 201 阅读 · 0 评论 -
Codeforces 1027G X-mouse in the Campus
(Codeforces 1027G)(Codeforces 1027G)\text{(Codeforces 1027G)}考虑两个整数1⩽m,n⩽1014,(m,n)=1,1⩽m,n⩽1014,(m,n)=1,1\leqslant m,n\leqslant 10^{14},(m,n)=1,问若定义等价类x¯¯¯={a|amk=x,a∈Zn}x¯={a|amk=x,a∈Zn}\overline{x}...原创 2018-09-07 22:20:06 · 581 阅读 · 0 评论 -
BUPT kamiyoru's training #2 codeforces#485div.2
A - Infinity Gauntlet 签到题,就不多扯了。#include &lt;iostream&gt;#include &lt;string&gt;#include &lt;map&gt;using namespace std;char str[10][10]={"","Power","Time&原创 2018-06-19 02:14:20 · 268 阅读 · 0 评论 -
BUPT kamiyoru's training #1 codeforces#486div.3
A - Diverse Team签到题就不多说了。#include <cstdio>int find[105];int main(){ int n,k,distinc=0,a; scanf("%d%d",&n,&k); for(int i=1;i<=n;i++){ scanf("%d",&a); ...原创 2018-06-19 01:55:57 · 296 阅读 · 0 评论 -
Codeforces #488div.2 - 994E - Careful Maneuvering(状态压缩+暴力枚举)
首先讲一下状态压缩的方法:每一位代表一架大飞船,那么长度为606060的位串就代表了一组大飞船。 其次我们考虑何时飞船能被击毁:很明显当大飞船和小飞船在同一条直线上时,这两架大飞船就会被击毁。 同时,两排大飞船是对称的,这就能极方便地求出他们确定的直线在y轴上的截距。 由于数据很弱:把每一个在y轴上的点的情况用状态压缩表示出来,再O(n^2)枚举所有小飞船(t1,t2)(t1,t2)(t1,...原创 2018-06-17 04:27:48 · 407 阅读 · 0 评论 -
Codeforces Educational Codeforces Round 56 (Rated for Div. 2) 1093E. Intersection of Permutations
求区间a[l,r]a[l,r]a[l,r]中b[x,y]b[x,y]b[x,y]的数字出现了多少个。因为a,ba,ba,b均是排列,所以区间数字分布具有可加性。所以分块+树状数组,时间复杂度约为O(n3/2lgn)≈2e5×5e2×20=2e9\mathrm{O}(n^{3/2}\lg n)\approx 2e5\times 5e2\times 20=2e9O(n3/2lgn)≈2e5×5e...原创 2018-12-16 13:37:03 · 279 阅读 · 0 评论 -
Codeforces Educational Codeforces Round 56 (Rated for Div. 2) 1093F. Vasya and Array
有一个长度为nnn的的数列,aia_iai的值域只有kkk个元素。一个数列有一些数字已经填上。现在要求数列连续的数字长度不能超过lll,问所有不同的数列的个数有多少个。1.考虑所有的数字都没填上。设dp[i][j][s]dp[i][j][s]dp[i][j][s]为第iii个位置填入第jjj种颜色且已经有连续的sss个数字的方案数。显然:那么:dp[i][j][s]=dp[i−1][j]...原创 2018-12-16 15:27:28 · 231 阅读 · 0 评论 -
Codeforces 1199A, B, C, D, E, F
A - City Day #include <cstdio> int a[100500]; signed main() { int n,x,y; scanf("%d%d%d",&n,&x,&y); for(int i=1;i<=n;i++) { sc...原创 2019-07-31 02:36:23 · 264 阅读 · 0 评论 -
BUPT 2019 summer training Milkshake Party
A - 森林口味的奶昔 (CF285C)注意到这是森林,所以必然有叶子结点。我们可以根据叶子结点拓扑排序顺便异或就是答案。#include <cstdio>#include <queue>#include <cstring>#include <algorithm>using namespace std;const int N = (1...原创 2019-07-19 14:55:42 · 922 阅读 · 0 评论 -
Codeforces 1194A 1194B 1194C 1194D 1194E 1194F
A - Remove a Progression已经删除了i−1i-1i−1个,现在要删其后的第iii个,因为第iii个在前面i−1i-1i−1个之后,所以是总的第2i−12i-12i−1个。所以所有的奇数都会被删除。 #include <cstdio> int deprec[50000]; int main() { int t; ...原创 2019-07-16 13:43:43 · 392 阅读 · 0 评论 -
2019 BUPT Winter Training #1 div.2
1100C - A - NN and the Optical Illusion难度: 初中几何一道几何题,根据几何关系:RR+r=sinπn. \frac{R}{R+r}=\sin \frac{\pi}{n}.R+rR=sinnπ.#include &amp;lt;cstdio&amp;gt;#include &amp;lt;cmath&amp;gt;const double PI=acos(-1.0);...原创 2019-01-28 19:03:56 · 844 阅读 · 2 评论 -
2019 BUPT Winter Training #3 div.1
718C - A - Sasha and Array设f⃗(n)=(f(n+1),f(n))T\vec f(n)=(f(n+1),f(n))^Tf(n)=(f(n+1),f(n))T,那么f⃗(n)=Anf⃗(0)\vec f(n)=A^n\vec f (0)f(n)=Anf(0)由于f⃗(0)=(1,0)T\vec f(0)=(1,0)^Tf(0)=(1,0)T,所以f(n)=...原创 2019-02-03 00:34:36 · 230 阅读 · 0 评论 -
[补题]2018 BUPT Winter Training #1 div.1
A,B,D,F看下面:https://blog.csdn.net/Myriad_Dreamin/article/details/79209441C看这里:https://blog.csdn.net/Myriad_Dreamin/article/details/79349060CodeForces - 697D - E - Puzzle我们知道期望拥有线性性,所以假设iii是待求顶点,pr...原创 2019-01-28 01:49:02 · 266 阅读 · 0 评论 -
CodeForces Hello 2019 1097D - Makoto and a Blackboard(积性函数)
首先设EEE是一阶期望,显然有下式成立,这说明EEE是积性函数.E(n)=σ(n)d(n)=∏p∣n1+p+⋯+paa+1=∏p∣npa+1−1(p−1)(a+1)E(n)=\frac{\sigma(n)}{d(n)}=\prod_{p|n} \frac{1+p+\dots +p^a}{a+1}=\prod_{p|n} \frac{p^{a+1}-1}{(p-1)(a+1)}E(n)=d(n...原创 2019-01-05 01:58:19 · 436 阅读 · 1 评论 -
Educational Codeforces Round 57 1096F - Inversion Expectation(递推)
考虑三方面的因素,1.已知数和已知数之间的贡献:显然res1=已知数序列的逆序数。2.已知数和未知数之间的贡献:对于每一个未知的空,他出现在了(k−1)!(k-1)!(k−1)!个序列中。对于每一个未知的空,他填入i的贡献是后面小于i的已知数的个数和前面大于i的已知数的个数。但这样不好统计。考虑每个已知数的贡献。他后面空的个数对小于它的所有未知数有贡献,前面空的个数对大于它的所有未知数...原创 2018-12-29 01:37:14 · 215 阅读 · 0 评论 -
Codeforces #488div.2 - 994C - Two Squares(计算几何入门)
第一个也是很简单就容易判断的是:两个线段一旦相交就一定是YES 然后就是判断不相交但是也是YES的情况了,我们可以这样思考: 依照题意,正方形的点是按时钟顺序给出的,那么在正方形中的点就一定会被头尾依次相连的四个边向量lturn测试给出相同的正负值,所以如果16次测试为相同符号,其中一个正方形就一定在另一个正方形中间。#include &lt;cstdio&gt;#include &lt...原创 2018-06-17 03:13:30 · 666 阅读 · 0 评论 -
Codeforces #488div.2 - 994B - Knights of a Polygonal Table(堆+贪心)
很明显要维护一个大小为k的小顶堆,每次判断小顶堆是否值得被剔除。 需要注意两点: ①力量相同的骑士共用一个堆状态; ②堆为0时可能会导致取空堆的情况; ③10*10^9&gt;INTMAX#include &lt;cstdio&gt;#include &lt;queue&gt;#include &lt;algorithm&gt;using namespace std;struc原创 2018-06-17 03:08:23 · 402 阅读 · 2 评论 -
[补题/研究] BUPT冬季训练Div.1 #1C: CodeForces - 699D Fix a Tree
Winter Training Div.1 #1 C题D. Fix a TreeA tree is an undirected connected graph without cycles. 一棵树是一个无向无环的连通图。 Let’s consider a rooted undirected tree with nnn vertices, numbered 111 through nn...原创 2018-02-22 19:07:47 · 263 阅读 · 0 评论 -
Codeforces Round #454 (Div. 2, based on Technocup 2018 Elimination Round 4) B - Tic-Tac-Toe
按照题目来就可以了,注意九个小块的分组。#include <iostream>#include <string>using namespace std;struct ttt{ string str[4];}t[4][4];int main(){ std::ios::sync_with_stdio(false); int i,j,k,q,flag=1,a,b;原创 2017-12-24 01:51:47 · 243 阅读 · 0 评论 -
Codeforces Round #454 (Div. 2, based on Technocup 2018 Elimination Round 4) A - Masha and Bears
根据题意小熊和masha两人都可以坐最小的车并且喜欢。并且这masha的身材也严格小于中熊和大熊的身材,因为如果不是严格小于,中熊和大熊喜欢的车masha不可能不喜欢。在这个前提下,小熊和masha两者取大则两者都喜欢,中熊和大熊都取两倍的车#include <iostream>using namespace std;int main(){ int a,b,c,d; cin>>a原创 2017-12-24 01:49:16 · 165 阅读 · 0 评论 -
Codeforces Testing Round #14 (Unrated) C. Minimum Sum
给你仅含有字符’a’~’j’的字符串,让你用字符’0’~’9’替换其中的字符,使得替换后所有字符串代表的整数之和最小,假设字符串并不会出现前导零。 数据规模:n(1<n<1000)个字符串,所有字符串的长度小于等于6。 依然是贪心… 我们知道: ①如果一个字符出现在高位的次数越多,那么用同样的数字替换它的代价越高。 ②用同样的数字替换同一个字母,高一位的代价等于低一位的代价的十倍。 所以原创 2017-12-23 01:42:46 · 324 阅读 · 0 评论 -
Codeforces Testing Round #14 (Unrated) B - Door Frames
用dp做的,当时没有细想,大概会有更简单的办法的。#include <iostream>#define min(_x,_y) ((_x<_y)?(_x):(_y))using namespace std;bool ok[10][10]={false};int need[10][10]={0};int main(){ int length,r_l,up,i,j,k,l; ci原创 2017-12-23 00:20:06 · 513 阅读 · 0 评论 -
Codeforces Testing Round #14 (Unrated) A - The Way to Home
贪心,从现在的位置+d开始搜索’1’,如果搜索到了就跳上去,如果没搜索到就失败,如果最后跳到了,就成功,输出跳的次数#include <iostream>#include <string>#define min(_x,_y) ((_x<_y)?(_x):(_y))using namespace std;string lilies;int main(){ int now=0,j,n,原创 2017-12-22 23:42:18 · 291 阅读 · 0 评论 -
Codeforces Round #451 (Div. 2) E - Squares and not squares
做两种标记,一个是需要改变为完全平方数的need[]数组,一个是不需要改变为完全平方数的noneed[]数组。并记录已经是完全平方数的个数bal。 数据处理:将不予考虑的数字设置为MAX,这样排序的时候就自动排到最后面去不再干扰取数字。#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int原创 2017-12-22 23:11:45 · 186 阅读 · 0 评论 -
Codeforces Round #451 (Div. 2) D - Alarm Clock
维护区间[nowclocki,i]的左端点值和右端点值和区间内的元素数目,如果nowclock指向的元素已经处理过或者不满足ai−anowclocki<ma_i-a_{nowclocki}<m则左端点右移,如果处理完以后区间内仍然有k个元素,则“关掉第i个闹钟”。#include <cstdio>#include <algorithm>using namespace std;int clock原创 2017-12-22 23:11:17 · 177 阅读 · 0 评论 -
Educational Codeforces Round 34 (Rated for Div. 2) D - Almost Difference
当读入第k个数字的时候: ans′=∑k−1i=1(numberk−nubmeri)=(k−1)numberk−∑k−1i=1nubmerians'=\sum_{i=1}^{k-1}(number_k-nubmer_i)=(k-1)number_k-\sum_{i=1}^{k-1}nubmer_i 当然这不是实际的答案,因为差值为1及以内的数是不必加到答案上的; 所以 ans=ans′−co原创 2017-12-22 23:10:14 · 140 阅读 · 0 评论 -
Codeforces Round #454 (Div. 2, based on Technocup 2018 Elimination Round 4) C - Shockers
如果在!中没有出现过,那么这些字母没有嫌疑,如果在?或.中出现过,那么这些字母没有嫌疑。当最后只剩一个字母有嫌疑时,就确定了假设的字母,这时候我们只需要判别之后出现的?和!的数目即可。#include <iostream>#include <string>using namespace std;bool notis[30]={false},mayis[30]={false};string s原创 2017-12-24 01:58:59 · 261 阅读 · 0 评论 -
Codeforces Round #454 (Div. 2, based on Technocup 2018 Elimination Round 4) E - Party
状态压缩dp 如果本来就在关系网之内,最小步是0,上一个状态是-1(不存在) 如果通过新的关系到达的步骤小于之前的步骤,就更新。#include <iostream>#include <cstring>using namespace std;const int init=-1;int minstep[1<<22],friends[22];struct list{ int las原创 2017-12-24 12:15:52 · 263 阅读 · 0 评论 -
Codeforces Hello 2018 - A - Modular Exponentiation
注意一下溢出问题就能过…#include using namespace std;typedef unsigned long long ull;typedef long long ll;int main(){ ull x,mo,ans=1 ; cin>>x>>mo; if(x>=30)cout<<mo; else cout1<<x);}原创 2018-01-09 00:56:50 · 234 阅读 · 0 评论 -
Codeforces Hello 2018 - C - Party Lemonade
以平均花费排序,在“哪怕’吃一点小亏’少打点Lemonade”和“就是图便宜,我直接一次买够花费更少的Lemonade”之间决策,决策方法就用递归。#include #include #include using namespace std;struct costs{ double cost; int l,orgcs;}c[35];int n,cs;long lon原创 2018-01-09 01:03:36 · 260 阅读 · 0 评论 -
Codeforces Hello 2018 - B - Christmas Spruce
建立一棵树,然后遍历。如果有向下的子节点非空,就继续递归遍历,如果这非叶子结点结果又不满足云杉定义,那么就不是云杉,立即终止递归遍历。(注意因为树的特性和题目数据,我们可以放心用递归而不导致栈溢出)#include #include using namespace std;struct tree{ vectorint> next; }tree[10005];int flag=原创 2018-01-09 01:00:12 · 215 阅读 · 0 评论 -
Codeforces Good Bye 2017 F - New Year and Rainbow Roads
一、如果升序中没有G颜色点: 那么我们找到第一个B颜色点prb(prev-blue)和最后一个B颜色点sub(succ-blue),和第一个R颜色点prr(prev-red)和最后一个R颜色点suc(succ-red),最优的方案是: cost=xsub−xprb+xsur−xprrcost=x_{sub}-x_{prb}+x_{sur}-x_{prr} 如果某个颜色也不存在,则记Δx=0。二原创 2017-12-30 13:26:37 · 414 阅读 · 0 评论 -
Codeforces Good Bye 2017 C - New Year and Curling
简单模拟,对于第i个冰壶,如果k∈[0,i-1]范围的冰壶k阻碍了冰壶,即: |xi−xk|<2r|x_i-x_k|<2r 则假设冰壶i能走到冰壶k与之碰撞i。计算此时冰壶y,我们对每一个情况都做判断,找出最大的y即可。#include <cstdio>#include <cmath>#include <algorithm>using namespace std;struct ps{原创 2017-12-30 12:55:33 · 267 阅读 · 0 评论 -
Codeforces Good Bye 2017 B - New Year and Buggy Bot
简单枚举情况。对于每一种可能的映射都尝试一遍,如果机器人“撞墙”了,则失败,如果在操作集消耗完之前走到终点,则成功。#include <cstdio>#include <cstring>char maze[55][55],ope[105];int wayx[]={0,0,1,-1},wayy[]={1,-1,0,0};int trys[25][5]={{0,1,2,3},{0,2,1,3},原创 2017-12-30 12:50:10 · 498 阅读 · 0 评论 -
Codeforces Good Bye 2017 A - New Year and Counting Cards
简单搜索,如果碰到了’1’,’3’,’5’,’7’,’9’则需要翻面,因为要验证背面不是元音,如果碰到了’a’,’e’,’i’,’o’,’u’则需要翻面,因为要验证背面不是奇数。#include <iostream>#include <string>using namespace std;char dic[]="13579aeiou";int main(){ string str;原创 2017-12-30 12:47:08 · 267 阅读 · 0 评论 -
[非题解]Codeforces Round #454 (Div. 2) D. Seating of Students
这题是错的…虽然不知道哪里错了,还是贴下来吧…#include <iostream>#include <queue>using namespace std;queue<int> outp[100000];void solve(int n,int m){ int tem,i,j; for(i=1;i<=n;i++){ tem=(i-1)*m+1;原创 2017-12-24 15:52:19 · 349 阅读 · 0 评论