![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UVA
huang balloon
这个作者很懒,什么都没留下…
展开
-
UVA 10098 Generating Fast
题目描述输出全排列可以利用stl中的next_permutation或者手写排序#include<iostream>#include<cstring>#include<algorithm>using namespace std;char c[105];int l;int get(){ int i=l-1; while(i>0&&c[i-1]>=c[i]) { i--; } if(!i) return 0;原创 2021-02-02 15:16:05 · 74 阅读 · 0 评论 -
UVA 10168 Summation of Four Primes
题目描述分析Euler证明的经典定理之一是素数在数量上是无限的。但每个数字是否可以表示成4个 素数的总和当 n < 8 时,一定不存在合法答案(因为连和最小的 2 2 2 2都表示不出来).当 n > 8 时,因为要分成4个素数,所以可以先分出两个素数,使剩下的和为一个偶数,那么按照哥德巴赫猜想,剩下的一定能够分成两个素数,所以分类讨论如下:(1)当n为偶数时,先分出两个2,剩下个偶数,分解得解。(2)当n为奇数时,先分出2 和 3,剩下个偶数,分解得解。#include&l原创 2021-02-02 11:11:45 · 89 阅读 · 0 评论 -
*UVA 147 Dollars
题目描述完全背包问题首先把所有的硬币都转换成美分设DP[i][v]为v分钱,选了前i种钱的方法总数其实对于第i种货币我们有选和不选两种状态所以可以很轻松的得到状态转移方程:dp[i][v]=dp[i-1][v]+dp[i][v-a[j]]; 但是我们可以很轻松的注意到i这一维是可以省去的所以总的状态方程就为:dp[v]+=dp[v-a[j]];#include<cstdio>long long a[6005];int coin[]={1,2,4,10,20,40,100原创 2021-02-01 21:00:38 · 123 阅读 · 3 评论 -
UVA 10474 大理石在哪儿 Where is the Marble?
题目描述利用STL中的sort( )和lower_bound( )直接实现,函数**lower_bound( )**返回的是被查序列中第一个大于等于查找值的指针#include<iostream>#include<algorithm>using namespace std;const int maxn=10000;int main(){ int n,q,x,a[maxn],kase=0; while(scanf("%d%d",&n,&q原创 2021-01-26 16:46:19 · 97 阅读 · 0 评论 -
UVA 630 Anagrams (II)
题目描述对于每一个输入的单词进行排序,存放到mulrimap中,multimap可以一个键对应多个值对输入的单词也进行排序,在map中找是否存在#include<iostream>#include<map>#include<algorithm>using namespace std;int main(){ int t,n; string temp; cin>>t; while(t--){ multimap<string,原创 2021-01-26 16:42:06 · 215 阅读 · 0 评论 -
UVA 10815 安迪的第一个字典 Andy‘s First Dictionary
题目描述把每个单词转换为小写,放进set中就行注意输入,stringstream默认空格会直接分词,#include<set>#include<string>#include<iostream>#include<sstream>using namespace std;set<string> dict;int main(){ string s,buf; while(cin>>s){原创 2021-01-26 15:42:13 · 85 阅读 · 0 评论 -
UVA 141 The Spot Game
题目描述运用一个结构体,把每种棋盘状态存到一个set中,对每次输入后的棋盘状态进行比较,判断是否出现过或者对输入的棋盘进行旋转也可以由于set的具体实现采用了红黑树的平衡二叉树的数据结构,所以,set中的元素就有大小比较。重载函数bool operator < (const spot& a, const spot& b),以比较两个结构的大小,便于在set中插入和查找元素。#include<set>#include<cstring>#incl原创 2021-01-26 10:01:30 · 117 阅读 · 0 评论 -
UVA 10887 Concatenation of Languages
题目描述本题目较为简单,利用set存储两种语言的拼接即可注意输入可能有空格#include<set>#include<cstring>#include<iostream>using namespace std;string str1[1505];string str2[1505];int main(){ int cas=1; set<string> s; int t; cin>>t; while(t--){ int原创 2021-01-26 08:45:03 · 73 阅读 · 0 评论 -
UVA 156 反片语 Ananagrams
题目描述把每个单词先转换为小写,进行排序,记录出现的次数,输出出现次数只有一次的单词map记录单词出现的次数#include<string>#include<iostream>#include<sstream>#include<vector>#include<algorithm>#include<map>using namespace std;map<string,int> cnt;vector&l原创 2021-01-26 08:29:24 · 111 阅读 · 0 评论 -
UVA 299 Train Swapping
题目描述题意其实很简单,就是求冒泡排序的交换次数#include<algorithm>#include<iostream>using namespace std;int arr[55];int num=0;void bubble_sort(int arr[],int len){ for(int i=0;i<len-1;i++) for(int j=0;j<len-1-i;j++) if(arr[j]>arr[j+1]){ swap(arr[j原创 2021-01-25 08:55:35 · 99 阅读 · 0 评论 -
UVA 10056 What is the Probability?
题目描述概率问题#include<iostream>#include<cmath>using namespace std;int main(){ int s; cin>>s; int n; double p; int i; while(s--){ cin>>n>>p>>i; double pro=(p*pow(1-p,i-1))/(1-pow(1-p,n)); printf("%.4lf\n",原创 2021-01-21 11:12:53 · 109 阅读 · 0 评论 -
*UVA 10407 Simple division
题目描述此题是欧几里得算法的一个应用两个数除以一个数余数相同,则这两个数的差一定是这个除数的倍数先求差分数组,再求最大公约数#include<iostream>#include<cmath>using namespace std;int a[100005],b[100005];int gcd(int a,int b){ return b?gcd(b,a%b):a;}int main(){ int n; while(cin>>n){ int原创 2021-01-21 10:17:12 · 295 阅读 · 0 评论 -
UVA 10209 Is This Integration ?
题目描述数学问题,利用初等几何知识解决#include<cstdio>#include<cmath>using namespace std;#define pi 3.141592653589793int main(){ double a; while(scanf("%lf",&a)!=EOF){ printf("%.3lf %.3lf %.3lf\n",a*a*(1-sqrt(3.0)+pi/3),a*a*(pi/3+2*sqrt(3.0)-4),a原创 2021-01-21 08:51:08 · 269 阅读 · 0 评论 -
UVA 10167 Birthday Cake
题目描述此题采用枚举的方法,遍历所有的直线,找到符合条件的直线即可#include<iostream>using namespace std;struct point{ int x; int y;}; point p[105];int main(){ int n; int A,B; bool flag; while(cin>>n&&n){ for(int i=0;i<2*n;i++){ cin>>p[i].x&原创 2021-01-21 08:16:29 · 267 阅读 · 2 评论 -
*UVA 11988 破损的键盘 Broken Keyboard (a.k.a. Beiju Text)
题目描述用数组模拟链表,对于每一个字符存一个next值表示下一个元素的下标对于字符[,将当前下标改为0对于字符],将当前下标改为last就是我们存的最后的下标对于其他字符,更新next即可#include <bits/stdc++.h>using namespace std;char s[100005];int last,now,nxt[100005];int main(){ while(~scanf("%s",s+1)){ int n=strlen(原创 2021-01-20 19:05:25 · 139 阅读 · 0 评论 -
UVA 10242 Fourth Point !!
题目描述此题较为简单,给出平行四边形三个点坐标,求第四个点坐标#include<iostream>using namespace std;typedef struct{ double x,y;}point;int main(){ point a,b,c,d,e; while(~scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y)) { ~scanf("%lf%lf%lf%lf",&c.原创 2021-01-20 11:22:14 · 197 阅读 · 0 评论 -
UVA 10221 Satellites
题目描述简单的数学问题,采用公式即可解决注意:角度可能超过180#define _USE_MATH_DEFINES#include<iostream>#include<cmath>using namespace std;const double r=6440;int main(){ double dis,angle; char s; while(cin>>dis>>angle>>s>>s>原创 2021-01-20 11:00:12 · 170 阅读 · 0 评论 -
*UVA 10994 Simple Addition
题目描述每一轮求出[p, q]区间内数字的个位数的和,并计入总和;再将[p, q]区间内个位数为0的数除以10,产生新区间,进入下一轮,再求新区间内数字的个位数的和,并计入总和,而个位数为0的数除以10,产生新区间;以此类推;直到[p, q]区间内的数只有个位数此题有一定难度,需要多多思考#include<iostream>using namespace std;#define ll long longll sum;ll f(ll x){ if(x==0) return 0;原创 2021-01-19 17:54:18 · 149 阅读 · 2 评论 -
UVA 10323 Factorial! You Must be Kidding!!!
题目描述此题题意是重新规定了整数的范围,在计算时需要注意数的范围,否则会tle#include<iostream>using namespace std;int main(){ int n; while(cin>>n){ if(n<0){ if(n%2==0) cout<<"Underflow!"<<endl; else cout<<"Overflow!"<<endl; } el原创 2021-01-19 17:38:22 · 218 阅读 · 0 评论 -
UVA 492 Pig-Latin
题目描述字符串处理问题,也很简单需要注意字符串的读取 用C语言getchar读取一直不对。。。。#include<iostream>#include<string>#include<set>using namespace std;bool vow(char x) { x=toupper(x); if(x=='A'||x=='E'||x=='I'||x=='O'||x=='U')return 1; return 0;} int m原创 2021-01-19 17:22:55 · 211 阅读 · 0 评论