![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
网络赛
#
夕林山寸
这个作者很懒,什么都没留下…
展开
-
2018CCPC网络赛 [Cloned]
D:n>=3均不可行,n==2用勾股定理搞一搞就行I:对于n!个排列,共有n!*(n-1)个相邻数,n*(n-1)/ 2种路径所以每种路径有2*(n-1)! 个相当于求:所以路径和的 2*(n-1)!倍dfs统计结果即可#include <bits/stdc++.h>using namespace std;typedef long long ll;#define pb push_backconst double PI= acos(-1.0);const.原创 2020-09-17 19:21:44 · 209 阅读 · 0 评论 -
牛客编程巅峰赛S1第4场 - 黄金&钻石 ABC
A:直接枚举每盘放几个即可。(能枚举的就不要思考)#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);const int M = 1e5+7;/*int head[M],cnt=1;void init原创 2020-07-18 23:00:01 · 213 阅读 · 0 评论 -
东华大学2020年程序设计竞赛(同步赛) G Gaming with Mia 思维+dp
这题难点在于乘法和加法有运算优先级。不成直接dp。我们分析可知,只有0,-1,1的情况下,连乘的个数不会太多,因为乘法的作用只是让-1从负数变正数,即用另一个负1进行抵消,或者用0进行抵消。如果两个-1直接由多个1,肯定不如加法,多个-1的话,完全可以两两相乘再加法。所以最多只有5个连乘。复杂度O(5*n)#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<&l原创 2020-06-09 21:47:31 · 160 阅读 · 0 评论 -
东华大学2020年程序设计竞赛(同步赛)F A Simple GameF A Simple Game
比赛时看错题了。。看出每次只能选择一个串,当时想这不是公平组合游戏水题嘛。。直接SG函数一搞就行:显然全0先手必败。两个操作:1操作是改变1数量的奇偶,2操作并不能改变奇偶(因为2操作变成1,我再把1变回去,相当于没有这一步操作)所以刚开始一个串,1的个数是奇数,则先手必胜即 SG=1 否则先手必败SG=0。然后SG异或起来即可。。但其实这一题是每次任选多个串。。那其实也很简单,只要刚开始存在一个串使得SG[i]=1 我先手把所有SG=1的变成SG=0. 那么后手一定必败。.原创 2020-06-07 21:10:32 · 167 阅读 · 0 评论 -
ICPC 2019-2020 North-Western Russia Regional Contest AEHJM
A:签到模拟即可#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);const int M = 1e5+7;int head[M],cnt;void init(){cnt=0,memset(head,0,原创 2020-05-24 20:09:24 · 289 阅读 · 0 评论 -
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 G 硬币游戏Ⅲ SG函数 /Mutli-SG 游戏 终于补完了……
这题是Mutli-SG 的变形。本质还是SG函数。不考虑算法复杂度来看:每个局面的SG值等于只有一个硬币的SG值的异或和。我们这样想:把长度为n的字符串当成n堆石子。从左往右第i位为1表示第i堆有i个石子。一次操作相当于把第x堆石子分成 若干堆(小于第x堆大小)。(会出现某一位有2个正面朝上的硬币,即2个堆大小相同的堆,但是他们SG的异或和为0,相当于消去他们,即变成背面朝上)有了上面的转化,我们就能用SG函数求解了。暴力打出SG函数的表是n*n*k的复杂度。正常人的做.原创 2020-05-15 21:39:48 · 236 阅读 · 0 评论 -
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 H时空栈 线段树
线段树维护区间加,区间最右边第一个小于x的数。先说下正解:开一个以时间为节点的线段树,每个节点维护的值为当前时间点栈内元素个数。遇到入栈,让t,sz 的值加1,出栈:让t,sz的值减1.碰到查询操作,先查询当前时间点的栈的元素个数nm,再查找[1,t]区间最右边的小于nm的时间点ans。ans+1即最后一次入栈。(可以仔细想一下为什么)上述操作用线段树处理即可。区间加,单点查询。和查询最右边小于x的数。我刚开始的思路是二分+线段树,每个节点维护的是每个时间点的操作,.原创 2020-05-15 11:36:19 · 160 阅读 · 0 评论 -
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 Problem I:纸牌 一道很好的思维题
一看K这么大,显然是会有循环。关键是如何找出循环,并精确找出k次后对应的位置。我们发现:(i - 1) % (N - 1) + 2 每N-1循环一次。赤裸裸的告诉你考虑N-1为循环节长度。假设经过N-1后,序列变成了p。再经过N-1次,序列变成:p[p[i]].再经过N-1次,变成:p[p[p[i]]].//禁止套娃。。。这里很巧妙,可以自己仔细思考一下。然后我们只需要模拟第一个N-1次操作,得到序列P。然后对序列P的每个位置,找出它所在的环,然后执行K-(N-1)轮最后再.原创 2020-05-13 17:25:03 · 164 阅读 · 0 评论 -
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 Problem J 斐波那契和 矩阵快速幂递推
总的思路就是把Fn 转化成用Fj 表示的线性递推的形式。然后用矩阵快速幂加速。具体分析参考这个博主(不过他的代码是错的,可以参考下思路)不过所有能用矩阵快速幂的线性递推。。都能同杜教BM开挂秒。。。https://blog.csdn.net/The___Flash/article/details/106066577#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o原创 2020-05-13 11:47:25 · 246 阅读 · 5 评论 -
ICPC Pacific Northwest Regional Contest 2019 J. Interstellar Travel 扫描求解函数
大概的函数图像。然后下面是给的题解。。懒得再叙述一遍了。我们对每个a[i]分别处理4段,每段对应一段线性区间。先预处理出a=0的值。最后从0到2*pi枚举a的取值,不停的加减影响即可。类似于扫描线的思想。是解决这类问题的一个很棒的思想。#include <bits/stdc++.h>using namespace std;typedef long double ld;#define ls (o<<1)#define rs (o<<1|1)..原创 2020-05-09 11:26:14 · 306 阅读 · 0 评论 -
ICPC Pacific Northwest Regional Contest 2019 I. Error Correction 0/1要素 转化二分图 最大独立集
这题求一个子集,使得任意2个字符串不能通过一次swap相互得到。即让任意2个字符串可以通过一次swap得到的字符串连边,即求最小点覆盖。显然任意图N=500无法求(NP问题)很容易发现:这是个01要素二分图性质。即设立一个初始串,一个字符串需要X次变化得到初始串,另一个串通过Y次变化得到初始串。显然:如果(X&1) == (Y&1),则这两个字符串不可能连边...原创 2020-05-08 12:06:29 · 218 阅读 · 0 评论 -
ICPC Pacific Northwest Regional Contest 2019 L. Carry Cam Failure 分析加搜索
一个不进位的乘法。相当于每一位乘a后移项进行不进位的加法。比如:1234[*]99由于9[*]1234=9876则:摆出计算式: 98769876————975436即:a[*]b=cc的第i位等于:其中表示,比如3[*]4=2我们可以先打一个不进位乘法表方便处理。然后进行搜索。发现x[*]x,得到的N的位数为x的位数*[x的位数-...原创 2020-05-05 19:26:20 · 255 阅读 · 1 评论 -
ICPC North Central NA Contest 2018 A. Pokegene 后缀数组解法
陆陆续续调了3天上午,终于调出来了。这题题解给的代码是错的。错在:每个字符要加上一个'\0',这样可以处理:bb,bba这种情况.下面说下这题的思路:先不考虑算法。对于一个询问,把k个字符串进行按字典序排序。位置相近的字符串肯定LCP越大。所以恰好L个字符串有LCP,且其他没有,一定是排序后的连续L个。我们排序后枚举每个位置[i,i+L-1]看看LCP(i...原创 2020-05-05 11:36:43 · 201 阅读 · 2 评论 -
ICPC Pacific Northwest Regional Contest 2019 ABCDEM
A:经典的换根dp拆成维护两个求和符号里的值。换根即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 1e5+7;int head[M],cnt;struct EDGE{int to,nxt,val;}ee[M*2];void ad...原创 2020-05-04 21:41:14 · 452 阅读 · 0 评论 -
ICPC North Central NA Contest 2018 D. Travel the Skies
一道简单的模拟题。但过的人很少,估计都没时间看这题吧。这题考验一点点码力。一天一天遍历。一天结束后再处理转移人数即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define ...原创 2020-05-03 16:40:43 · 192 阅读 · 0 评论 -
ICPC North Central NA Contest 2018 H. New Salaries 数学分析+前缀和维护
两个线段一左一右,题目保证了l[i-1]<=l[i] r[i-1]<=r[i]则只会出现相交一段,或相离2种情况。分情况讨论把分别的期望算出来。然后用前缀和维护下即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)...原创 2020-05-02 12:59:06 · 185 阅读 · 0 评论 -
Nordic Collegiate Programming Contest 2019 ABCDG
先把赛时AC的题回顾一下:A:STL的应用。注意动物名字首末字符相同情况#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst doub...原创 2020-05-01 21:57:54 · 317 阅读 · 0 评论 -
ICPC Greater New York Region 2019 I. RationalBase 进制转化
把10进制转化为(p/q)进制。每一位均为整数。每一步让n对(p/q)取模,保证余数为正数即可。即找到小于n的数中,能整除(p/q)且最大的数。直接n/p*q 的结果就是。 余数是n%p倒着放位数即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (...原创 2020-04-27 21:35:31 · 290 阅读 · 0 评论 -
ICPC North America Qualifier Contest 2015 E. Cutting Brownies 不公平组合游戏,分析DP。(不能SG)
由于是不公平组合游戏,所以不能用SG函数。但我们可以分析然后DP。考虑怎么切是最优解。对于H先手,切一刀后,会让(x,y)变成 (k,y)(x-k,y),即让y可以切的地方乘2.所以每次尽量选择y小的切,且每次尽量选x/2且,(这样y切的时候能让H可切的地方尽量变多)对于H先手,切一刀后,变成了(x/2,y),(x/2+(x&1),y).如果这两个局面都是V...原创 2020-04-23 12:48:44 · 342 阅读 · 5 评论 -
ICPC North America Qualifier Contest 2015 按通过率从 J开始
J. Torn To Pieces思路很简单,主要是怎么实现:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= ac...原创 2020-04-19 20:28:05 · 185 阅读 · 0 评论 -
ICPC Southeastern Europe Contest 2019 E. Game on a Tree 树上匹配问题
如果树能完全匹配,则先手必败(后手选先手的匹配的点)否则反过来(先手必胜:确定一个最大匹配,先手选非匹配的点,后手只能选最大匹配上的点,先手就对应匹配上)所以我们贪心找树是否是完美匹配即可#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#...原创 2020-04-12 21:24:46 · 222 阅读 · 0 评论 -
ICPC Latin American Regional Contests 2019 L. Leverage MDT 单调栈
由于只能按行翻转,我们枚举列,就相当于求一个直方图的最大子正方形。直方图的高度为,i行j列往右连续相同的字符个数。 (因为翻转相当于把0变成1,我们肯定是尽可能让底层为G,所以底层B就翻转)#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#d...原创 2020-04-10 21:18:37 · 193 阅读 · 0 评论 -
UCF Local Programming Contest 2016 I. Lineup the Dominoes 状态DP
dp[i][j][2],选中多米诺的状态j,以i结尾,i是否翻转。的方案数答案是:如果某个多米诺头尾相同,就只加不翻转的方案。如果全部的多米诺都相同,比如12,12,12这种,总答案要除以二。因为翻转和不翻转会重复同一个方案。剩下的就是很经典的状态转移了。#include <bits/stdc++.h>using namespace std;typedef...原创 2020-04-02 12:59:51 · 111 阅读 · 0 评论 -
UCF Local Programming Contest 2016 G. Jedi and the Galactic Empire
1.5hAC,经典状态线性DP,空间不够,压缩空间即可dp[i][j][k],处理到第i颗子弹,1号冷却j,2号冷却k的最优解#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define ...原创 2020-03-31 18:11:54 · 249 阅读 · 0 评论 -
UCF Local Programming Contest 2016 J. Rising Tides
明显的二分答案。BFS判一下可行性即可#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);co...原创 2020-03-30 22:51:49 · 210 阅读 · 0 评论 -
UCF Local Programming Contest 2016 通过率前七题
A:签到#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);const int M = 1e5+7...原创 2020-03-28 18:39:34 · 435 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 G. Gluttonous Goop 思维规律题
我们模拟后发现:当病菌都连在一起时:形成一个多边形,我们把他填补可以得到一个最小矩形。把这个多边形它感染一次后:又得到一个多边形,把新的多边形填补得到新的矩形,发现:两个矩形内的未被感染的数量都是相同的,所有我们可以K小于20时模拟,保证所有病菌连接。后面的轮数,用填补快速计算。#include <bits/stdc++.h>using namespace std;...原创 2020-03-28 10:27:32 · 256 阅读 · 0 评论 -
UCF Local Programming Contest 2018 F. Team Shirts/Jerseys, 搜索+剪枝
很好的一道搜索,看起来时间很大,其实仔细分析,发现时间复杂度是乘法而不是指数。我们可以先抹除一位或2位数,枚举摸出方案共19个。(10位数,抹除一位有10种,抹除2位有9种)然后每抹除一个,判断剩下的串是否可以被25个字符串拼成,最坏情况10*25,每个位置判一遍。总共是10*25*20的复杂度。。主要别重复增加时间,就很快 才3ms#include <bits/std...原创 2020-03-27 20:43:11 · 366 阅读 · 0 评论 -
UCF Local Programming Contest 2018 E. Cupcake Bonuses dfs序上跑2棵线段树
题解给的暴力,。,一脸怀疑。。。估计数据没有造极限。。下面说下正解:像这种区间处理子树,带修改带查询,一看就是dfs序上跑线段树我们建一颗sm线段树,维护每个员工的S,初始都为0,等员工加进来的时候,给他赋值为S。1操作:加员工 up函数2操作:修改每个员工的S值,单点在sm树上修改,up函数3操作:让一颗子树的所有S乘上B,把所得的值存在另一颗ans线段树上,ans线段树...原创 2020-03-26 17:32:16 · 327 阅读 · 0 评论 -
UCF Local Programming Contest 2018
A:模拟题//#include <bits/stdc++.h>#include<iostream>#include<cmath>#include<cstdio>#include<map>#include<set>#include<algorithm>#include<vector>...原创 2020-03-26 16:39:24 · 454 阅读 · 0 评论 -
2020camp补题情况
第一场:还剩:4 5 7 10 (9还差树套树的写法)第二场:第三场:第四场:第五场:第六场:原创 2020-02-03 20:15:36 · 132 阅读 · 0 评论 -
2019-2020 ICPC, NERC, Northern Eurasia Finals B,C,L,J,K
B:一定是奇数个颜色,且中间的颜色的个数+1就是答案。其他都是不可能的。C:枚举那个人竞选成功即可L:先处理1-K行。 一行一行进行处理,第一列直接从小到大,第二列往后,判断前一列与第k个字符串的那一列的字符相同的位置最上面在哪,然后从上往下填字典序小的字符。依次类推填好后再填剩下的就行。先填的是个倒三角以上是签到题。。J:枚举屏幕大小,屏幕大小一定小于等于最小的图标数+1....原创 2019-12-07 20:57:54 · 619 阅读 · 0 评论 -
2019CCPC女生赛
C - Function HDU - 6546由于a大于0,所有二次函数均是开口向上,而且x必须正整数。所以很自然想到先全部分配1.然后逐个分配,由于二次函数f[i]-f[i-1]左边一定比右边更优,即i越小结果越小。所以我们可以直接把F[I]-F[I-1]丢到优先队列里。每次让某一个二次函数的x+1,根据前面的分析,一定是队列首的二次函数加1 更优,因为队列里的所有数,将来只可能更...原创 2019-11-30 21:39:44 · 448 阅读 · 0 评论 -
2019-2020 ACM-ICPC Brazil Subregional Programming Contest
A是补题所以有代码A:VP时读错题,以为只能走整数点,且只能上下左右走。其实随意,有缝就行。想一下就知道,左下角不能到右上角的条件必须是,圆连接了左上和右下部分,使得路被阻断。然后并查集判联通搞搞就行#include <bits/stdc++.h>using namespace std;typedef long long ll;//typedef ...原创 2019-09-29 20:37:19 · 1803 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Shanghai 2019 G , F
G Substringhash+滑动窗口即可。问多个串在原串特殊出现次数。即:首位相同,中间字符出现次数相同。那我们可以把首位乘上131进制的2个固定位。然后中间字符每个字符按字符种类赋予相应的位。最后hash相同的就是特殊相同的2个串每个长度m的询问字符串,只需要滑动窗口存进unordered里,复杂度Onq次Oq*n 会T;但题目保证长度和小于100000,所以不同...原创 2019-09-16 15:40:19 · 296 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 I. Inquiry II 二进制枚举+树形DP
找无向图的最大独立集是个NPC问题优化只能优化常数,复杂度是O(n*2^n) 级别的。100必炸。这题有个很明显的提示,就是保证了边数[n-1,n+15]。赤裸裸的暗示你,枚举最多16条边上的点,删去这些边,转化成一个树来做,然后树形DP找最大独立集,这就是个经典问题了。删边的前提是,不会少算一些情况,由于每条边的两个点不能同时取。我们用二进制枚举每条边,不取哪个点。在树形DP...原创 2020-03-25 11:14:57 · 150 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 K. Keep Him Inside 高中数学题
以上,是为什么这题可以ON扫描的证明。只要P在我们枚举的三角形内部,就一定能找到a,b,c满足题意的解。然后就是解二元一次方程就行。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#de...原创 2020-03-24 21:32:19 · 211 阅读 · 0 评论 -
codeforces gym 101623 G - Glyph Recognition
枚举多边形,用每个点确定多边形的r。然后取最大和最小,然后用r^2比值即面积之比。具体求r:可以把每个点用极坐标表示,利用旋转对称把点等价到多边形正半轴逆时针第一个边上。然后就可以用高中几何知识解决了。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o&...原创 2020-03-23 10:59:06 · 145 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 L. Lucky Draw 概率题
由于输出概率是要求精度1e-6内即可。这是个无穷次实验。我们可以设置实验轮数。由于20次一个人一条命不死的概率是1e-12 基本相当于必死。我们让轮数为50*20,那么每个人相当于必定50条命都死完。然后就是概率论的题目了。某个人赢的概率是:i轮这个人死,其他人在i轮之前死的概率,i取1-n求和。平的概率就是1减去n个人赢的概率。以后碰到输出精度,要考虑下近似的 问题,...原创 2020-03-22 11:22:18 · 309 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019
B. Breaking Branches没人选一次会让n减一,所以n奇数先手必败,偶数先手必胜#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backcon...原创 2020-03-22 11:18:30 · 374 阅读 · 0 评论