https://codeforces.com/contest/1191/problem/F 看了一下题解的思路,感觉除了最后一段以外没什么启发. 首先离散化x加快速度,免得搞多一个log.其实y不需要离散化. 规定无穷大就是xn+1这个很好理解嘿嘿.(反正开多了5个不怕) 注意到其实从上往下一行一行扫过去,每次必须新增的元素才是新的集合,那很容易想到一个不重不漏的办法就是每次计算"以点p[i]为加进去的新点中的结束的集合",那么假设一开始p[i]的左侧有cntl个点,那么显然有(cnt…
传送门 注意到矩形往上是无限的,考虑把点按 $y$ 从大到小考虑 对于枚举到高度为 $h$ 的点,设当前高度大于等于 $h$ 的点的所有点的不同的 $x$ 坐标数量为 $cnt$ 那么对于这一层高度 $h$ 我们就有 $cnt(cnt+1)/2$ 种不同的 $l$,$r$ ,使得矩形内点集不同 发现对于某些 $x$ 在这一层相邻两点之间,高度大于 $h$ 的点,这样又重复算了它们的贡献,所有要再扣掉 直接用树状数组维护一下当前区间内不同的 $x$ 的数量即可 因为离散化了判断 $x$ 是否出现过…
大意: 给定$n$个平面点, 定义集合$S(l,r,a)$表示横坐标$[l,r]$纵坐标$[a,\infty]$内的所有点. 求可以得到多少种不同的集合. 从上往下枚举底层最右侧点, 树状数组统计贡献. #include <iostream> #include <algorithm> #include <cstdio> #define REP(i,a,n) for(int i=a;i<=n;++i) using namespace std; typedef lon…
思路: 线段树 + 扫描线. 实现: #include <bits/stdc++.h> using namespace std; typedef long long ll; ; int n, x[N], y[N], bit[N]; vector<int> v[N]; void compress(vector<int>& x) { sort(x.begin(), x.end()); x.erase(unique(x.begin(), x.end()), x.end…
Codeforces 718A Efim and Strange Grade 程序分析 jerry的程序 using namespace std; typedef long long ll; string buf; int i; void up(int at) { at--; if (at < 0) { buf = '1' + buf; i++; return; } if (buf[at] == '.') at--; buf[at]++; if (buf[at] == '9'+1) { buf[…
[Codeforces 1191D] Tokitsukaze, CSL and Stone Game(博弈论) 题面 有n堆石子,两个人轮流取石子,一次只能从某堆里取一颗.如果某个人取的时候已经没有石子,或者取完后又两堆石子个数相同(个数为0也算).假如两人都足够聪明,问谁能赢. 分析 贪心考虑,最后局面一定是0~n-1的一个排列.这时谁取谁就输.因此我把a[i]从小到大排序,把a[i]变成i-1,可以计算出取的石子个数\(\sum (a_i-i+1)\),如果是奇数,则先手胜,否则后手胜. 但…
https://codeforces.com/problemset/problem/1081/C 这道题是不会的,我只会考虑 $k=0$ 和 $k=1$ 的情况. $k=0$ 就是全部同色, $k=1$ 就是左边一个色右边一个色, $m(m-1)$ ,再选转折点有 $i-1$ 种 $C_{i-1}^{1} $( $i$ 个球. $i-1$ 个空挡都可以插). 到 $k=2$ 呢?可以是三种不同颜色,也可以是左右左,也就是 $m(m-1)(m-1)$ ,再选转折点有 $C_{i-1}^{2}$ .…
Codeforces 题面传送门 & 洛谷题面传送门 首先对于这样的题目,我们应先考虑如何计算一个括号序列 \(s\) 的权值.一件非常显然的事情是,在深度最深的.是原括号序列的子序列的括号序列中,必定存在一个满足前面只由一段左括号,后面只由一段右括号组成,因此我们考虑枚举这中间位置在原括号序列中对应哪个位置,那么假设这个断点位于 \(i\) 和 \(i+1\) 之间,我们设 \(i\) 及之前有 \(x\) 个左括号,\(i+1\) 及之后有 \(y\)​​ 个右括号,那么显然以这个位置为端点…
题目链接: C. Vanya and Label time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output While walking down the street Vanya saw a label "Hide&Seek". Because he is a programmer, he used & as a…
传送门 有点难调啊.其实是我自己sb了 不过交上去1A1A1A还是平衡了一下心态. 所以这道题怎么做呢? 我们考虑对于一个点(x,y)(x,y)(x,y)如果这个点成为中心,正左/右/上/下分别有l/r/u/d/l/r/u/d/l/r/u/d/棵树,那么对于这个点Ans=(lk)∗(rk)∗(uk)∗(dk)Ans=\binom {l} {k}*\binom {r} {k}*\binom {u} {k}*\binom {d} {k}Ans=(kl​)∗(kr​)∗(ku​)∗(kd​) 发现离散…
http://codeforces.com/contest/932/problem/E 题意:   可以看做 有n种小球,每种小球有无限个,先从中选出x种,再在这x种小球中任选k个小球的方案数 选出的x种不一样,任选k个球的顺序不一样 均视做不同的方案 f[i][j] 表示选了i个小球,来自j种的方案数 那么答案就是 考虑选的第i个球是否是选过的一种, f[i][j]=f[i-1][j]*j+f[i-1][j-1]*(n-(j-1)) #include<cstdio> #include<…
C. Efim and Strange Grade time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Efim just received his grade for the last test. He studies in a special school and his grade can be equal to any po…
原题链接:http://codeforces.com/gym/100338/attachments/download/2136/20062007-winter-petrozavodsk-camp-andrew-stankevich-contest-22-asc-22-en.pdf 题意 给你n个点,让你连边,使得每个点的度至少为1,问你方案数. 题解 从正面考虑非常困难,应从反面考虑,取 i 点出来不连,这样的取法一共有C(n,i)种取法,其他的连好,而这样就是子问题了.那么dp[n]=2^(n…
原题链接:http://codeforces.com/gym/100431/attachments/download/2421/20092010-winter-petrozavodsk-camp-andrew-stankevich-contest-37-asc-37-en.pdf 题意 给你一个n,问你有多少a和x满足:x在a中二分会返回true,其中a的长度是n 题解 考虑到二分的过程不是向左就是向右,所以可以暴力搜索搞到若干序列,这些序列都是由向左或者向右组成的.枚举x,设向左的有i个,向右…
[题目链接]:http://codeforces.com/problemset/problem/128/C [题意] 让你一层一层地在n*m的网格上画k个递进关系的长方形;(要求一个矩形是包含在另外一个矩形里面的); 问你有多少种方案; [题解] 可以发现方案等同于在长和宽上各取2*k条直线的方案; 即C(n−1,2∗k)∗C(m−1,2∗k) 这样在整个n*m的方格上,就能取出k个矩形啦 这里之所以要减1,是因为两端不能算;(不能触碰到边缘上的点); 预处理出组合数就可以了; 会爆int; […
题目链接 http://codeforces.com/contest/1276/problem/C 题解 嗯,比赛结束前3min想到做法然后rush不出来了--比赛结束后又写了15min才过-- 以下是我的做法: 设最优解的行数和列数分别是\(R\)和\(C\), 不妨设\(R\le C\). 那么显然对于每个数我们只能选不超过\(R\)个. 考虑将所有数按出现次数从大到小排序,枚举\(R\), 求出可用的数的个数,设为\(cnt\), 那么显然\(C\le \frac{cnt}{R}\). 我…
传送门 注意到后手可以模仿先手的操作,那么如果一回合之内没法决定胜负则一定 $\text{once again!}$ 考虑如何判断一回合内能否决定胜负 首先如果最左边和最右的 $0$ 或 $1$ 距离小于等于 $k$,那么先手显然赢 如果最左边和最右的 $0$ 和 $1$ 中间都差了大于等于 $k$ 个位置,那么考虑后手能不能赢 枚举一下先手第一步即可(代码因为比赛是写的,比较奇怪,我感觉也不用参考代码吧..) #include<iostream> #include<cstdio>…
题目链接 很明显的可以发现是一个扫描线的问题,但是怎么处理区域呢,发现只有三种颜色,也就是最多也就是7种状态,那么我们可以进行一个状态压缩即可. 但是,在向上pushup的时候,存在我们要以子树的状态来向上推,也就意味着一开始的目前节点是要去清空的,然后再去更新其覆盖的线长. #include <iostream> #include <cstdio> #include <cmath> #include <string> #include <cstrin…
https://codeforc.es/contest/1191/problem/E 参考自:http://www.mamicode.com/info-detail-2726030.html 和官方题解. 首先这种组合游戏,必定存在一种不败策略.一种很直观的理解就是,假如没有办法一开始就胜利,那么就优先考虑和局的. 假如有连续k个一样的,那么先手可以进行一次无效翻转变成后手,所以这种情况先手必然至少和局.这样的话一次翻转之后就必然有连续k个一样的,后手也必定有了至少和局的机会,他也进行一次无效翻…
https://codeforces.com/contest/1191/problem/C 一开始想象了一下,既然每次删除都是往前面靠,那么好像就是页数*页容量+空位数=最多容纳到的坐标. 至于为什么呢?好像是每次都会删除干净的原因,从第一页开始考虑,第一页可以容纳到5,这个很显然. 删除之后有2个空位,然后可以容纳到7.再把7也删除,就可以容纳到8. 那么每次就暴力删除特殊元素就可以了,反正最多就是m个. 问题在于翻页的时候不能够简单的curpage++,这样必定翻车.我是直接二分,因为顶多就…
https://codeforces.com/contest/1191/problem/B 小心坎张听的情况. #include<bits/stdc++.h> using namespace std; string s[3]; int main() { #ifdef Yinku freopen("Yinku.in", "r", stdin); //freopen("Yinku.out", "w", stdout);…
题意:有一个长为n的01串,两个人轮流操作,每个人可以把某个长度为m的区间变成相同颜色,谁在操作后整个串颜色相同就赢了.问最后是谁赢?(有可能平局) 思路:容易发现,如果第一个人不能一击必胜,那么他就会向平局发展.同理,如果第二个人不能在第一个人的所有第一步的可能走法之后都能一击必胜,那么他也会向平局发展.所有,问题转化为了第一个人能不能一击必胜,第二个人能不能在第一步的所有走法之后一击必胜. 先考虑第一个人,我们只要判断能不能找到一个区间,使得这个区间的颜色相同之后,向左右延伸可以到串的两端即…
题目链接:http://codeforces.com/problemset/problem/1191/B 题意:类似于麻将,三个一样花色一样数字的,或者三个同花顺就赢了,新抽的能当任何类型,问至少几个. 思路:分类判断即可. AC代码: #include<bits/stdc++.h> using namespace std; bool check(int x,int y,int z) { && abs(y-z) == ) return true; && abs(…
题目链接:http://codeforces.com/problemset/problem/1191/A 思路:枚举 16 种情况输出最高的就行. AC代码: #include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; char c = 'D'; ; ;i < ;i++) { == ) ans = i,c = 'A'; == && c > 'A') ans = i,…
Tokitsukaze and Discard Items time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Recently, Tokitsukaze found an interesting game. Tokitsukaze had nn items at the beginning of this game. Howeve…
Description 给你一下长度为 \(n\) 的序列. \(a_i=a_j\) \(l_1 \leqslant i \leqslant r_1\) \(l_2 \leqslant i \leqslant r_2\) 询问满足条件的 \((i,j)\) 对数. Sol 分块+前缀和. 非常乱搞啊... 首先分块 \(O(\sqrt{n})\) 一块. 然后在每块里统计块中元素出现次数. 先预处理块与块之间的贡献,然后处理不足一块的. 处理块与块之间的时候,需要前缀和优化一下就可以了,枚举当前…
D. Vitaly and Cycle       time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output After Vitaly was expelled from the university, he became interested in the graph theory. Vitaly especially liked th…
题意: input : n a1,a2,...,an 1 <= n <= 10^5 1 <= ai <= 10^5 求b数组的方案数,b数组满足: 1. 1 <= bi <= ai 2. lcm(bi) = max(bi) solution: 2说明了b数组的每一个元素都是max(bi)的约数 则: 1.sort a数组,ma  = a[n] 2.预处理2个数组,vector<int> dive[MAXN],int pos[MAXN] dive[i]保存i的…
Kyoya Ootori has a bag with n colored balls that are colored with k different colors. The colors are labeled from 1 to k. Balls of the same color are indistinguishable. He draws balls from the bag one by one until the bag is empty. He noticed that he…
题目大意: 定义mex数为数组中第一个没有出现的非负整数.有m个操作,每个操作有一个x,将数组中所有的元素都异或x,然后询问当前的mex Input First line contains two integer numbers n and m (1 ≤ n, m ≤ 3·105) — number of elements in array and number of queries. Next line contains n integer numbers ai (0 ≤ ai ≤ 3·105…