自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dosth_Magic

你不能停止努力。

  • 博客(86)
  • 资源 (5)
  • 收藏
  • 关注

原创 UVa11582 - Colossal Fibonacci Numbers!(模运算)

#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef unsigned long long ULL;const int maxn = 1005;int f[maxn][6*maxn],p[maxn];int

2015-04-30 16:37:18 1494

原创 同余与模运算

发现自己还是看书少了,能从书上学到不少东西。加减乘的模运算:#includeusing namespace std;int mul_mod(int a,int b,int n){ a %= n; b %= b; return (int)((long long)a * b % n);}///如果n本身超int,就要用高精度了int add_mod(int a,int

2015-04-30 07:35:36 1343 3

原创 UVa1603 - Square Destroyer

题意:给定一个火柴棒拼成的方格阵,然后去掉一些火柴棒,问至少再去掉几根火柴棒能够让图中一个正方形都没有。思路:1. 由于题目中给定了 n 的范围,2 * n * (n + 1) 所以能够保证所有的火柴用 __int64 的位运算表示;2. 问题的关键在于如何生成火柴构成的方阵,以及生成方阵之后如何去搜索;3. 启发式函数 h 的计算需要考量:如果删除了某个

2015-04-29 21:22:49 1763 1

原创 位运算符

最近用的很多,快快熟悉。=== 1. and运算 ===and运算通常用于二进制取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。相同位的两个数字都为1,则为1;若有一个不为1,则为0。0010111100(&;或者and)----------

2015-04-29 20:37:15 519

原创 异或运算

将a与b的对应位进行异或运算,同为0或者同为1时,对应位结果为0;否则为1。

2015-04-29 20:29:15 689

原创 UVa1602 - Lattice Animals

输入n,w,h(1回溯求解,首先确定搜索对象,格子连通,所以把连通块作为搜索对象,每次枚举一个位置,然后放一个新的块,最后重判。每个连块会被枚举很多次,有方法可以确保每个n连块恰好被枚举一次。用函数generate()把每种情况枚举出来。#include#include#include#includeusing namespace std;struct Cell{

2015-04-29 19:40:36 1384 1

原创 UVa414 - Machined Surfaces

#include#includeint main(){ int k,m,n,i,j,sum,min; char str[100000]; while(scanf("%d%*c",&n)&&n) { sum=0; for(i=0;i<n;i++) { gets(str);

2015-04-29 09:37:00 550

原创 UVa1601 - The Morning after Halloween(单向+双向BFS)

给出一个最大为16×16的迷宫图和至多3个ghost的起始位置和目标位置,求最少经过几轮移动可以使三个ghost都到达目标位置。每轮移动中,每个ghost可以走一步,也可以原地不动,需要注意的是任意两个ghost不能在相同的位置,因此也不能出现任意两个ghost对穿,也就是原来是ab,移动之后是ba。每个迷宫图'#'表示墙,' '表示空地,小写字母表示ghost的起始位置,大写字母表示对应ghos

2015-04-29 09:27:59 946

原创 UVa490 - Rotating Sentences

虽说是水题,但是改来改去也用了很多时间,要注意代码的质量和正确性。一定要想清楚再写,后来没去中间的输出wa了两次。#include#includeusing namespace std;char a[105][105];int main(){ int hang=0,maxn=0; while(gets(a[hang]) ){ if(strlen(a

2015-04-29 09:17:42 810

原创 UVa10603 - Fill

分析:取出水量最少的节点进行扩展,这样的程序只需要把队列queue换成优先队列priority_queue,其他部分的代码不变,下面的代码把状态(三元组)和dist合起来定义为一个Node类型,是一种常见的写法,如果要打印路径,需要把访问过的所有节点放在一个nodes数组中,然后在Node中加一个变量fa,表示父节点在nodes数组中的下标,而在队列中只存在节点在nodes数组中的下标而非节点本身

2015-04-28 15:08:19 935

原创 UVa1343 - The Rotation Game

因为8个转轮对应的位置比较没有规律,需要提前将这些位置存在数组中,方便旋转操作和回溯法的归位操作。利用数组来人为储存没有规律的数字。IDA*合了bfs步数最少和dfs字典序最小的优点。#include#include#define maxn 500using namespace std;int block[24];int roller[8][7]={{0,2,6,1

2015-04-28 13:38:54 1077

原创 八数码问题

八数码问题:编号为1~8的8个正方形滑块被摆成3行3列(有一个格子留空),每次可以把与空格相邻的滑块(又公共边才算相邻)移动到空格中,而他原来的位置就成了新的空格,给定初始局面和目标局面(0表示空格),你的任务时计算出最少移动的步数,无法达到输出-1.样例输入:2 6 4 1 3 7 0 5 88 1 5 7 3 6 4 0 2样例输出:31分析:把八数

2015-04-28 10:31:49 1253

原创 qsort快排c语言和c++应用

C语言中用qsort()快速排序C语言中排序的算法有很多种,系统也提供了一个函数qsort()可以实现快速排序。原型如下: void qsort(void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));

2015-04-28 10:10:48 875

原创 11300 - Spreading the Wealth

(解方程建模+中位数求最短累积位移)分金币(Spreading the Wealth, UVa 11300)  圆桌旁坐着n个人,每人有一定数量的金币,金币总数能被n整除。每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等。你的任务是求出被转手的金币数量的最小值。比如,n=4,且4个人的金币数量分别为1,2,5,4时,只需转移4枚金币(第3个人给第2个

2015-04-28 00:36:49 600

原创 11729 - Commando War

【题目翻译】:【思路】:贪心算法:处理时间长的先交代。按照J从大到小的顺序给任务排序,依次交代。#include#includetypedef struct Time{ int B; int J;}Time;int cmp(const void *a,const void *b){ struct Time * c = (Time

2015-04-28 00:03:15 827 1

原创 《算法竞赛入门经典——训练指南》第一章算法分类

问题求解策略 (General Problem Solving Techniques)例题 (Examples) 例题 1UVa11292The Dragon of Loowater排序后用贪心法 例题 2UVa11729Commando War用贪心法求最优排列;用“相邻交换法”证明正确性

2015-04-27 23:44:31 1022

原创 11292 - Dragon of Loowater

例题1  勇者斗恶龙(The Dragon of Loowater, UVa 11292)你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。【输入格式】

2015-04-27 23:39:12 915 3

原创 12558 - Egyptian Fractions (HARD version)

#include#include#include#includeusing namespace std;typedef long long LL;const int maxn=10010;int maxd,t,tt;set sk;LL ans[maxn],v[maxn];LL gcd(LL a,LL b){ return b?gcd(b, a%b):a;}LL ge

2015-04-27 23:11:27 1021 2

原创 校赛总结

算是第一次参加大规模的比赛,而且是个人赛,前1个多小时都没出题,我也是醉了,究其原因,无非就是紧张,但最重要的还是平时努力不够,后来出了5个题,其他的感觉能做,但就是做不出来,只能说题量还是不够。再说说最近几天的状态,校赛确实是有点累,但校赛过后的状态确实很差劲,想刷题只停留在了想的层面,自己又开始犹豫上课还是逃课,刷题还是打游戏的问题,如若一定时间就犹豫几次,我定是出不了什么成绩的,机房可以

2015-04-27 22:20:22 630

原创 UVa11212 - Editing a Book

#include#include#includeusing namespace std;class Board{public: int a[16]; int h; int n; bool readIn() { int i; scanf("%d",&n); if(n == 0) return fals

2015-04-27 15:57:08 993

原创 埃及分数问题

样例输入:495  499样例输出:495/499 = 1/2+1/5+1/6+1/8+1/3992+1/14970规则是加数少比加数多好,加数相同,小的数越大越好。分析:回溯无限,宽度优先便利一层都跑不完,所以用迭代加深搜索(iterative deeping):从小到达枚举深度上线maxd,枚举上限还可以减枝。IDA*算法:深度上线maxd,当前节点n的深度为g(n),乐观估价

2015-04-27 14:03:35 1028

原创 2014上海全国邀请赛——题目重现 4.24

连接:http://acm.hdu.edu.cn/search.php?field=problem&key=2014%C9%CF%BA%A3%C8%AB%B9%FA%D1%FB%C7%EB%C8%FC%A1%AA%A1%AA%CC%E2%C4%BF%D6%D8%CF%D6%A3%A8%B8%D0%D0%BB%C9%CF%BA%A3%B4%F3%D1%A7%CC%E1%B9%A9%CC%E2%C4%

2015-04-25 23:23:21 695

原创 sdut-2159 Ivan comes again!(set+线段树)

Ivan comes again!Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^题目描述The Fairy Ivan gave Saya three problems to solve (Problem F). After Saya finished the first problem

2015-04-25 23:12:32 542

原创 HDU 1576 A/B (扩展欧几里德算法)

连接:http://acm.hdu.edu.cn/showproblem.php?pid=1576Sample Input21000 5387 123456789 Sample Output79226060题意:要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) =

2015-04-25 22:52:49 615

原创 gcd() 最大公约数

递归gcd()int gcd(int a,int b){     return b==0?a:gcd(b,a%b);}特点及意义  最大公约数指某几个整数共有因子中最大的一个。  例如,12和30的公约数有:1、2、3、6,其中6就是12和30的最大公约数。  两

2015-04-25 22:22:02 971

原创 线段树

线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O

2015-04-25 14:11:15 365

原创 SDUT2159 Ivan comes again!(省赛原题)(STL)

题目连接:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2159&cid=1172示例输入4add 2 3find 1 2remove 2 3find 1 20示例输出Case 1:2 3-1题意:跟hello world题意差不多,第一行N个操作,“add”是加入容器一个

2015-04-25 10:50:54 602

原创 山东省第一届ACM大学生程序设计竞赛(原题) 回顾 4.18

Phone Number 题目链接:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2151&cid=1172题意很简单:给出N行电话号码,寻找有没有一串是另一串的前缀,有的话输出No,当然两个一样的也是No题解:没有前缀0,直接用二维数组存,大循环就行了,用strcmp比较相等。不会超时。Hello World!     题

2015-04-25 10:18:35 1112

原创 UVa 12113 - Overlapping Squares

用到位运算,提前要对表进行求值#include#include#include#include#includeusing namespace std;const int maxn=(1<<9);int a[9][8]={{1,3,9,13,18,19,21,22}};int clean[9][4]={{10,11,12,20}};void init(){ int k

2015-04-22 17:35:19 1040

原创 next_permutation函数

这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件下面是以前的笔记    与之完全相反的函数还有prev_permutation  (1) int 类型的next_permutation int main(){ int a[3];a[0]=1;a[1]=2;a[2]=3; do{cout} while (next_permutat

2015-04-22 17:15:57 427

原创 SDUT2155 Emergency(第一届省赛题)(弗洛伊德算法)

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2155题意大概一个地方所有城市被侵占开始解放每个城市,一个人要从解放的城市到达另一个解放的城市,所有需要求所有两个城市的最短路径N个节点 M个边 Q个操作接下来M行 每行表示一条高速公路连接x,y 长度为z接下来Q个操作 操作

2015-04-21 23:20:33 810

原创 SDUT2156 Fairy tale(第一届省赛题目)(模拟)

题目连接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2156题意大概:一个迷宫,每个用WESN表示,每一个时刻都会发生变化,变化规律为E to W, W to S, S to N, and N to E.人开始的位置在(0,0)宝藏开始的位置在右下角。宝藏每一个时间段都会跟着迷宫上的字母

2015-04-21 15:02:14 571

原创 HDU1035 Robot Motion

很水的模拟题,把-号写成了=号,找了一个小时我也是醉了,但发现自己比原来还是进步了#include#include#includeusing namespace std;const int maxn = 100;char map[maxn][maxn];int vis[maxn][maxn];int main(){ int m,n,x; while(scanf(

2015-04-20 20:24:20 677 2

原创 HDU4255 A Famous Grid

#include#include#include#include#define N 40400#define MAX 210#define CNT 4400using namespace std;bool isprime[N];int prime[CNT],cnt;int map[MAX][MAX];bool visited[MAX][MAX];struct point {

2015-04-18 15:40:40 601

原创 蛇形表(递归打印)

#include#include#includeusing namespace std;int map[20][20];void build_map(int p,int q,int s,int c){ if(s==0) return; int i; for(i=q;i<q+c;i++) map[p][i]=s--; for(i=p+1;i<p+c;i++

2015-04-18 14:48:18 602

原创 打印素数表(牢记)

#include#include#includeusing namespace std;bool isprime[100];int prime[100];int main(){ memset(isprime,true,sizeof(isprime)); isprime[1]=false; int cnt=0; for(int i=2;i<100;i++

2015-04-18 14:26:16 811

原创 UVa537 - Artificial Intelligence?

#include#include#include#includeusing namespace std;int main(){ int T; cin>>T; getchar(); for(int case_num=1;case_num<=T;case_num++) { string line; getline(ci

2015-04-18 12:19:45 571

原创 UVa10010 - Where's Waldorf?

#include#include#include#includeusing namespace std;const int MAX=50+5;char s[MAX][MAX],word[MAX];void f(int m,int n,int len){ int i,j,k,x,y,cfind; for(i=0;i<m;i++) { for(j

2015-04-18 11:59:59 522

原创 UVa10361 - Automatic Poetry

#include#include#define N 110int main(){ int i,j,Case,lena,lenb; char a[N],b[N],s[N],s1[N],s2[N],s3[N],s4[N],s5[N]; while(scanf("%d\n",&Case)!=EOF){ while(Case--){

2015-04-18 11:58:38 479

原创 HUD4256 The Famous Clock

int main(){ int kase = 0; char s[50]; while( scanf("%s",s)!=EOF ){ printf("Case %d: ",++kase); if( !strcmp(s,"I") ) printf("1\n"); if( !strcmp(s,"II") ) print

2015-04-17 22:24:10 402

chrome修复工具

chrome一直有问题,有时候能用,然后就上不了csdn,google,这个工具很好用

2018-11-06

p5js代码库

交互式可视化工具,学习前端可视化入门代码库,非常简单有趣

2018-10-18

初学论文制作PPT

初学论文,面对全是英语的文章,还是很难理解的,要多看,更要掌握看文章的方法。 掌握该问的核心思想,学习研究经验。把该论文的ppt做出来,意味着掌握的差不多了

2017-09-21

Qt+OpenGL程序

Qt+OpenGL程序

2017-08-23

C++Qt教程源码

学习youtobe上经典C++Qt教程的代码,有想要学习的可以下下来看看

2017-08-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除