- 博客(32)
- 收藏
- 关注
原创 HDU3652 含13并且能被13整除
待完成#include <cstdio>#include <algorithm>#include <cstring>using namespace std;long long f[11][10][2][13];int n;int a[10];//f[i,j,k,l] 首位为j的i位数,是否含13 (k=0、1),余数为l //计...
2018-10-30 22:52:39
265
原创 洛谷1271聚会的快乐:注意重名的数据
题目描述你要组织一个由你公司的人参加的聚会。你希望聚会非常愉快,尽可能多地找些有趣的热闹。但是劝你不要同时邀请某个人和他的上司,因为这可能带来争吵。给定N个人(姓名,他幽默的系数,以及他上司的名字),编程找到能使幽默系数和最大的若干个人。输入输出格式输入格式: 第一行一个整数N(N<100)。接下来有N行,每一行描述一个人的信息,信息之间用空格隔开。姓名是长度不超过20的...
2018-10-21 22:29:22
207
原创 NOIP2016 愤怒的小鸟
状态压缩DP #include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#define Inf 2139062143#define N 24using namespace std;double x[N], y[N];int T,...
2018-09-09 11:03:10
159
原创 POJ2796 对拍程序
两个程序,一个AC一个WA,对拍暂时检查不出错误 #include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h&
2018-08-21 22:52:55
167
原创 GFOJ738:Cource--动态规划练习2 DFS+树形DP
XJY是一位勇敢的探险家,这一天他来到传说中的小谷围岛寻找宝藏。小谷围岛上有n个村庄和n-1条道路,且任意两个村庄可以相互到达。第i个村庄里有价值为Vi的大秘宝(取走之后就没有啦);对于第i条道路,XJY需要Ti天才能走完。现在XJY有m天的假期时间以供探险,他会从第k个村庄出发,最后回到第k个村庄。问XJY最多能取走价值多少的宝藏? dp[i][j]表示第i个节点j天取到的最多宝藏。对i...
2018-08-15 15:30:18
380
1
原创 uva11732 strcmp AnyOne? 字典树 左儿子右孩子
字典树,左儿子右孩子矩阵快速幂 //uva11732//题目来源:UVa 11732 strcmp() Anyone?//题意:求若干个字符串两两比较需要的次数 than 和 that 需要比7次 there和the//需要7次 就是LCP的长度*2+1 特判2个字符串一样的情况abc和abc需要8次//思路:利用字典树 每个点出现分叉的时候说明有些字符串可以比较出来了 /...
2018-07-31 15:43:09
142
原创 DFS程序
题目 https://www.luogu.org/problemnew/show/P2802以下两个算法,对这组数据的结果不同,待查找原因9 90 0 1 0 2 1 1 4 11 1 1 0 1 1 4 4 11 1 1 1 4 4 4 1 40 0 1 0 1 0 0 4 11 1 0 0 1 4 1 1 41 0 0 0 1 1 0 1 11 1 0 0 1 0 4 1...
2018-07-30 21:05:18
882
原创 uva11732 strcmp 字典树 存储
字典树,左儿子右孩子//uva11732//题目来源:UVa 11732 strcmp() Anyone?//题意:求若干个字符串两两比较需要的次数 than 和 that 需要比7次 there和the//需要7次 就是LCP的长度*2+1 特判2个字符串一样的情况abc和abc需要8次//思路:利用字典树 每个点出现分叉的时候说明有些字符串可以比较出来了 //总和加上
2017-11-04 11:26:56
195
原创 矩阵快速幂优化递推式 例:斐波那契数列
矩阵快速幂 例:斐波那契数列#include#include#include#includeusing namespace std;const int M = 1e9+7;struct Matrix { long long a[2][2]; Matrix() { memset(a, 0, sizeof(a)); } Matrix operator *
2017-10-29 11:12:08
310
1
原创 CodeVS4730 特殊等式-1@2@3@...@(N-1)=N
廖...#includeusing namespace std;#define mod 1000000007int n,tmp1,tmp2;unsigned long long f[110][15000];struct slf{ int dep,sum;}tmp;queue q;int main(){ scanf("%d",&n); f[1][5999]=1;
2017-10-19 22:58:44
193
原创 DP 添加正负号求余数POJ1745
添加正负号求余数POJ1745#include using namespace std;#define MAXN 10001int dp[MAXN][101];int posmod(int n,int k){ 正数取余 n = n % k; while(n < 0) n+=k; return n;}int main(){ int n,k; int
2017-10-19 22:35:20
200
原创 ST表求区间最大最小值
ST表 Sparse Table#include#include#include#include#include#include#includeusing namespace std;#define N 2000int stmax[N][20],stmin[N][20],mn[N];int a[N];int t,q,n;int x,y;void init
2017-10-07 20:26:00
1615
原创 HDU3308线段树区间合并
HDU3308线段树好题#include#include#include#include#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;const int maxn=100005;int num[maxn];int msum[maxn<<2];int l
2017-10-07 09:46:33
161
原创 求区间均值大于K区间数---树状数组
http://arc075.contest.atcoder.jp/tasks/arc075_c题意:给你一个序列和一个数k,求有多少对l,r,使得a[l]+a[l+1]+...+a[r]的算术平均数大于等于k1≤N≤2×10^51≤K≤10^91≤ai≤10^9思路:首先对于所有数减去k,这样就不用除(r-l+1), 然后我们发现所求的就是有多少对l,r,使得sum[r]-
2017-09-20 14:34:34
1063
原创 POJ2299 树状数组求逆序对
给定一个数组,求全部逆序对数目。如果动态修改,如何求呢?#include #include #include #include #include using namespace std;const int maxn= 500005;int aa[maxn];//离散化后的数组int c[maxn]; //树状数组int n;struct Node{
2017-09-19 17:58:53
275
原创 HDU1561 树形DFS+DP
题意:ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡吗?#include#include#define N 205int n,m,ed
2017-09-16 11:07:01
149
原创 n结点树至少删多少边才变成p结点树
有n个点组成一棵树,问至少要删除多少条边才能获得一棵有p个结点的子树?注意理解:删除某边,该边顶点的子树可以不管 #include#include#include#include#include#include#include#includeusing namespace std;const int MAX = 10000;vector tree[16
2017-09-16 09:34:18
732
原创 GFOJ686 序列操作(分段DP,未高精)
数据会举出,还需要有高精度。#include#include#includeusing namespace std;const int maxSize=1000;const int maxValue=1024;int n,a[maxSize+5],i,j,k,m,ans;int fAnd[maxSize+5][maxValue],fXor[maxSize+5][maxValue
2017-09-11 21:04:07
242
原创 GFOJ686 序列操作
CJJ被SCOI2012那道序列操作做吐了,于是他想出了一道简单的序列操作的题目自我安慰。有一个包含n个数序列的Ai,她想找出两个非空的集合S、T。这两个集合要满足以下的条件:1、两个集合中的元素都为整数,且都在[1,n] 里,即Si,Ti∈[1,n]。2、对于集合S中任意一个元素x,集合T中任意一个元素y,满足x 3、对于大小分别为p, q的集合S与T,满足:A[s1]
2017-09-10 15:04:10
192
原创 棋盘上放棋子(任意两个棋子不相邻)
给出一个 n*m 的棋盘(n 、m≤ 80,n*m ≤ 80),要在棋盘上放 k(k ≤ 20)个棋子, 使得任意两个棋子不相邻。问有多少种方案。//给出一个 n*m 的棋盘(n 、m≤ 80,n*m ≤ 80),要在棋盘上放 k(k ≤ 20)个棋子, //使得任意两个棋子不相邻。问有多少种方案。#include #include #include #inclu
2017-09-08 21:06:34
4399
2
原创 棋盘放车(有些点不能放)(DP状态压缩)
在n*n(n≤20)的方格棋盘上放置 n 个车,某些格子不能放,求使它们不能互相攻击的方案总数。//n在n*n(n≤20)的方格棋盘上放置 n 个车,某些格子不能放,求使它们不能互相攻击的方案总数。//n=18会出错,要用long long #include #include #include #include using namespace std;con
2017-09-03 22:44:59
937
原创 棋盘放车(DP状态压缩)
在n*n(n≤20)的方格棋盘上放置 n 个车(可以攻击所在行、列),求使它们不能互相攻击的方案总数。#include #include #include #include using namespace std;const int INF=(1<<20)-1;int f[INF];int main(){ int n; scanf("%d",&n);
2017-09-03 16:29:20
554
原创 ZOJ2112 Dynamic Ranking (主席树+树状数组)
给定一序列,动态修改某个数,查询某区间第k大的数。/*给定n个数,可以动态修改某个数,随时查询某个区间第k大的值。http://blog.csdn.net/regina8023/article/details/41911837树状数组套主席树。*/#include #include #include #include #include #include #defi
2017-09-02 20:08:51
204
原创 HDU2665 POJ2104 K-th Number(主席树)
给出一串长度为n的序列,并给出m个询问,每个询问针对序列中一段区间[s,t],求这区间中第k小的数字是多少。#include using namespace std;const int MAXN = 1e5 + 10;struct node { int ls, rs, sum;} ns[MAXN * 20];int ct;int rt[MAXN * 20];
2017-09-02 11:39:39
167
原创 最近公共祖先LCA倍增算法
#include #include #include #include #include using namespace std;const int maxN=20+2;int anc[1005][25];vector tree[1005];int deep[1005],n;void dfs(int x){ for (int i=0;i<tree[x].size
2017-09-02 11:04:21
342
原创 HDU1828矩形周长合并(线段树+离散)
和面积合并类似,只不过要多记录有多少个不连续的线段。如总长为4,可能是1-2,3-4两段,也可能是1-4一段,计算面积是一样但计算周长就不一样了。#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 5e3+5;#define lson u<<1#define rs
2017-08-31 09:13:32
366
原创 HDU1542 POJ1151矩形面积合并(线段树+离散化)
参考程序#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<map>#include<iomanip>#define INF 99999999using namespace std
2017-08-30 20:46:27
227
原创 HDU1394 Minimum Inversion Number(线段树单点更新)
注意:给定的数据是0到n-1的一个排列。如果是任意数据则程序出错。/*hdu 1394 Minimum Inversion Number(线段树单点更新)题目大意: 给定一组数,不停的将数列的第一个数放在数列的最后,形成一个新的数列,找出所有数列中逆序数最小是多少注意:此组数据是从0-n-1!不是随机数据! 思路: 只需要求出原始数列的逆序数即可,转化后的数列的逆序数可以通过原
2017-08-30 11:18:06
180
原创 POJ2828 Buy Tickets(树形DP)
// http://www.cnblogs.com/shenben/p/5624886.html// 思路:根据题目可知,最后插入的位置的数才是最终不变的数,// 所以可以从最后的输入作第1个放入,依此类推,倒插入。// 在插入时也有一定的技术,首先创建一棵空线段树时,每个节点// 记录当前范围内有多少个空位置。在插入时,要注意,一个数放// 入之后那么这个位置就不用管了,那么树中所有的
2017-08-30 10:15:32
207
原创 ZOJ2112 Dynamic Ranking(线段树)
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#define maxn 10005using namespace std;int use[maxn*10],n,m,size,tot=0,all=0,h[maxn*10]
2017-08-30 09:50:06
193
原创 UVA1218,POJ3398 完美服务器(树形DP)
#include<cstdio>#include<algorithm>#include<vector>#include<queue>#include<cstring>using namespace std;const int maxn=10010;vector<int> g[maxn];int d[maxn][3];int vis[maxn];int dp(int u){
2017-08-29 23:02:05
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人