JOI Open 2018】的更多相关文章

题解 有意思的一个dp,我们对G计数,发现如果不在同一条对角线上的G肯定不会互相影响,所以我们对于每一条对角线dp dp的方式是枚举这个G以什么方式放,横着还是竖着,还是不放 代码 #include <iostream> #include <cstdio> #include <vector> #include <algorithm> #include <cmath> #include <cstring> #include <ma…
题解 首先求一个最短路图出来,最短路图就是这条边在最短路上就保留,否则就不保留,注意最短路图是一个有向图,一条边被保留的条件是 dis(S,u) + val(u,v) = dis(v,T)我们需要求两遍最短路 然后我们发现就相当于在最短路图上走一段,然后走一段非0的部分 我们把旧图保留,在上面连一些边权为0的有向边,从U到V求一遍最短路,由于最短路图是有向的,我们再从V到U求一遍最短路 然而--WA了? 我们发现我们最短路图上下来之后,可能会又走到最短路图上,但是同时选中两条路径是不可能的,我们…
题解 没啥特别好的算法,是个讨论题,由于0 1 ?三类数位中最少的不会超过6 如果1不超过6,那么记录\(f1(S)\)为 \(\sum_{T \subset S} val(T)\)这个可以通过类似FMT的递推式在\(L 2^L\)求出 然后容斥,如果这个数和1的个数差别是偶数就加上否则就减掉 如果0不超过6,记录\(f0(S)\)为 \(\sum_{T \supset S} val(T)\) 然后容斥,如果这个数有偶数个1就加上否则减掉 问号很少的话就是直接枚举计算值了 复杂度\(O(2^{\…
题目列表:https://loj.ac/problems/search?keyword=JOI+2018+Final T1 寒冬暖炉 贪心 暴力考虑每相邻两个人之间的间隔,从小到大选取即可 #include<iostream> #include<string.h> #include<string> #include<stdio.h> #include<algorithm> #include<math.h> #include<ve…
LOJ#2351. 「JOI 2018 Final」毒蛇越狱 https://loj.ac/problem/2351 分析: 首先有\(2^{|?|}\)的暴力非常好做. 观察到\(min(|1|,|0|,|?|)\le 6\),我们只需要推出一个\(2^{|0|}\)和\(2^{|1|}\)的容斥式子 而这个式子也是很好推的. 考虑子集反演: \(f(S)=\sum\limits_{T\subseteq S}g(T)\) \(g(S)=\sum\limits_{T\subseteq S}(-1…
题目链接 题目描述 JOIOI 王国是一个 $H$ 行 $W$ 列的长方形网格,每个 $1\times 1$ 的子网格都是一个正方形的小区块.为了提高管理效率,我们决定把整个国家划分成两个省 $JOI$ 和 $IOI$ . 我们定义,两个同省的区块互相连接,意为从一个区块出发,不用穿过任何一个不同省的区块,就可以移动到另一个区块.有公共边的区块间可以任意移动.我们不希望划分得过于复杂,因此划分方案需满足以下条件: 区块不能被分割为两半,一半属 $JOI$ 省,一半属 $IOI$ 省. 每个省必须…
题目描述 JOI 铁路公司是 JOI 国唯一的铁路公司. 在某条铁路沿线共有 $N$ 座车站,依次编号为 $1...N$. 目前,正在服役的车次按照运行速度可分为两类:高速电车(简称快车)与普通电车(简称慢车). 慢车每站都停.乘慢车时,对于任意一座车站 $i(1⩽i<N)$,车站 $i$ 到车站$ i+1$ 用时均为 $A$. 快车只在车站 $S_1, S_2, \ldots, S_M$​​ 停车 $(1=S_1<S_2<\cdots<S_M=N)$.乘快车时,对于任意一座车站…
题面 一看到求“最小值的最大值”这种问题,就能想到二分了. 二分答案,然后我们要把一圈分成三块,使这三块的大小都$\geq mid$.做法是把环展开成2倍长度的链,先钦定一个起点,然后根据前缀和再二分一下前两块的最小大小(注意前两块要连着),第三块用一圈的大小减去前两块的大小即可得到.如果第三块的大小$\geq mid$就返回$true$,提高答案范围:否则返回$false$,降低答案范围. 这样就能卡着最优情况下最小那一块的最大值从而得出答案了. 上面这种做法是$O(n*log_n*log_a…
RT,发现找不到题,于是又开了新坑 JOI特色:重思考,代码难度(相比NOI系列)基本没有 (省选前到处挖坑2333) JOI 2017 Final 焚风现象 差分,莫得了 (不是看到200ms就tm线段树去了 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; long long ans,dif[N]; int n,m,s,t,t1,t2,t3,rd,lst; in…
http://acm.timus.ru/problem.aspx?space=1&num=2018 真心爱过,怎么能彻底忘掉 题目大意: 长度为n的串,由1和2组成,连续的1不能超过a个,连续的2不能超过b个 dpa[i] 表示长度为i时以a为结尾的串的个数,dpb[i] 类似 求dpa[i]时 需要枚举结尾a的个数就可以了 dpb[i] 类似 #include <iostream> #include <stdio.h> #include <stdlib.h>…