- 博客(5)
- 收藏
- 关注
原创 codeforces 645F (莫比乌斯反演)
题目链接:点击这里题意:给出初始n个数,问每次增加一个数字后的k元组的gcd之和.只需要求出gcd分别等于1-1e6的k元组数. 设F[x]F[x]表示gcd等于x的倍数的k元组数量,f[x]f[x]表示gcd等于x的k元组数量,那么就有: ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪f[1]=μ(1)F[1]+μ(2)F[2]+μ(3)F[3]+⋯+μ[n]F[n]f[2]=μ(1)F[2]+μ(2)F[4]+μ
2016-12-04 20:56:30 784
原创 codeforces 731D (DP 二分 二维RMQ)
题目链接:点击这里题意:给出一个01矩阵,每次询问一个矩形中的最大全1正方形的边长。用dp[i][j]dp[i][j]存储以(i,j)(i,j)为右下角的最大全1正方形,转移方程就是dp[i][j]={min{dp[i−1][j],dp[i][j−1],dp[i−1][j−1]}+10(val[i][j]=1)(val[i][j]=0)dp[i][j]= \left\{ \begin{aligned
2016-12-02 15:03:57 461
原创 codeforces 650D (树状数组)
题目链接:点击这里题意:动态LIS,改变一个值求LIS。先把询问离线下来按照改变的位置排序,把所有的数字离散化。首先先用树状数组求出每一位为结尾的最长上升前缀f[i]和每一位开始的最长上升后缀g[i],然后考虑每一个数字改变后的LIS情况,分成两种讨论: LIS不包含这个数。这种情况比较简单,考虑是不是每一个LIS都含有这个数字即可,也即对于所有的LIS,某一位必须是这个数。所以直接统计每一个数字在
2016-12-02 00:03:51 504
原创 codeforces 508E (构造)
题目链接:点击这里题意:依次给出从左到右每一个左括号到与其匹配的右括号的距离范围,求出一个合法的括号序列。注意到如果一个括号他的右括号已经可以放了那么就可以直接放上去。那么直接先把左括号扔进一个栈,并且记录下所有栈中的左括号在没找到与之匹配的右括号之前中间长度增加了多少。扫一边就好了。#include <cstdio> #include <iostream> #include <cstring> #
2016-12-01 16:52:06 372
原创 codeforces 508D (无向图欧拉路径)
题目链接:点击这里题意:给出n个单词(长度为3),求出一种头尾相连的方案。两个单词能连起来当且仅当前一个单词的后两位和后一个单词的前两位相同。直接把每个单词看成边,前两位和后两位看成点,跑欧拉路径即可。需要一些优化把欧拉路径改成线性。#include <cstdio> #include <iostream> #include <cstring> #include <queue> #include <
2016-12-01 16:46:02 572
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人