- 博客(11)
- 收藏
- 关注
原创 hdu 4417 主席树
题目链接:点击打开链接解题思路:将数组去重离散化,建成一颗线段树,那么我们只要去找H的排名就可以用第r颗树减去第l颗树的(0-H)的区间数就可以了#include#define lson l,mid#define rson mid+1,rusing namespace std;typedef long long ll;int n,m;const int mx =1e5+
2017-11-30 22:58:00 350
原创 hdu 5919 主席树(区间不同数个数+区间第k个数)
题目链接:点击打开链接题解思路:应用主席树求出区间有多少个不同的数,和区间第k个数(两个功能都考察了)这里一个技巧就是从后往前插,那么寻找中位数的时间复杂度就变成nlogn了。#include#define lson l,mid#define rson mid+1,rusing namespace std;typedef long long ll;int n,
2017-11-30 20:39:38 292
原创 FJNU - 第二十一届低编赛题解
题目链接:点击打开链接A:题意:题意很清楚了,就不解释了。解题思路:很容易发现这个题目其实跟01排列顺序没有关系长度才是关键,就比如要求步数相同的情况下1001和0000,1111答案数是一样的,这个想一想就很好理解了。接下来代码有注释说明。代码:#include#include#include#include #define M 100005using
2017-11-26 21:22:36 1169
原创 hdu 5902 - 数学
题目链接:点击打开链接题解思路:天真的我以为只要一次两两gcd就是答案了,然而这明显是错的,例如:18*12,12*42,42*18这三个数要是一次两两gcd的话是不会得到6的。所以要用gcd完得到的数再去和数组的数去gcd然后看有没有新的数出现。代码:#includeusing namespace std;typedef long long ll;const i
2017-11-12 18:42:30 304
原创 hdu 5903 - 模拟
题目链接:点击打开链接题解思路:令len = n/2;题目要求我们操作次数正好m的最小字典序,那么就分两种情况1:str[i]==str[i+len],此时可以不操作,也可以操作两步,也就是使两个字母都变成另一个字母;我们可以设一个左右边界l,r。你会发现当l==0时奇数项是取不到了,这是就是任意的str[i]==str[i+len]的情况,当然我们一开始肯定要保证l=l。2:当s
2017-11-12 16:17:48 221
原创 hdu 5904 - 简单题
题目链接:点击打开链接题解思路:a[x]表示到x的最大连续长度,那么a[x]不就等于a[x-1]+1吗,这题要求连续递增就变得非常简单了.代码:#includeusing namespace std;typedef long long ll;const int mx = 1e6+10;int n,m,a[mx],b[mx],num[mx];int main()
2017-11-11 23:39:15 302
原创 hdu 5934-建图+强连通缩点
题目链接:点击打开链接 题解思路:这图咋一看就是图论,假设我引爆i点能使j点也引爆,那么就将i,j建立有向边。通过建立的图我们还要将强联通分量缩点,说明这个分量的任意一点引爆都能使其他点都引爆,这里缩点需要得到分量中花费最小的那个点,然后就是求缩完点的所有入度为0的点的和就是了。 代码: #include<bits/stdc++.h>using namesp...
2017-11-11 23:05:36 334
原创 hdu 5944 - 枚举公比+暴力匹配
题目链接:点击打开链接题解思路:我们枚举公比跟首项然后比较是否跟"xry"或"yrx"匹配就行了.代码:#includeusing namespace std;typedef long long ll;const int mx = 1e4+10;int n,a,b;char str[mx],c[mx];const char s[2][4] = {"yrx",
2017-11-11 20:29:17 215
原创 hdu 5950 - 矩阵快速幂
题目链接:点击打开链接题解思路:由(n+1)^4 = n^4 + 4n^3 + 6n^2 + 4n + 1,(n+1)^3 = n^3 + 3n^2 + 3n + 1...我可以做出一个7*7的矩阵,递推所有的函数代码:#includeusing namespace std;typedef long long ll;const ll mod = 2147493647;
2017-11-11 14:43:42 229
原创 hdu 5952 - dfs+优化
题目链接:点击打开链接题解思路:一开始直接每个枚举T了,后来直接找有连接的居然过了 = =。每次看这个点是否能加入这个团,然后分加入和不加入两种情况dfs就可以了。代码:#includeusing namespace std;typedef long long ll;const int mx = 1e2+10;int n,m,k,top,ans,tot,head
2017-11-10 20:58:24 270
原创 hdu 5999 - 贪心
题目链接:点击打开链接题解思路:排个序然后从倒数第三个开始每三个三个去就OK了。代码:#includeusing namespace std;typedef long long ll;const int mx = 1e5+5;int n,m,a[mx];int main(){ int t,cas = 1; scanf("%d",&t);
2017-11-10 20:55:07 313
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人