这道题并不简单,要得出几个结论之后才可以做.首先就是根据Kruskal求最小生成树的过程,短边是首选的,那么对于这道题也是,我们先做一次直选短边的最小生成树这样会形成多个联通块,这些联通块内部由短边相连.那么接下来要形成完整的最小生成树,我们就得用长边把这些联通块连起来,因为要最短路径,所以我们用Dijkstra做连边的过程 这里给出一个结论:只要满足两个条件:第一,每个联通块内部不能连长边.第二,一个联通块不能被访问两遍. 重点来了:只要是满足这两个条件下树就能保证它是一棵最小生成树. 为什么…
Codeforces Round #556 题解 Div.2 A Stock Arbitraging 傻逼题 Div.2 B Tiling Challenge 傻逼题 Div.1 A Prefix Sum Primes 傻逼题,先放2,1然后放完2然后放完1 Div.1 B Three Religions 有三个字符串\(s_1,s_2,s_3\)和一个主串\(s\),每次操作改变一个\(s_i\)(插入或删除字符),每次操作完之后问\(s\)是否可以分成\(3\)个子序列正好是\(s_1,s_…
Codeforces Round #556 (Div. 1) A. Prefix Sum Primes 给你一堆1,2,你可以任意排序,要求你输出的数列的前缀和中质数个数最大. 发现只有\(2\)是偶质数,那么我们先放一个\(2\),再放一个\(1\),接下来把\(2\)全部放掉再把\(1\)全部放掉就行了. #include<iostream> #include<cstdio> using namespace std; inline int read() { int x=0;bo…
Problem  Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 1000 mSec Problem Description Input Output Sample Input 51 2 1 2 1 Sample Output 1 1 1 2 2 题解:这个题有做慢了,这种题做慢了和没做出来区别不大... 读题的时候脑子里还意识到素数除了2都是奇数,读完之后就脑子里就只剩欧拉筛了,贪心地构造使得前缀和是连续的素数,那…
Problem  Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 3000 mSec Problem Description Input Output Sample Input 6 8abdabc+ 1 a+ 1 d+ 2 b+ 2 c+ 3 a+ 3 b+ 1 c- 2 Sample Output YESYESYESYESYESYESNOYES 题解:动态规划,意识到这个题是动态规划之后难点在于要优化什么东西,本题…
比赛链接 A 贪心 #include <cstdlib> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <queue> #include <vector> #include <set> using namespace std; const int N = 1005; int a[N], b[…
题目链接:http://codeforces.com/contest/1150/problem/D 题目大意: 你有一个参考串 s 和三个装载字符串的容器 vec[0..2] ,然后还有 q 次操作,每次操作你可以选择3个容器中的任意一个容器,往这个容器的末尾添加一个字符,或者从这个容器的末尾取出一个字符. 每一次操作之后,你都需要判断:三个容器的字符串能够表示成 s 的三个不重叠的子序列. 比如,如果你的参考串 s 是: abdabc 而三个容器对应的字符串是: vec[0]:ad vec[1…
A. Stock Arbitraging 直接上代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<stack> #include<set> #include<map> #include<vector> #include<cmath>…
题目大意:$n$ 个点,$m$ 条边的无向图,边权只有两种,小的为 $a$,大的为 $b$. 对于每个点 $p$,询问在这张图所有的最小生成树上,$1$ 到 $p$ 的最短距离的最小值. $2\le n\le 70,1\le m\le 200,1\le a<b\le 10^7$. 妙啊,真的太妙了. 有以下几个结论:(以下称边权为 $a$ 的叫轻边,边权为 $b$ 的叫重边) 结论 1:如果原图两个点中存在一条路径只有轻边,那么这两点在所有的最小生成树的路径上都不会有重边.根据最小生成树的性质,…
A 容易发现i,i+1至少有一个数出现,于是可以让尽量多的2和奇数出现 #include<bits/stdc++.h> using namespace std; int n,s1,s2; int main() { scanf("%d",&n); ,x;i<=n;i++) { scanf("%d",&x); )s1++;else s2++; } ) { "); else{ printf("2 1"); ;…