- 博客(186)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 VS2012下C++操作word(整理)
参考:http://bbs.csdn.net/topics/300141389 http://blog.csdn.net/hhhh63/article/details/7652696 最近做的东西要用C++来操作office word,生成一个表格,找资料找了好久才弄明白,记一下~~ 1.建一个基于对话框的MFC,可以参
2016-01-15 21:05:35 6006 1
原创 PAT-Advanced Level 1019 判断一个数在n进制下是否是回文数
链接:http://www.patest.cn/contests/pat-a-practise/1019本来想用char数组存每一位的数字节省空间,但是因为进制>10,所以比较麻烦,改用int就可以#include#include#include#includeusing namespace std;int num[90000000];int main(){ int
2015-08-01 13:51:28 604
原创 PAT-Advanced Level -1015 判断素数反转后是否是素数
链接:http://www.patest.cn/contests/pat-a-practise/1015输入 :N D N (5) and D (1 输出 :Yes/No如果N是素数并且N在D进制下反转后 仍然是素数,则输出Yes,否则No【分析】先构造 以内的素数表,然后求反转,判断并输出结果 构造素数表参考博客 http://blog.csd
2015-08-01 12:30:46 725
原创 PAT Advanced Level 2011 注意浮点数精度问题
链接:http://www.patest.cn/contests/pat-a-practise/1011 输入:W1 T1 L1W2 T2 L2W3 T3 L3输出:[min(W1,T1,L1)*min(W2,T2,L2)*min(W2,T2,L2)*0.65-1]*2【分析】这个题目是4个题目中的第一题,难点应该是浮点数的精度问题#include
2015-08-01 11:28:34 599
原创 PAT-Advanced Level- 1002 两个多项式相加
题目链接:http://www.patest.cn/contests/pat-a-practise/1002 两个多项式相加1. 输入 项数k1 k1个(次数 底数) 次数的范围是[0-1000] 项数k2 k2个(次数 底数) 输出 和的项数k k个(次数 底数)2. 解题关键: 题目中的底数是小数,而输出时要求精确到一位小数,而且还要输出
2015-07-27 20:42:38 607
原创 UVA 11234 建树以及栈和队列的运用
#include#include#include#include#include#include#define MAXN 10000+10using namespace std;typedef struct Node{ int parent,lchild,rchild,order; char ch; Node(int a=0,int b=0,int c=0
2013-11-27 21:39:58 757
原创 HDU 4771 BFS
题意:已知一张图,一个起点,求到某些已知点的最短路程。 思路:由于最多要求到4个点的距离,所以依次bfs求出起点到所求点的距离、所求点1到其他所求点的距离、所求点2到其他所求点距离,,,,,,然后全排列每一种情况,找出最小值。#include#include#include#include#include#include#define INF 1000000
2013-11-12 23:01:56 635
原创 UVA 10801 - Lift Hopping Dijkstra 算法
d[i][j]表示从i电梯到j层所用的最短时间。#include#include#include#include#include#include#include#define time tttusing namespace std;typedef struct node{ int order,floor; node(int a=0,int b
2013-11-06 21:44:13 704
原创 Havel-Hakimi定理(判断一个序列是否可图) UVA 10720
http://www.docin.com/p-540438846.html
2013-10-31 19:21:08 569
原创 UVA 11218 - KTV DFS
深搜。。。。。。。#include#include#include#includeusing namespace std;typedef struct node{ int a,b,c,s; node(int x=0,int y=0,int z=0,int d=0) { a=x,b=y,c=z,s=d; }} node;
2013-10-29 17:34:20 788
原创 ZOJ 3365 Integer Numbers 思路题
题意:告诉你一串数,改变最少的数,使之变成连续的数(即公差为1的等差的数列)。 分析:数据量是n=50000,n^2的程序超时,一开始以为是个动规之类的,想枚举每一个数,以这个数不变,来改变其他的数,记录需要改变的数的个数。同时每个位置出现过的数标记,结果不是TLE,就是爆栈。实际上,改变最少的数,就是找到尽可能多的数使他们的值num[i]-i是一个固定值。所以,记录所有的n
2013-10-27 11:57:58 750 2
原创 Codeforces 358A - Dima and Continuous Line 暴力+数学
自己做时没思路,看了题解,,,,,,恍然大悟,竟然是个O(n^2)的复杂度。摘自题解: #include#include#include#includeusing namespace std;int main(){// freopen("in.txt","r",stdin); int n,num[1000+10]; scan
2013-10-26 13:12:39 1515
原创 Codeforces 358B - Dima and Text Messages 字符串
考虑到每个字符串的长度不确定,而总长度是确定的,所以用strcat连接每个串+" 改用string存每个字符串。 AC后去掉check()函数,发现也是对的。#include#include#include#include#define MAXN 100000+12using namespace std;char temp[MA
2013-10-26 11:46:36 976
原创 UVA 10369 最小生成树
最小生成树的模板题,注意保存S个用到的最大的边长。#include#include#include#include#include#includeusing namespace std;int x[505],y[505];typedef struct node{ int x,y; double dis; bool operator <(const
2013-10-23 20:46:48 599
原创 UVA 567 Floyd算法
又是个模版题,把两点之间的距离看作是1。#include#include#include#include#define INF 10000using namespace std;int d[23][23];int main(){// freopen("in.txt","r",stdin); int a,b,cas=0; while(scanf("%d
2013-10-23 20:00:39 633
原创 UVA 10608 dfs或者并查集
题意:A和B是朋友,B和C是朋友,那么A和C是朋友,输入一些朋友关系,输出最大人数的朋友圈。1.直接深搜一遍#include#include#include#define MAXN 30000+10using namespace std;bool vis[MAXN];vectorst[MAXN];int n,m,ans,maxx;void dfs(int cur){
2013-10-22 21:02:50 635
原创 uva 10029 简单DP
两个for循环 2.632s水过。。。。。。。。。#include#include#include#include#define MAXN 25000+5using namespace std;typedef struct node{ char str[20]; int len;} node ;node word[MAXN];bool suit(int
2013-10-17 16:09:45 719 1
原创 UVA 558 判断负环
#include#include#include#define MAXN 2000+5#define INF 1000000using namespace std;int u[MAXN],v[MAXN],w[MAXN],n,m,d[1005];int main(){// freopen("in.txt","r",stdin); int cas; scanf(
2013-10-14 20:37:51 603
原创 UVA 10099 Kruskal算法 Floyd算法
Floyd:#include#include#include#define MAXN 105#define INF 10000using namespace std;int d[MAXN][MAXN];int main(){// freopen("in.txt","r",stdin); int n,r,cas=0; while(scanf("%d%d
2013-10-14 20:28:06 697
转载 Bellman-Ford算法 和 SPFA算法
从百度以及大牛们的博客中找到的,仅供学习参考。。。。 Bellman-ford算法是求含负权图的单源最短路径算法,效率很低,但代码很容易写。即进行不停地松弛(relaxation),每次松弛把每条边都更新一下,若n-1次松弛后还能更新,则说明图中有负环(即负权回路,本文最后有解释),无法得出结果,否则就成功完成。Bellman-ford算法有一个小优化:每次松弛先设
2013-10-13 17:26:53 920
原创 HDU 3650 贪心+二分
( 这个题数据量比较小,所以类似于模拟也可以做。) 按照起始时间排序,然后从最小的起点开始,找在这一天内能够观看的所有节目,写了个二分优化了时间。 #include#include#include#include#define MAXN 110using namespace std;typedef struct node{ int
2013-10-09 19:46:14 556
原创 HDU 4722 WA求大神指教(已经更正)
规律很容易发现,从10开始,每10个数,有一个满足条件。即19,28,37,46,55,64,73,82,91,109,118,127,136,145,154,163,,,,,,, 代码如下:#include#include#include#define LL long longusing namespace std;int main(){// fre
2013-09-20 10:16:24 749 3
原创 HDU 4195 几何
题意,有一个n多边形,且是正多边形,从中任取3点构成一个三角形。告诉你这3个点的坐标,求满足条件的最小的n。 基本思路,暴力,从i(3#include#include#include#include#define eps 1e-6#define pi acos(-1)using namespace std;struct node{
2013-09-05 15:39:17 579
转载 codeforces 340B 几何 叉积
转载于http://www.cnblogs.com/zstu-abc/p/3293327.html题意:平面上n个点(n,问任意四个点组成的四边形(保证四条边不相交)的最大面积是多少。分析:1、第一思路是枚举四个点,以O(n4)的算法妥妥超时。2、以下思路源自官方题解 以O(n2)枚举每一条边,以这条边作为四边形的对角线(注意:这里所说的对角线是指把四
2013-09-02 20:47:53 679
原创 HDU 1025 最长递增子序列
求最长递增子序列nlogn的算法:(转载于http://www.felix021.com/blog/read.php?1587)最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了。假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS
2013-08-30 17:05:30 543
转载 HDU 3849 无向图的割顶和桥模版题
原理在lrj训练指南P312,模板!不连通图的割边是0!!所以这个题要先判断是否是连通的。另外因为要求是按照输入顺序输出,所以不得不说保存数据很麻烦。#include#include#include#include#include#include#include#includeusing namespace std;typedef pair Pair;int n,m,tot
2013-08-29 17:17:33 769
原创 HDU 3853 概率DP
参考 http://www.cnblogs.com/zhj5chengfeng/archive/2013/03/01/2939423.html http://www.cnblogs.com/andyzhang2068/archive/2011/07/20/2111239.html 看到这个题知识感觉到很麻烦,没有往DP这
2013-08-29 07:20:38 552
原创 HDU 3848 DFS 树形DP
给你一棵树,找出两个叶子之间的最短距离。 第一种是个纯dfs+稍微的剪枝,从每一个叶子出发,dfs直到找到一个新的叶子,更新最短距离。781ms#include#include#include#include#include#define MAXN 10001#define INF 2147483647using namespace std;int
2013-08-28 20:06:44 566
原创 UVA 10404 - Bachet's Game 组合博弈
杭电刘春英老师的课件中有:必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。步骤1:将所有终结位置标记为必败点(P点);步骤2: 将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)步骤3:如果从某个点开始的所有一步操作都只能
2013-08-20 19:05:40 699 5
转载 ZOJ 3725 Painting Storages DP+排列计数
转载于http://blog.csdn.net/zu_xu/article/details/9401497 采用递推:当NM时,若1到N-1满足条件,则N可以任意染色,方案数为C(N-1)*2;否则,必有1到N-M-1不满足条件,N-M为蓝,N-M+1到N-1为红,这时将N染成红色即可,方案数为2^(N-M-1)-C(N-M-1),即1到N-M-1所有的染色方案数减去满足条件的
2013-08-19 20:09:56 476
原创 HDU 3952 2011阿里巴巴程序设计公开赛
这个是2011阿里巴巴程序设计公开赛中的一个题,我们用这套题打了一场组队赛,最后却输在了这个题上,其实看了解题报告http://hi.baidu.com/kerrynit/item/85c865090210ed0aebfe3872很好做,只是比赛时不容易证明这个思路。摘自解题报告:1002 Fruit Ninja类型:几何(简单)假设有一条线穿过一些水果,那么我们将
2013-08-19 11:13:50 747
原创 SGU 180 贪心
不得不说,又是没读懂题意,看了解题报告才知道,大意是有n条链子,每条链子上有L个环,一分钟内可以从一条链子上拆下一个环,然后把连接起两条链子,问最小的时间把这些链子连成一条链子。拆最短的链子,从最长的开始连。#include#include#include#includeusing namespace std;int main(){ //freopen("in.txt","
2013-08-18 17:47:44 481
原创 Codeforces 245H 回文 DP
看了解题报告才弄清楚状态转移方程:Let isPal[i][j] be 1 if s[i...j] is palindrome, otherwise, set it 0. Let's define dp[i][j] to be number of palindrome substrings of s[i...j]. Let's calculate isPal[i][j] and
2013-08-18 13:06:41 587
转载 HDU 1207 汉诺塔问题
转载于http://qianmacao.blog.163.com/blog/static/203397180201211555939662/http://acm.hdu.edu.cn/showproblem.php?pid=1207思路是借鉴网上一大牛的,写的很完美了,所以一句没改变体汉诺塔 问题描述:在经典汉诺塔的基础上加一个条件,即,如果再加一根柱子(
2013-08-16 10:21:13 517
原创 HDU 2136 Largest prime factor 3种求素数表的方法
总结了3种求素数表的方法第一种:void intline(){ memset(prime,true,sizeof(prime)); prime[1]=false; prime[0]=false; for(int i=2; i*i<MAXN; i++) { for(int j=2; j*i<MAXN; j++)
2013-08-15 17:34:54 734
原创 HDU 1203 贪心或者DP
贪心策略是申请offer需要的钱越少越好,而成功率越高越好,所以按照需要的钱和成功率的比值从小到大排序,依次选择。#include#include#include#include#define MAXN 10010using namespace std;struct node{ int money; double p,r; bool operator<(c
2013-08-15 11:23:38 507
原创 HDU 1239 Calling Extraterrestrial Intelligence Again 素数表
每次遇到这样的题都无从下手,其实根据题意分析一下,并不难,模拟就可以了。这个题先构造100000以内的素数表,然后根据条件判断就OK。#include#include#include#define MAXN 100010using namespace std;bool prime[MAXN];void intline(){ prime[1]=false; prim
2013-08-15 09:54:25 661
原创 HDU 1054Strategic Game 贪心
这个题与http://blog.csdn.net/anqier0468/article/details/9453567看起来没什么联系,但是贪心策略是一样的,(做这个题时还是没想起来),从度数为1的结点a开始算起,因为删除这个度数为1的结点肯定不如删除与它相连接的结点b效率高,所以一定是在与它相连的结点b上房哨兵,然后删除与b相连的边,直到没有度数为1的结点。特别注意只有一个结点时输出1。
2013-08-14 10:35:29 624
原创 HDU1102 Constructing Roads 最小生成树
基本算是最小生成树的模板题,对于已经建好的路,把它的长度标记为0就可以了。这个题比较坑的地方是输入是有多组数据的,还有数组越界有可能返回的是WA,注意数组的大小。如果全部存下,应该是n*n+n*(n+1)/2.#include#include#include#include#include#define MAXN 105using namespace std;int p[MAX
2013-08-13 20:52:09 467
原创 HDU 1009 贪心
一开始以为浮点数有精度损失,在输出那里写 printf("%.3lf\n",sum+0.0001);结果WA了。不需要考虑精度损失。#include#include#include#include#include#define MAXN 5010using namespace std;struct Node{ int j,f; double p; b
2013-08-13 19:22:54 525
vs2012下C++操作word的简单实例
2016-01-15
求一vs2012下C++操作word文档的源码,简单易学就好
2016-01-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人