- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 hdoj Cow Sorting
题意:给你n个无序的数,通过相邻的两个数交换,交换的价值是两个数之和,求使之increasing order的最小代价和与poj3270不同的是poj可以每个数任意交换,可以用置换群来做#include#include#include#include#includeusing namespace std;#define ll __int64#define N 100000+1
2015-04-14 08:51:44 549
原创 hdoj 4911 Inversion 树状数组+离散化
题意:给你n个可以重复的无序数列,问经过k次相邻交换后最少还有多少对逆序数求逆序对可以用树状数组来做,对于重复的元素,可能在sort的时候交换编号求和的时候要注意去重,还有一种方法就是稳定排序stable_sort#include#include#includeusing namespace std;#define ll __int64#define N 100000+10
2015-04-14 08:34:50 606
原创 有重字符串字典序第k排列
纯模拟规律。。逐步确定每一位。#include#include#includeusing namespace std;#define ll long longll used[17];ll f[27],ans[38];ll sum[20];ll len;char str[21];ll Jc(){ ll s=1,i; ll x[28]; memse
2015-04-14 08:29:28 1199
原创 1166 敌兵布阵 树状数组单点修改
#include#include#includeusing namespace std;#define N 500000+10int c[N];int a[N];int n;int lowbit(int x){ return x&(-x);}void updata(int t,int value){ for(int i=t;i<=n;i+=lowbit(i)
2015-04-10 16:08:02 361
原创 HDU 2492 Ping pong 树状数组+离散化
题意:有n个人要进行乒乓球比赛每一个人都一个技术值,每个人出现的次序就是他们住的位置,现在要求进行一场比赛,三个人,裁判的技术值在两个人的中间,位置也在两个人的中间,问一共可以进行这种比赛多少次。思路:枚举裁判,用树状数组统计裁判左边比裁判大的 ,也就是逆序数,#include#include#includeusing namespace std;#define N
2015-04-10 15:52:48 481
原创 poj 2299 Ultra-QuickSort 树状数组求逆序数
题意:n个数 通过两个相邻的数之间交换,求最小交换次数使n个数非递减(na[i]比较大,要用下离散化 ,数据中没有重复的元素提交也对,一定要用long long#include#include#includeusing namespace std;#define N 500000+10struct ln{ int id; int va;}in[N];int
2015-04-10 15:07:26 364
原创 HDU 1299 Diophantus of Alexandria
/*1/x+1/y=1/n 给你一个整数n,求x,y组合的个数(n式中有x,y两个变量,通过转化可以可以转化为一个条件假设y=n+m;则x的表达式为x=n*n/m+n;这个条件就是if(n*n%m==0)所以答案就是n*n的因子个数显然一般方法直接会超时的但是n的素因子很少 最大是sqrt(n);每个数都可以表示成素因子之积n=(prime[0]^ans[0])
2015-04-06 11:29:32 588
原创 HDU 1023 大数卡特兰
//h[i]=h[i-1]*(4*i-2)/(i+1);#include#includeusing namespace std;#define MAX 100#define BASE 10000void multiply(int a[],int Max,int b)//大数乘法{ int i,array=0; for(int i=Max-1;i>=0;i--)
2015-04-06 11:24:17 432
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人