摘要:
A. Two Rabbits 思路: 很明显,如果(y-x)%(a+b)==0的话ans=(y-x)/(a+b),否则就为-1 #include<iostream> #include<algorithm> using namespace std; const int maxn = 100000+5; 阅读全文
摘要:
P1020导弹拦截(最长上升子序列/最长不降子序列 - O(N2)与O(NlogN)做法) 题意: 有n个导弹分别飞行在不同高度,一颗拦截导弹可以分别拦截几个高度不上升的导弹,问一个拦截导弹可以拦截最多多少个导弹,拦截所有导弹要多少颗拦截导弹 思路: 第一个问题:一个拦截导弹可以拦截最多多少个导弹, 阅读全文
摘要:
P1196 [NOI2002]银河英雄传说(带权并查集) 题意: 有n艘舰依次排序,每次将i及其身后的舰艇合并至j及其所有舰艇之后,每次询问i到j舰艇之间的距离,如果不在一列输出-1 思路: 单纯的合并与查询是否在一列操作比较简单,难的在于查询距离 首先我们需要三个数组fa[i],sum[i],di 阅读全文
摘要:
P1268 树的重量 (思维题) 题意: 首先定义树的重量为数上每个边权的和,现在给你每个叶子结点之间的最短距离,让你求出树的重量 思路: 先定义叶子节点之间的距离为dis[u,v] 那么我们会先考虑只有两个节点的情况,那么答案就为dis[u,v] 当n=3,我们考虑将3号节点加入树中,由于每个节点 阅读全文
摘要:
A. Three Strings #include<iostream> #include<algorithm> using namespace std; int main(){ int t; scanf("%d",&t); while(t--){ string a,b,c; cin>>a>>b>>c 阅读全文
摘要:
链接:https://ac.nowcoder.com/acm/contest/3005/D 题意: 给一个数组,问有多少个子序列的异或和为0 思路: 首先我们需要一个定义一个前缀和数组sum[i],代表从1到i这段的异或和 那么神奇的事情来了,sum[l-r]=sum[l-1]^sum[r],因为他 阅读全文
摘要:
感觉网上的题解都略微简略包括官方题解,所以打算写一个尽可能详细的 题目链接:https://ac.nowcoder.com/acm/contest/3005/H 题意: 每个车厢都有三个参数,colori ,li ,ri ,询问对于每个车厢,在其两边的车厢有多少对车厢颜色相同,并且颜色的范围在[li 阅读全文
摘要:
链接:https://ac.nowcoder.com/acm/contest/3004/J 思路: 先用flyod预处理出dis[i][j]表示从i到j点的最短距离 之后开始DP,dp[i]表示出现i个精灵可收获的最大战斗力 那么dp[i]得转移方程为dp[i]=max(dp[i],dp[i-j]+ 阅读全文
摘要:
A. Non-zero 思路:如果数组中有0,那么乘积肯定为0,因此我们只要统计0的个数,给每个0加上1即可,之后还需考虑给所有0机上1和为0的情况,此时要再加上1 #include<iostream> #include<algorithm> using namespace std; int mai 阅读全文
摘要:
#include<iostream> #include<algorithm> #include<cstring> using namespace std; const int maxn=110010; char t[maxn],s[maxn*3]; int p[maxn*3],lens; void 阅读全文