Basic Practice
哈希表扁豆
此人不懒,但什么都没写
展开
-
UVA120 煎饼 Stacks of Flapjacks
不需要考虑效率的烙饼排序,不难发现我们可以将任意位置的煎饼在不影响下面的情况下翻到最上面,同时可以将最上面的煎饼翻到任意位置;因此可以参考选择排序,每次找一个最大的先翻到最上面,然后再将其翻到正确的位置。 #include<iostream> #include<algorithm> using namespace std; int a[35],x,cnt,b[35],ans[35],num,tmp,d[35]; char c; void solve() { for(int i=.原创 2021-03-29 12:04:50 · 125 阅读 · 0 评论 -
UVA10976 分数拆分 Fractions Again?!
从2k到k枚举x,通过(k*x)%(x-k)==0判断当前x是否可以。 #include<iostream> #include<cstdio> #include<cstdlib> using namespace std; int k,x,y,ans,a[10005],b[10005]; int main() { while(cin>>k) { for(x=2*k;x>k;x--) if((k*x)%(x-k)==0) { a[+.原创 2021-03-13 08:38:49 · 86 阅读 · 0 评论 -
UVA11059 最大乘积 Maximum Product
入门题,别忘清maxn和注释freopen。 #include<iostream> #include<algorithm> #include<cstdlib> using namespace std; long long n,a[20],maxn,nw,num; int main() { // freopen("1.txt","w",stdout); while(cin>>n) { maxn=0; for(int i=1;i<=n;i++.原创 2021-03-12 23:58:48 · 96 阅读 · 0 评论 -
UVA725 除法 Division
先把符合条件的单个数筛出来,总共三万多; 对于给定的n,在筛出来的数中从小到大枚举除数,直到n*当前数>=筛出来的最大数; 在满足前面的条件的基础上进一步判断能否组成排列。 代码又臭又长! #include<iostream> #include<cstdlib> #include<cstdio> using namespace std; bool ok[100005],a[10],e; int q[100005],pos,n,num,aa[10]; void .原创 2021-03-12 23:35:58 · 182 阅读 · 0 评论 -
UVA1600 巡逻机器人 Patrol Robot
BFS,注意当前跨越的次数也要加进位置状态里。 #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<cstdlib> using namespace std; int t,m,n,mst,net[25][25],x[4]={1,-1,0,0},y[4]={0,0,1,-1}; bool inq[25][25][25]; struct no.原创 2021-03-12 22:27:24 · 136 阅读 · 0 评论 -
UVA712 S树 S-Trees
无需建树,直接定位; 变量行无用; 输入有几个问题:cin+getline的组合会导致用getline输入的字符串丢失第一位,getline+getline第二个getline输入的字符串会丢失一位,输入的两行字符串第二个字符串可以用scanf读入。 另外,getline而入一行后不需要用getchar()读掉末尾的换行符,否则下一行字符串还是会丢失一位,可以理解为getline读入了换行符且作为了结束标志。 #include<iostream> #include<cstdio>.原创 2021-03-12 18:47:57 · 156 阅读 · 0 评论 -
UVA673 平衡的括号 Parentheses Balance
栈处理,注意审题以及字符串读取的细节。 #include<iostream> #include<cstring> #include<cstdlib> using namespace std; int n,ans,a[105],pos; char s[100005]; int main() { cin>>n; getchar(); while(n--) { gets(s); int len=strlen(s); for(int i=0;i.原创 2021-03-11 22:02:55 · 97 阅读 · 0 评论 -
UVA439 骑士的移动 Knight Moves
BFS #include <iostream> #include <cstdio> #include <queue> #include <cstring> using namespace std; int x[8]={-2,-2,-1,-1,1,1,2,2},y[8]={-1,1,-2,2,2,- 2,1,-1}; struct pos{ int x,y,n; }; char a,b,c,d; bool inq[100][100]; int ans.原创 2021-03-11 11:22:28 · 80 阅读 · 0 评论 -
UVA12166 修改天平 Equilibrium Mobile
确定了一个叶子结点的质量,整棵树的质量就确定了,统计每个叶子结点所能确定的树的质量x,答案为叶子结点树-出现最多的x的次数。 #include<iostream> #include<cstdio> #include<map> #include<cstring> #include<cstdlib> using namespace std; long long n,ans,pos,num=1,maxn,nd; string a; map<lo.原创 2021-03-04 22:35:49 · 86 阅读 · 0 评论 -
UVA536 二叉树重建 Tree Recovery
根据前序和中序遍历递归建树,输出后序遍历。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> using namespace std; char tr1[35],tr2[35],tr3[35]; int num=1,ans; struct node{ int l,r; char a; }n[305]; int build(int l1,int r1,int .原创 2021-03-04 19:55:21 · 134 阅读 · 0 评论 -
UVA572 油田 Oil Deposits
入门级bfs求连通块 两个技巧:一重循环遍历至四周;打标记; #include <iostream> #include <cstdio> #include <queue> #include <cstdlib> using namespace std; int m,n,ans,xx[8]={-1,-1,-1,0,0,1,1,1},yy[8]={-1,0,1,1,-1,1,-1,0}; struct node{ int x,y; }; char oil.原创 2021-03-04 00:13:08 · 115 阅读 · 1 评论 -
UVA839 天平 Not so Mobile
递归入门练习题 天平的总质量作为函数的返回值。 #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; int n,ans,tp; int getans() { int a,b,c,d; cin>>a>>b>>c>>d; if(!a) a=getans(); if(!c) c.原创 2021-03-03 23:49:18 · 75 阅读 · 0 评论 -
UVA297 Quadtrees
题目中给出的四分树一定是“满叶”的,因此知道了先序遍历就能确定这棵树,边读入边建图即可; 统计答案时同时遍历两棵树; 注意在计算答案的过程中可能会出现一颗树的当前节点已经不存在的情况,同样要作为边界处理; #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; const int maxn=32*32; struct node{ int a,b,c,d; .原创 2021-03-03 18:01:01 · 106 阅读 · 1 评论 -
UVA548 Tree
可以根据一颗树的后序遍历确定树的根,进而根据中序遍历确定左右子树; 注意递归的思想,实现可以参考线段树的建树思路,任一子树在遍历中是连续区间,用l,r表示即可。 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> using namespace std; int ls[10005],rs[10005],inod[1.原创 2021-03-01 23:54:16 · 82 阅读 · 0 评论 -
UVA 122 Trees on the level
注意not complete时条件的表达。 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <cstdlib> using namespace std; struct node{ int l,r,p; }n[305]; int num=1,ans[305],pan; char str[305]; void mem() {.原创 2021-03-01 21:17:52 · 92 阅读 · 0 评论 -
UVA 11584 Partitioning by Palindromes
d[i]表示从1~i位最小回文子串数(下标按从1开始),d[i]=min(d[i],d[j]+1|j+1到i为回文串)。 正确性证明:考虑添加第i位字母,有两种情况: 1.第i位自成一回文串。 2.第j+1位到第i位为一回文串。 枚举所有1、2情况即可求得d[i]。 #include<iostream> #include<cstring> using namespace std; int n,d[1005]; bool p[1005][1005]; int main() { st原创 2020-10-04 17:23:18 · 106 阅读 · 0 评论 -
UVA-489
#include<iostream> #include<cstring> using namespace std; int a,tmp1,tmp2,tmp3,ans,bol;bool j[500]; int main() { string str,ges; while(1) { cin>>a; if(a==-1) return 0; cout<<"Round"<<' '<<a<<endl; cin&原创 2020-08-23 14:42:24 · 131 阅读 · 0 评论