[C++ map & dp]codeforces 960F. Pathwalks】的更多相关文章

题目传送门:960F 思路: 题目给人的感觉很像最长上升子序列,自然而然想到用dp的思路去处理 题目中给的限制条件是,要接上前面的边,前面的边权一定要小于当前的边权(题目按照输入的顺序,因此只找前面的边) 对于每个结点,我们要维护的信息是: 当前状态下,w的边权到达这个点,最多能有几条边 如何维护这个信息呢?如果对每个点开一个maxn的数组,每次暴力修改,显然是过不去的 一种处理办法是:对每个点建动态线段树(可是本菜鸡不会!!..我马上去学 另一种简单的处理办法:用map以及map内置的函数 对…
960F - Pathwalks 思路: ORZ 杜老师 用map写1e5个树状数组,骚操作 记Q为query和update次数,则节点个数约为Q*log(N) 代码: #include<bits/stdc++.h> using namespace std; #define LL long long #define pb push_back #define mem(a, b) memset(a, b, sizeof(a)) ; map<int, int> bits[N]; int…
题目链接:https://vjudge.net/problem/CodeForces-960F You are given a directed graph with n nodes and m edges, with all edges having a certain weight. There might be multiple edges and self loops, and the graph can also be disconnected. You need to choose…
题意 : 给出若干个边,每条边按照给出的顺序编号,问你找到一条最长的边权以及边的编号同时严格升序的一条路径,要使得这条路径包含的边尽可能多,最后输出边的条数 分析 :  这题和 LIS 很相似,不同的是加多了一个需要边和边相连这一条件 考虑使用树状数组求 LIS 的方法来考虑这题 如果你还不知道 LIS 还能用树状数组做 ==> Click here 由于有了只有能够构成路径的边才能搭配成子序列这一限制 我们将原本一维的树状数组开成二维 增加的维度表示以某个图中顶点为结尾这一状态 定义二维树状数…
A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #define TS printf("!!!\n") #define pb push_back #define inf 0x3f3f3f3f //std::ios::sync_with_stdio(false); using namespace std; //priority_queue<i…
题意: 求树上最长上升路径 解析: 树状数组版: 998ms edge[u][w] 代表以u为一条路的终点的小于w的最长路径的路的条数 · 那么edge[v][w] = max(edge[u][w-1]) + 1; 因为w最小是0  所以所有的w都+1 #include <bits/stdc++.h> using namespace std; , INF = 0x7fffffff; int n, m, maxx = -INF; map<int, int> edge[maxn]; i…
Queries for Number of Palindromes Problem's Link:   http://codeforces.com/problemset/problem/245/H Mean: 给你一个字符串,然后q个询问:从i到j这段字符串中存在多少个回文串. analyse: dp[i][j]表示i~j这段的回文串数. 首先判断i~j是否为回文,是则dp[i][j]=1,否则dp[i][j]=0; 那么dp[i][j]=dp[i][j]+dp[i][j-1]+dp[i+1[j…
Aspirations:没有结果,没有成绩,acm是否有意义?它最大的意义就是让我培养快速理解和应用一个个未知知识点的能力. ———————————————————————————————————————————————— Background:F. Niyaz and Small Degrees http://codeforces.com/contest/1119/problem/F 这道题目是一道高阶的树形DP的题目,我之前并没有涉及到这类题目. 已经有的基础:DP中的01背包. 特点:看到…
题目传送门 /* 题意:这题就是求b+1到a的因子个数和. 数学+DP:a[i]保存i的最小因子,dp[i] = dp[i/a[i]] +1;再来一个前缀和 */ /************************************************ Author :Running_Time Created Time :2015-8-1 14:08:34 File Name :B.cpp ************************************************…
Gerald and Giant Chess Problem's Link: http://codeforces.com/contest/559/problem/C Mean: 一个n*m的网格,让你从左上角走到右下角,有一些点不能经过,问你有多少种方法. analyse: BZOJ上的原题. 首先把坏点和终点以x坐标为第一键值,y坐标为第二键值排序 . 令fi表示从原点不经过任何坏点走到第i个点的个数,那么有DP方程: fi=Cxixi+yi−∑(xj<=xi,yj<=yi)C(xi−xj)…