【Henu ACM Round #13 C】 Ebony and Ivory】的更多相关文章

[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先求出c-bx的所有可能 ->存在map里面 然后枚举y看看ay在不在map里面 在的话就有解. 这样复杂度是\(O(N*log_2N)\)的 比直接两层循环枚举的\(O(N^2)\)复杂度要来的好 这种方法也叫"中途相遇法" [代码] #include <bits/stdc++.h> #define ll long long using namespace std; ll a,b,c; map<…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 对m个串建立一棵字典树. 然后对主串. 尝试从第一个位置开始.在字典树中尝试匹配 如果匹配到了位置i 就再从位置i+1开始尝试匹配 (这时又重新从根节点开始重新匹配 每次匹配最多只要往下走50步. 写个递归的过程就好. [代码] #include <bits/stdc++.h> using namespace std; const int N = 1e6; const int NN = 1e4; const int M = 1…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举序列的头两个数字是什么 O(N^2) 然后头两个数字确定之后. f[3],f[4]..就确定了 只需查看f[3],f[4]..是不是存在就好了. 但是这样复杂度看起来是O(N^3)的了. 其实不然,a[n] = a[n-1]+a[n-2]这个递推的增长速度是接近2^n的增长速度的. (所以到达10^9之后直接break就好了 所以实际上不会真的达到递推1000的规模 差不多只有O(N^2*100)的样子. 这是可以接受的了.…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 123...n中末尾0的个数 只会由素因子2和5的个数决定且等于 Min{cnt[2],cnt[5]} 且素因子2的个数一定会比5多; 所以n!的末尾0的个数 等于for (int i = 1;i <= n;i++)中所有i的5因子的个数和 枚举一下就好 [代码] #include <bits/stdc++.h> using namespace std; const int N = 1e7; int n; vector&…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 会发现每个环可以操作的次数是固定的. (环的大小-1 也就是说一旦环确定了.其实结果就已经确定了. 则直接看操作总数的奇偶性就可以了. [代码] #include <bits/stdc++.h> #define long long using namespace std; int n,x; int main(){ #ifdef LOCAL_DEFINE freopen("rush_in.txt", &quo…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟. [代码] #include <bits/stdc++.h> using namespace std; int main(){ #ifdef LOCAL_DEFINE freopen("rush_in.txt", "r", stdin); #endif ios::sync_with_stdio(0),cin.tie(0); int n; cin >> n; cout &…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找规律. 1,13,37.... 6n(n-1) + 1 [代码] #include <bits/stdc++.h> #define ll long long using namespace std; ll n; int main(){ ios::sync_with_stdio(0),cin.tie(0); cin >>n; cout<<6*n*(n-1) + 1<<endl; return…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li..ri全都删掉. 接下来要做两件事. 第一是把1..li-1这些边连起来. 并查集1 然后是把ri+1..m这些边连起来. 并查集2 然后把并查集1和并查集2合并在一起求联通分量就好 两个并查集合在一起可以在线性复杂度内完成. 那么花费的时间就在1..li-1和ri+1,,m这两个并查集的获取上.…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一下乘法逆元 写个快速幂就好 A-1的逆元就是\((A-1)^{MOD-2}\) 要注意A=1的情况. 然后n最大可能为10^18 所以乘的时候要先对其取模 不然会乘爆 [代码] #include <bits/stdc++.h> #define LL long long using namespac…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k>=m的话 那么答案显然就是m,因为不会出现乘2的情况. 否则. 那么只能让某些位置乘2了. 那么什么地方乘呢? 肯定是越前面越早乘越好. 那么temp=m-((n/k)*(k-1)+n%k)就是需要多乘2的次数. 从左往右放入那n/k个空位置中的前temp个就好 然后会发现前temp个连续的k块的递推式…