https://codeforces.com/contest/1138/problem/E 题意 有n个城市(1e5),有m条单向边(1e5),每一周有d天(50),对于每个城市假如在某一天为1表示这天城市博物馆开放,反之闭馆,问你最多能去多少个博物馆 题解 第一个分出来的强连通块是dag的起点 假设博物馆每天都开放,那么求出图的强连通块后,dag上dp就行 现在加上有d天的话,只需要加多一维构成状态,然后将状态一维化看成点,再建图 计数的时候注意每个强联通块里面每个城市只能选一次 代码(链式前…
这里没有翻译 Codeforces Round #545 (Div. 1) T1 对于每行每列分别离散化,求出大于这个位置的数字的个数即可. # include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn(1005); int n, m, a[maxn][maxn], mx1[maxn][maxn], mx2[maxn][maxn], q[maxn], len; int main() { i…
人生第一场Div. 1 结果因为想D想太久不晓得Floyd判环法.C不会拆点.E想了个奇奇怪怪的set+堆+一堆乱七八糟的标记的贼难写的做法滚粗了qwq靠手速上分qwqqq A. Skyscrapers 将行列各自离散化并记录下每一个值在行离散化时和列离散化时得到的值以及每一行.每一列出现的最大离散化值 对于每一行和每一列考虑其相交格子的两个离散化值,如果它们的差为\(\Delta\),就把它对应行列最大离散化值中较小的+\(\Delta\),最后两者取Max #include<iostream…
题目链接 A. Sushi for Two 题意 在一个 01 序列中找出长为偶数的连续的一段使得它前一半和后一半内部分别相同,而前一半和后一半不同. \(2\le n\le 100\ 000\) 题解 令共有 \(k\) 段连续的区间,第 \(i\) 段区间的长度设为 \(a_i\),则答案是在求 \(\max_{i=1}^{k-1}\min(a_i,a_{i+1})\).我因为没好好判 \(\min\) 而轻松地丢掉了 WA on pretest 4 的50分. 代码 标签 枚举 B. Ci…
https://codeforces.com/contest/1138/problem/D 题意 两个01串s和t,s中字符能相互交换,问最多能得到多少个(可交叉)的t 题解 即将s中的01塞进t中,预处理出next(tlen),然后每次填完移到next(tlen)继续填即可 代码 #include<bits/stdc++.h> using namespace std; int sl,pl,i,j,a,b,e,f,nt[500005]; string s,p; void get_nt(){ i…
链接:http://codeforces.com/contest/1138/problem/D 啊啊啊啊啊啊,自闭啊,比赛的时候判断条件 if(s1[i-1]=='0') aa++;写成了 if(s1[i]=='0') aa++;少写了个-1,被hack了,上分场变成了掉分场. 思路; 题目需要t字符串出现次数最多,那么找到最大的重叠部分就好了,然后依次加上就好了 主要就是要找到字符串t与本身的重叠部分,,假设有两个t,第一个t不变,第二个t向右移动: 比如: 10101010 -1010101…
题目链接:http://codeforces.com/contest/1138/problem/D 题目大意:给你两个字符串s1和s2(只包含0和1),对于s1中,你可以调换任意两个字符的位置.问你最多能在s1中构造出几个s2(可重叠). 具体思路:首先找到字符串s2的最小循环节,比如说1101,我们找到的最小循环节就是101,这样的话,我们每次在后面加上101就能构造出一个新的1101了,最小循环节是最小的代价. AC代码: #include<bits/stdc++.h> using nam…
题目链接:http://codeforces.com/contest/1138/problem/B 题目大意:贼绕口的题目,就是给你两个字符串s1,s2,然后每一个人代表一列,第一列代表技能一每个人是否会,第二列代表技能2是否每个人会.然后1代表当前的技能这个人会,0代表不会. 然后让你安排这个n个人去两场演出,要求 第一场的技能一会的人数和第二场技能二会的人数是相同的,然后问你是否有合法的请况,如果有输出第一场派谁去.如果没有,输出-1. 具体思路:(首先四个for循环是肯定会超时的).我们枚…
本来开头两道题写得挺快的,然后第三题想了一会儿胡出一个scc计算gcd的做法,写了一发凭借信仰交了上去结果一发pp了?然后第四题沙雕了想了很久才会,于是罚时瞬间变多.结果后面两题都没时间看了,赛后感觉e题考场上还是可做的... 最后自豪的成为c题fst的一员,因为naive写萎了一个地方. 题目链接 A. Skyscrapers 题意:给定一个\(n\times m\)的矩阵,对于所有\(1\leq i\leq n,1\leq j\leq m\),计算将第\(i\)行及第\(j\)列共同离散化并…
一.题面 here 二.分析 这题刚开始没读懂题意,后来明白了,原来就是一个数连通块里点数的问题.首先在建图的时候,只考虑红色路径上的点.为什么呢,因为为了不走红色的快,那么我们可以反着想只走红色的路径,这样把所有的可能数再减去只走红色路径的数就是最终的答案了.这里要注意的是,如果连通块里只有一个点,那么就是K个点都是这个点的情况,根据题意是不满足的,也要减去. 三.AC代码 #include<bits/stdc++.h> using namespace std; typedef long l…
https://codeforces.com/contest/1138/problem/F 题意 有一条长为t的链,一个长为c的环,定义终点为链和环相连环上的第一个点,现在有10个人在起点,你每次可以选择一部分人向前移动一步,然后会返回十个人的分组情况(在同一个点的为一组),一旦进入了环里就只会在环里转圈,让你在最多\(3*(t+c)\)次操作下,让所有人走到终点 题解 最多只能\(3*(t+c)\)次操作,但是现在t和c都不知道,所以无法用随机法 用两个人a,b,a每次走一步,b每次走两步,当…
题目要求,给定一个s序列,一个p序列,问能不能对s做相应的调整,使得s序列中,有尽可能多的p子串(可以重复) 最开始我拿到这个题目,也是一点头绪都没有,如何做调整呢? 首先考虑如何会有尽可能多的子串,可以相交那种? 貌似我们要找的就是子串后缀和前缀匹配度 这里再次补充一下KMP中next数组的意义 首先要理解next数组的含义:https://www.cnblogs.com/chenxiwenruo/p/3546457.html 那么我们通过求next数组,很容易知道知道,t的最小循环长度是k=…
A. Sushi for Two 代码: #include <bits/stdc++.h> using namespace std; ; ; int a[maxn], vis[maxn]; int main() { scanf("%d", &N); ; i <= N; i ++) scanf("%d", &a[i]); , r = ; while(l <= N && r <= N) { while(a[l…
题目链接 给你一个n∗m的矩阵res,让你输出一个n∗m的矩阵a,这个矩阵满足:给你一个n*m的矩阵res,让你输出一个n*m的矩阵a,这个矩阵满足:给你一个n∗m的矩阵res,让你输出一个n∗m的矩阵a,这个矩阵满足: ai,j代表第i行第j列的元素,通过减小res之后,使得第i行,第j列的所有元素的最大值a_{i,j}代表第i行第j列的元素,通过减小res之后,使得第i行,第j列的所有元素的最大值ai,j​代表第i行第j列的元素,通过减小res之后,使得第i行,第j列的所有元素的最大值 最小…
A:求出该行该列各有多少个比其小的取max,该行该列各有多少个比其大的取max,加起来即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #define N 1010 char ge…
#include<bits/stdc++.h>using namespace std;int a[1007][1007];pair<int,int>p1[1007],p2[1007];int rk1[1007][1007],rk2[1007][1007],no1[1007][1007],no2[1007][1007];int main(){    int n,m;    scanf("%d%d",&n,&m);    for(int i=1;i&…
#include<bits/stdc++.h>using namespace std;const int N=1000007;char s1[N],s2[N];int len1,len2;int nex[N];int cnt1[7],cnt2[7];int main(){    scanf("%s %s",s1+1,s2+1);    len1=strlen(s1+1);    len2=strlen(s2+1);    for(int i=1;i<=len1;i++…
题目传送门 题意: 给你n*m个点,每个点有高度h [ i ][ j ] ,用[1,x][1,x]的数对该元素所处十字上的所有元素重新标号, 并保持它们的相对大小不变.n,m≤1000n,m≤1000 ,求其最小标号的最大值. 思路: 把行列离散化一下,然后答案是把十字上的所有数相对大小的最大值 代码: #include<bits/stdc++.h> using namespace std; #define N 1005 int n,m; vector<int>r[N],c[N];…
题目链接: 题目 E. New Reform time limit per test 1 second memory limit per test 256 megabytes inputstandard input outputstandard output 问题描述 Berland has n cities connected by m bidirectional roads. No road connects a city to itself, and each pair of cities…
D. Substring time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output You are given a graph with n nodes and m directed edges. One lowercase letter is assigned to each node. We define a path's valu…
A. Olympiad time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The recent All-Berland Olympiad in Informatics featured n participants with each scoring a certain amount of points. As the head…
B. Beautiful Paintings time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There are n pictures delivered for the new exhibition. The i-th painting has beauty ai. We know that a visitor becomes…
Beru-taxi 题目链接: http://codeforces.com/contest/706/problem/A Description Vasiliy lives at point (a, b) of the coordinate plane. He is hurrying up to work so he wants to get out of his house as soon as possible. New app suggested n available Beru-taxi…
Codeforces Round #434 (Div. 2) 刚好时间对得上,就去打了一场cf,发现自己的代码正确度有待提高. A. k-rounding 题目描述:给定两个整数\(n, k\),求一个最小整数\(x\)使得,\(x\)既是\(n\)的倍数,也是\(10^k\)的倍数. solution 首先判断\(n\)是不是\(10^k\)的倍数,如果是就可以直接输出了. 如果不是,就算出\(n\)有质因子\(2\)多少个,质因子\(5\)多少个,如果\(2\)比较少,那就乘\(2\),否则…
题目传送门 /* 题意:在n^n的海洋里是否有k块陆地 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 输出完k个L后,之后全部输出S:) 5 10 的例子可以是这样的: LSLSL SLSLS LSLSL SLSLS SSSSS */ #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <string> usi…
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常复杂,明显超出自己现在水平,卡了很久也没有好好做题.等了很长时间才开始看D题,而这时信心已经严重不足.赛后再看D题才发现自己比赛时理解错了题意,致使误以为题目非常复杂.而实际上,这个过程分析起来是非常容易的. 对于三种棱长度分别为a,b,c的石头,r最大为min(a,b,c)/2;. 如果两个石头要…
Codeforces Round #111 (Div. 2) C. Find Pair 题意 给\(N(N \le 10^5)\)个数,在所有\(N^2\)对数中求第\(K(K \le N^2)\)对数. 排序按照pair比较,first为第一关键字,second第二关键字. 思路 统计\(cnt[x]\)为值\(x\)出现的次数. 第一关键字为\(x\)的对数为\(cnt[x] \times n\),显然可以找到第一关键字. 在确定第一关键字\(x\)后,第二关键字\(y\)的出现次数为\(c…
Codeforces Round #485 (Div. 2) https://codeforces.com/contest/987 A #include<bits/stdc++.h> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define IT set<ll>::iterator #define sqr(x) ((x)*(x)) #define pb…
Codeforces Round #485 (Div. 2) F. AND Graph 题目连接: http://codeforces.com/contest/987/problem/F Description You are given a set of size $m$ with integer elements between $0$ and $2^{n}-1$ inclusive. Let's build an undirected graph on these integers in…
Codeforces Round #508 (Div. 2) http://codeforces.com/contest/1038 A #include<bits/stdc++.h> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define IT set<node>::iterator #define sqr(x) ((x)*(x)) #define…