
acm训练题
不玩游戏的休比
闲时折腾,忙里偷空,保持心态,维持思考,开心就好。
展开
-
#poj:P1955 [NOI2015] 程序自动分析
**poj:P1955 [NOI2015] 程序自动分析**#题目描述#看到题就能想到是并查集了 但是想的复杂了 还以为是一般的带权并查集 想了好久没做出来#与其判断相等和不相等交替的传递性问题 不如直接到就将相等的联系起来 因为相等有传递性 把不相等看作一次查询 如果这两个点在一个并查集里就错了#知识点并差集 离散化#代码第一次用权并查集来写 并没有真正的带上权 过了个50 想优化但就是写不出来了#include<cstdio>#include<algo原创 2021-07-31 20:55:40 · 206 阅读 · 0 评论 -
#poj:Fair Distribution
#poj:Fair Distribution#题目描述#大概意思要你找到一个最短的方式来使得n * k = m 成立 n只能减小 m只能增加 k为任意一整数#n减少的数加上m增加的数的和最小#看着好像只能暴力的算 但是定睛一看 范围 1e8 直接暴力能想到会超时 自己写也是各种优化都来试试撞运气还是卡时间 还要优化算法#知识点分块 (我是没看出来-别的大佬说的(⊙ˍ⊙))#代码#include<bits/stdc++.h>using namespace std;#原创 2021-07-23 21:32:29 · 194 阅读 · 0 评论 -
# 航电oj:Period
**航电oj:Period**#题目描述#大意为:从第二个开始会有循环,要你找出循环的最后一个数的位置 还有循环的长度如aaa 2 2 表示 aa 为循环体 2 为循环长度 3 3 表示为 aaa 为循环体 3 为循环长度#运用kmp中next函数的特点 不匹配时会回到已经匹配的过的位置的后面一位!! 这时假设前面匹配过的就是这个循环的循环体 这就对上了位置 在i的位置时 匹配失败有 i = len, len = next【len】 —》 i-len = i - next【i】循环节原创 2021-06-18 20:13:04 · 420 阅读 · 0 评论 -
航电oj:To Be NUMBER ONE
**航电oj:To Be NUMBER ONE**#题目描述*#不输入 输出16排 数 每一排的倒数相加为1 (3 ~18)#1/n = 1/(n+1) + 1/(n+1)n#知识点数学知识#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int data[1000];void decompose(){ for(int i=2; i&原创 2021-02-07 19:32:04 · 151 阅读 · 0 评论 -
航电oj:Heavy Transportation
#航电oj:Heavy Transportation#题目描述#给你地图边界 和若干条道路载重量 求遍历所有点的道路的最大载重量#最大载重量 就是这条道路的载重量的最小值#知识点djsta#代码#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int t;int INF = 0x3f3f3f3f;int mapp[1010][1010];int vi原创 2021-02-07 19:26:45 · 184 阅读 · 0 评论 -
航电oj:棋盘问题
***航电oj:棋盘问题**#题目描述#一般的dfs问题的思路 但要注意附加条件的特殊性#找位置的时候不必要在两重循环 改位一重循环 结果另存 递归传参为行/列序数#知识点dfs#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;int m;char mapp[9][9];int vis[9];//行列上都只有一个 所以一维原创 2021-02-07 19:20:47 · 214 阅读 · 0 评论 -
航电oj:青蛙的约会
**航电oj:青蛙的约会**#题目描述#一般的方法会超时将方程变为不定式来计算而不是循环求解#知识点不定式计算 ax+by=c;#代码#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long LL;/// 不定式 ax+by=c 的通解和特解void gcd(LL a, LL b, LL& d, LL& x原创 2021-02-07 19:12:59 · 170 阅读 · 0 评论 -
航电oj:汉诺塔IV
**航电oj:汉诺塔IV**#题目描述*#在原版汉诺塔的规则上加两点 不能一次移动两格(1到3 或3到1 都不行 要借助2) 特例 最大的那个盘中可以可以放在小的上面#第二点 就只是单单在最后大盘移动时有用 多余时候不要乱想 改以下原版汉诺塔的步骤 将n-1个小的移动到3----------(1->3) a[n-1]次 将大的从1到2-------(1->2) 1次 将n-1个移动到1 ---------(3->1)a[n-1]次 将大的从2移到3 ------(2-&g原创 2021-02-07 17:53:00 · 387 阅读 · 0 评论 -
航电oj:汉诺塔V
**航电oj:汉诺塔V**#题目描述#给你汉诺塔的层数,目标层数 问你当汉诺塔完成的时候目标成数移动了多少次#最大的一层一次 在这上一层乘二 有这个规律#知识点递归#代码#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int n,t,m;long long int math(int n,int m)///n 成数 m 目标成数 最大的那一成肯定原创 2021-02-07 17:36:01 · 127 阅读 · 0 评论 -
航电oj:Quicksum
**航电oj:Quicksum**#题目描述#输入一个字符串 按照规则一一将字符化为数字再相加 输出总值#空格也是一个字符 数字表示为0#知识点字符串#代码#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;char str[256];int main(){ while(gets(str))原创 2021-01-31 21:07:01 · 127 阅读 · 0 评论 -
航电oj:Sum
**航电oj:Sum**#题目描述#题目好难理解 现在有n个数1~n 在式子1±2±3±4 ~ ± n 中这个n最小为多少时可以得到m (题给的那个数)#数学题 不能想得太复杂了 假设全是加 看值大于m没 只有大于或等于才有可能满足条件 大于就将前面的加号部分改为减号 从加到减 数值变化了两倍 为二的倍数 找到了m - n 为二的倍数就可以满足 计算的值刚好为m#知识点数学#代码错误例子#include<cstring>#include<cstdio>#原创 2021-01-31 21:02:28 · 148 阅读 · 0 评论 -
航电oj:Factorial
**航电oj:Factorial**#题目描述#题目bb这么多就只问你 n 的阶乘中有多少个0#肯定不能撒一样的算出来在数 要知道1~9 中只有2的倍数和5的倍数相乘才会有0出现 2比5多 那就只要找5的倍数 就行#知识点数学#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;int math(int n){ int su原创 2021-01-31 20:46:03 · 84 阅读 · 0 评论 -
航电oj:Big Number
**航电oj:Big Number**#题目描述#给你数字n 让你输出你n!的位数 有多少位#我打表不过 自己算阶乘也不行 log10 也不行 用一个不认识的公式就可以了 数学不好匿了匿了#知识点数学#代码#include<cstdio>#include<cstring>#include<algorithm>#include<math.h>using namespace std;#define PI 3.14159265doub原创 2021-01-31 20:39:34 · 106 阅读 · 0 评论 -
航电oj:最短路
**航电oj:最短路**#题目描述#djsta 算法容易求得##知识点djsta floyd 算法#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int mapp[101][101];int dis[101];int flag[101];int INF = 0x3f3f3f;int n,m;void init(){ f原创 2021-01-31 20:31:40 · 133 阅读 · 0 评论 -
航电oj:DFS
航电oj:DFS#题目描述#不要输入 依次输出1到n 的 每个位数的阶乘的和#n 还挺大的 就是骗你的 其实到不了那么大 因为每个位数的最大的数9 9!= 362880 就10 位数都是9 这个阶乘的和 都到不了7位数 所有目标可以缩小到7位数的样子#知识点阶乘#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int data[10] = {1原创 2021-01-31 19:37:02 · 187 阅读 · 0 评论 -
航电oj:猜数字
**航电oj:猜数字**#题目描述#题目不好懂 就是要你根据给的数 这个是猜的次数 在这个次数下 最多能精确猜到的数的最大值#了解二分查找就能容易理解#知识点二分查找#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int math(int n){ int sum =1; for(int i=1;i<=n;i++)原创 2021-01-31 19:25:02 · 134 阅读 · 0 评论 -
航电oj:Palindrome
**航电oj:Palindrome**#题目描述#给你一列字符 问要加多少个 变成回文列 (从前往后 从后往前 一样的)#转化为求最大公共子序列#知识点动态规划#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char a[5001],b[5001];int move[2][5001];//. 奇数 与偶数 分别是不同的两条列int n;原创 2021-01-24 20:04:00 · 114 阅读 · 0 评论 -
航电oj:Error Correction
**航电oj:Error Correction**#题目描述#给你数N 再给你个NN的方块 看能不能改一个数来使方块横竖都是偶数#横出现一个 横 出现一个 两个是交叉的就还能改 其余不能改*#知识点数组#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;int data[100][100];int main(){ whi原创 2021-01-24 19:56:50 · 178 阅读 · 0 评论 -
航电oj:Stamps
**航电oj:Stamps**#题目描述#给你 需求量 各个盆友有的量 问要想多少个盆友借票 (尽量少的)#不要忘了要按规定样式输出 盆友的票数可以 排序 或者 哈希#知识点哈希 排序#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int t;int n;int num;int stamperson[10005];int main原创 2021-01-24 19:46:35 · 91 阅读 · 0 评论 -
航电oj:Integer Inquiry
**航电oj:Integer Inquiry**#题目描述#给你很多超大的数 求总数 加法#肯定不能用数据类型存下 要进行字符 数字的变化#知识点大数运算#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char str[105];char data[105];int database[105];int main(){ me原创 2021-01-24 19:39:25 · 122 阅读 · 0 评论 -
航电oj:Longest Ordered Subsequence
**航电oj:Longest Ordered Subsequence**#题目描述#给你数N 和N个数 求最长顺序数列的长度#动态规划 答案在变化的过程中#知识点动态规划#代码#include<cstring>#include<algorithm>using namespace std;int n;int ans[1005];int data[1005];int maxx(int a,int b){ return a>b?a:b;}原创 2021-01-24 19:32:57 · 89 阅读 · 0 评论 -
航电oj:WERTYU
**航电oj:WERTYU**#题目描述#给你串字符 要你把它翻译为键盘左侧的字符 输出#打个表 对照着翻译 注意特殊情况#知识点打表#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char data[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";//两个/是因为要转义int原创 2021-01-24 19:25:17 · 184 阅读 · 0 评论 -
航电oj:Bank Interest
**航电oj:Bank Interest**#题目描述#给你利率 总金 年数 求本息和#就嗯算就行#知识点小心谨慎#代码#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int R,M,Y;**int main()**{ scanf("%d%d%d",&R,&M,&原创 2021-01-17 20:49:52 · 124 阅读 · 0 评论 -
航电oj:Who‘s in the Middle
**航电oj:Who’s in the Middle**#题目描述#给你一大堆数 求中位数#可以将数据排序 也可以用哈希的方式 我用的是哈希#知识点排序 哈希#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int t,n;int milkcow[1000005];//奶量为x的奶牛的数量int main(){ memset(mil原创 2021-01-17 20:42:53 · 166 阅读 · 0 评论 -
航电oj:Goldbach‘s Conjecture
**航电oj:Goldbach’s Conjecture**#题目描述#给你数 要你输出 其由另外两个相差最大的奇素数的组成方式#知道求素数就好解决#知识点求素数#代码#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int n;int prime[1000005];void isprime()//原创 2021-01-17 20:36:39 · 118 阅读 · 0 评论 -
航电oj:IP Address
**航电oj:IP Address**#题目描述#给你n个字符串 转换为n个IP地址#一个一个的处理 8个一分#知识点灵活运用#代码#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int data[9]={0,128,64,32,16,8,4,2,1};//便于计算int ans[5];char原创 2021-01-17 20:29:51 · 110 阅读 · 0 评论 -
航电oj:No Brainer
**航电oj:No Brainer**#题目描述#给你一个数n 在给你n组数据 一组两个前面大于后面 和后面大于前面输出不同的东西#知识点比较大小?#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int t;int n,m;int main(){ scanf("%d",&t); while(t--) {原创 2021-01-17 20:20:30 · 107 阅读 · 0 评论 -
航电oj:Red and Black
**航电oj:Red and Black**#题目描述#给你一个图,和起点,求出人能到达的格子的总数#dfs 求板子题好用 这个dfs 还不用退回#知识点dfs算法#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char map[22][22];//原数据数组int vis[22][22];//标记数组 是否走到过int move[4][2原创 2021-01-17 20:13:19 · 155 阅读 · 0 评论 -
航电oj:All in Allb
**航电oj:All in All**#题目描述#给你两个字符串,让你确定前面的那个是后面那个的字串吗#用后面的长度来循环,看能否遍历完前面的那个串#知识点遍历#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char line1[100005],line2[100005];int main(){ while(scanf("%s%s"原创 2021-01-17 10:49:02 · 158 阅读 · 0 评论 -
航电oj:Combinations
**航电oj:Combinations**#题目描述#给你两个数,要你求出给定算式的值#因为数据可能会很多很大,所以要减小运算过程中的中间值的大小#知识点大数运算#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int data[101];int n,m;int flag1,flag2;int main(){ memset(dat原创 2021-01-17 10:38:25 · 160 阅读 · 1 评论 -
航电oj:The 3n + 1 problem
**航电oj:The 3n + 1 problem**#题目描述#给你许多数,两两一对,让你求在这两数之间的所有数中(包括两端)运行提供函数循环循环次数的最大值#还以为要用动规,但是想不出来,就暴力算了,结果能过 (⊙﹏⊙)#知识点递归?#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,temp,math1,math2;int原创 2021-01-17 09:53:15 · 77 阅读 · 0 评论 -
航电oj:The Triangle
**航电oj:The Triangle**#题目描述#给你1个数n 再给你n层数 构成一个三角型 找到一条和最大的路 输出这个和的值 (可以从左下或右下两个方向走)倒着看可能好理解一些 ,反方向 将数加回去 每个数的位置都要是求得的值的最大值 倒推倒最后 起点的位置上的值就所求值#知识点动态规划#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;原创 2021-01-16 21:22:37 · 210 阅读 · 0 评论 -
航电oj:To the Max
**航电oj:To the Max**#题目描述#给你一个n为边的正方形,要你找到这个正方形块中,矩形块数据中的数据和最大的数怎么想都不可能是暴力法能够过得 用动态规划用数组存上列的和 再每一列的拼接成块#知识点动态规化#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int data[101][101];int moveplan[101]原创 2021-01-16 21:06:54 · 240 阅读 · 0 评论 -
航电oj:Anniversary Cake
**航电oj:Anniversary Cake**#题目描述#给你n个数据,每个数据中有盒子边长,小蛋糕数,每个小蛋糕的边长把题看成将小蛋糕塞进盒子里#知识点dfs算法#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int t,n,boxlen;//数据次数,小蛋糕数,盒子长度int cakenum[11],len[41];//cakenum原创 2021-01-16 20:36:00 · 152 阅读 · 0 评论 -
航电oj:Financial Management
航电oj:Financial Management#题目描述#给你12个数要你求平均值#知识点double数据类型#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ double num,sum; sum =0; for(int i=1;i<=12;i++) { scanf原创 2021-01-16 20:23:04 · 106 阅读 · 0 评论 -
航电oj:汉字统计
航电oj:汉字统计#题目描述#先给你一个数n,再给你n段文本,输出每段文本中的汉字的个数。#知识点1.汉字的机内码#代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main()//{ int t; while(scanf("%d",&t)!=EOF) { getchar();///!!!! 要吃原创 2021-01-16 20:10:30 · 143 阅读 · 0 评论