ACM
唐傘皮
如果傘皮不能用代码改变世界,那就改变自己就好了~
展开
-
问题 E: N皇后
问题 E: N皇后使用回溯法求解N后问题先循环,在循坏里检测i行第j是否可以放,可以则放皇后,然后判断是不是最后一个皇后,如果是则输出一个解,如果不是,则递归进入下一个排列树,到下一行放皇后,最后进行回溯#include<bits/stdc++.h>#define swap(x, y) {int temp=x;x=y;y=temp;}using namespace std;const int N=1005;int G[N][N];//存放棋盘int L[N];//记录上斜线/原创 2020-05-29 16:32:46 · 267 阅读 · 3 评论 -
问题 C: 又一道简单题
问题 C: 又一道简单题题目描述输入一个四个数字组成的整数 n,你的任务是数一数有多少种方法,恰好修改一个数字,把它 变成一个完全平方数(不能把首位修改成 0)。比如 n=7844,有两种方法:3844=622 和 7744=882。输入输入第一行为整数 T (1<=T<=1000),即测试数据的组数,以后每行包含一个整数 n (1000<=n<=9999)。输出对于每组数据,输出恰好修改一个数字,把 n变成完全平方数的方案数注意本身不算在内,还有保证最高位不为0,采原创 2020-05-29 08:44:04 · 788 阅读 · 0 评论 -
问题 B: 相聚HNUCM校园食堂
问题 B: 相聚HNUCM校园食堂5 410 65 23 67 805 15 60 90#include<bits/stdc++.h>#define swap(x, y) {int temp=x;x=y;y=temp;}using namespace std;const int N=1005;int a[N];int b[N];bool cmp(int a,int b){ return a<b;}int main(){ int m,n;原创 2020-05-27 15:45:47 · 498 阅读 · 3 评论 -
问题 A: yangftc的时间安排
问题 A: yangftc的时间安排题目描述yangftc需要安排他的时间,有很多事情做,每个事情都有固定的开始和结束时间,因为yangftc每次只能做一件事情,如果有两个或者多个事情的时间重合了那么他就会说 NO,否则他就会说 YES 。输入第一个数字t代表样例数量,后面t个样例,每个样例输入一个n表示事情的数量,后面n行每行两个数字l r表示这个事情的开始和结束时间;输出判断yangftc会说什么 YES或者 NO 。数据范围 1<=t<=500 1<=n<原创 2020-05-27 08:19:03 · 467 阅读 · 0 评论 -
问题 D: 自守数
问题 D: 自守数题目描述自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数。输入int型整数。输出n以内自守数的数量。比华为的OJ数据加强了,而且还卡时间了,由于本人太菜,错了几十次错了几十次,发现,一:它平方后,会溢出(C++用long long,java用long),二:超时,解决了溢出,还超时,把java的Int范围内的自守数打表出来,过很久才结束,所以,我放弃了,还原创 2020-05-21 10:31:03 · 1008 阅读 · 5 评论 -
问题 A: 统计字符串
#include<bits/stdc++.h>#define swap(x, y) {int temp=x;x=y;y=temp;}using namespace std;const int N=1e5+5;typedef struct{ char c; int num=0;}Node;Node node[N];int main(){ char t='v'; int i=1; int cnt=0; while(~scanf("%c"原创 2020-05-21 00:35:25 · 392 阅读 · 0 评论 -
问题 C: 最小素数对
问题 C: 最小素数对题目描述任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。输入输入一个偶数。输出输出两个素数。#include<bits/stdc++.h>#define swap(x, y) {int temp=x;x=y;y=temp;}using namespace std;const int N=1e5+5;int solve(int n){ if(n==1)原创 2020-05-20 11:33:08 · 491 阅读 · 0 评论 -
问题 B: 1的个数
问题 B: 1的个数输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。运用计算机的与的功能判断1的个数,例如5的二进制数是101,5&1->101&001=1,然后根据计算机移位,5>>1=101>>1=10,就可以做出来哦#include<bits/stdc++.h>using namespace std;int main(){ int t; while(cin>>t){ int原创 2020-05-20 09:29:50 · 323 阅读 · 0 评论 -
问题 E: 马的遍历问题
题目描述在5*4的棋盘中,马只能走斜“日”字。马从位置(x, y)处出发,把棋盘的每一格都走一次,且只走一次,请找出所有路径。输入x,y,表示马的初始位置。输出将每一格都走一次的路径总数,如果不存在该路径则输出“No solution!”。#include<bits/stdc++.h>#define mCheck(x,y) (x<0||y<0||x>=n||y>=m||a[x][y]!=0)using namespace std;int fx[8]原创 2020-05-15 20:00:00 · 700 阅读 · 0 评论 -
问题 B: 尼科彻斯定理
题目描述验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19输入多组输入,输入一个整数。#include<bits/stdc++.h>#define ll long longconst int N=10005;using namespace std;int a[N];int main(){ int n; while(cin>>n){原创 2020-05-13 09:47:19 · 339 阅读 · 0 评论 -
问题 A: 牛妹的蛋糕
题目描述众所周知,牛妹非常喜欢吃蛋糕。第一天牛妹吃掉蛋糕总数三分之一多一个,第二天又将剩下的蛋糕吃掉三分之一多一个,以后每天吃掉前一天剩下的三分之一多一个,到第n天准备吃的时候只剩下一个蛋糕。牛妹想知道第一天开始吃的时候蛋糕一共有多少呢?输入输入n,0<n< 30。输出输出第一天蛋糕的数量。通过可以设立方程,设原先有X个,第二天为x-(x/3+1),每次for循环就是一天,然后逆向还原,解方程#include<bits/stdc++.h>#define ll原创 2020-05-12 16:26:31 · 570 阅读 · 0 评论 -
0-1背包&算法练习10& 部分题
#include<bits/stdc++.h>#define ll long longconst int N=1005;using namespace std;int a[N][N];int w[N];int num[N];int code[N];int main(){ int T,n; while(cin>>T>>n){...原创 2020-04-26 22:29:12 · 1058 阅读 · 0 评论 -
记算法练习8-部分题
文章目录斜线最大最小值求解n阶螺旋矩阵问题Max Sum斜线最大最小值求如图所示一个上三角矩阵中每一条斜线中的最大元素(L)和最小元素(S)。输入每组输入包括两部分,一部分为数字n,表示三角矩阵的行数。第二部分即为三角矩阵。输出每一个对角线输出一行,每行包括Lx=Max, Sx=Min,其中x为斜线序号(序号从1开始),Max为该斜线上的最大值,Min为该斜线上的最小值impo...原创 2020-04-10 19:51:50 · 414 阅读 · 0 评论 -
O(n)求出 最大子段和-动态规划
最大子段和子段的意思就是,必须得连续,比如1, 2,3, 4,5的一个子段为2, 3, 4它的状态因素只有这个序列,对于每个元素它有2种选择,加或者不加,取最优解,最后就是最大和,用动态规划解决import java.util.*;public class Main { static int [] a; public static void main (S...原创 2020-04-09 16:35:21 · 236 阅读 · 0 评论 -
圆桌问题
圆桌问题圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。#include<bits/stdc++.h>//如果是杭电OJ不要用这个...原创 2020-02-22 15:48:24 · 1745 阅读 · 5 评论 -
平方与立方
平方与立方现有等式xx = yy*y,等式中x和y均为正整数,以及一个正整数n,你的目的是在(0,n]的范围内找出所有满足该等式的x,也就是说你需要找出满足以下条件的x:即x的平方值也可以写成一个正整数y的立方。用暴力打表,然后发现有如下规律:如此类推,只要判断就可以了#include<bits/stdc++.h>using namespace std;int...原创 2020-02-20 16:04:58 · 348 阅读 · 0 评论 -
最小K元素之分治法——输入有坑!!!!
题目输入一个整数数组,请求出该数组的第k小元素。要求时间复杂度为O(n)。思路:这道题思想是用分治法通过递归实现,借用了快排的原理,通过快排中分区函数得到的基准元素,得到基准元素前面的元素比基准元素小,后面的比基准元素大,这样通过统计基准元素前面的个数判断目标第K小元素是在基准元素前面还是后面,然后根据这进行递归,直到找到第K元素。但是这题在输入数据中设置了小小的急转弯,需要设计输入的方式...原创 2020-03-27 23:15:55 · 820 阅读 · 0 评论 -
棋盘覆盖之分治加递归
问题在一个n×n (n = 2k)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。当初自己听了老师说的好久还是不太懂,自己就慢慢琢磨,下面仅仅代表自己的想法分治与递归: 将一个大的正方形分成4个小正方形,分别为左上...原创 2020-03-26 00:15:05 · 332 阅读 · 0 评论 -
相同位数的大整数乘法
大整数乘法递归与分治解决运用递归把大整数abcd…的每个位数提取出来,按照a10^n + b * 10^n-1 + c * 10 ^n-2+…在这里用分治将第一个整数化为2部分AB,第二个整数化为CD然后分而治之然后按照乘法法则进行展开,这就是递归公式:然后进行变换将AD+BC化为由AC,BD的式子**(A-C)*(D-B)+AB+CD**减少计算,减少时间复杂度而递归的结束条件是当...原创 2020-03-24 22:54:03 · 351 阅读 · 0 评论 -
求素数——筛法模板&判断素数——剪枝
记个小笔记,具体思想可以参考其他大神线性求法:const int N=50;int prime[N];int a[N];int check[N];int tot=0;void solve(){ memset(check, 0, sizeof(check)); for(int i=2;i<N;++i){ if(!check[i]){ pri...原创 2020-03-03 18:25:29 · 185 阅读 · 0 评论 -
习题7-3 判断素数
习题7-3 判断素数写一个函数判断一个正整数是否为素数。在主函数中输入一个大于1的正整数,通过调用这个函数,输出该数是否为素数的信息。如果该数为素数,输出信息为:Prime!若该数不为素数,则输出信息为:Not Prime!输入输出在主函数中进行。题目很简单:运用递归的定义:1,递归结束的条件:当除得尽时结束递归,这题有两个条件判断结果。2,递归公式:n%i#include<...原创 2020-02-24 15:09:00 · 1441 阅读 · 0 评论 -
饥饿的XP
饥饿的XPXP迷失在X星球,他醒来时已经很久很久很久没有吃过东西了。他突然发现身边有一张地图,上面有X星球上每一个食物供给点的位置。太好了,XP跳了起来。他决定先把肚子填饱再去寻找其他伙伴。现在已知XP的位置(X, Y),以及他的行走速度N(米/分钟),请问他需要多久才能到达最近的食物供给点。这道题有点坑,坑在没有指出是多组输入,题目并不难,在这给学弟学妹一个经验,希望不要走老路,三皮我是真的...原创 2020-02-23 14:54:22 · 188 阅读 · 0 评论 -
蜂房问题
蜂房问题:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。开始时我打算用搜索法去把路径搜索出来,结果发现很复杂,最后发现结果是个类似斐波拉契数列的结果。#include<bits/stdc++.h>#define check(x,y) (x<2&&x>=0&&...原创 2020-02-18 11:39:45 · 1010 阅读 · 1 评论 -
电灯问题
电灯问题 :XP最近发现一个很好玩的问题。现在有N盏电灯,序号为1到N,最开始的时候所有电灯都是关闭的。XP有一群同学,序号是(1~K),这些调皮的同学会去按电灯的开关,每个同学按开关符合一种规律。序号为1的同学会按下序号是1的倍数的灯的开关,序号是2的同学会按下序号是2的倍数的灯的开关(将关的灯打开,开的灯关闭)。现在XP有K位同学,每位同学都去操作一次,问最后有多少盏灯是亮着的?我这用来备...原创 2020-02-18 09:52:25 · 958 阅读 · 0 评论 -
超级楼梯
超级楼梯题目:哈哈哈,一言不合就打表,根据手工计算得到的规律就是一个斐波拉契列,所以上代码#include<bits/stdc++.h>using namespace std;int a[100];void solve(){ for(int i=1;i<55;i++){ if(i<=3){ a[i]=i-1; }...原创 2020-02-12 10:49:48 · 416 阅读 · 0 评论 -
母牛的故事
母牛的故事—动态规划简单题说起母牛的故事,这个牛还真是很有特色哈,不仅第1年不生,非要第2年再生,哈哈,可能需要怀胎吧?而且生下来的都是母的,哈哈哈,当然只是一个题目,没那么多讲究,直接进入主题动态规划求解问题的具有的特征是:能够分解为相互重叠的若干个子问题能满足最优子结构的性质根据题目可得:每年的牛需要用到前面牛牛生的崽,每个牛到了年龄又会生孩子,所以具有了重叠的子结构,而要求...原创 2020-02-12 09:41:07 · 111 阅读 · 0 评论 -
动态规划的基本思想
动态规划动态规划将待求解的问题分解成若干个子问题子问题往往不是相互独立的,有些子问题被重复计算多次保存已解决的子问题的答案,在需要时再找出以求得答案,就可以避免多次重复计算1.基本步骤找出最优解的性质,并刻划其结构特点递归的定义最优值自顶向上的方式计算在最优值根据计算最优值得到的信息,构造最优解2.基本要素(1)最优子结构:一个问题的最优解包含着其子问题的最优解,是一...原创 2019-11-28 20:33:53 · 550 阅读 · 0 评论 -
壮志难酬
壮志难酬话说MCA山上各路豪杰均出山抗敌,去年曾在江湖威名显赫的,江湖人称<万军中取上将首级舍我其谁>的甘露也不甘示弱,“天将降大任于斯人也,必先劳其筋骨,饿其体肤,空乏其身”他说。可惜,由于去年取上将首级时不慎右手右关节第七次骨折,养伤达一年之久,空有一腔抱负却壮志难酬,如今天下危亡,习武之人又怎能袖手旁观,于是他决定出山协助威士忌共抗辽贼,这时他的对头枫冰叶子出现,两人都是水属性...原创 2019-11-24 17:04:20 · 149 阅读 · 0 评论