UVA
你的你的都是你的
这个作者很懒,什么都没留下…
展开
-
4 Values whose Sum is 0 UVA - 1152
题目链接:点击打开链接题意: 给你四个数组,每个数组抽出一个数,看能形成多少组 a+b+c+d=0,输出组数;题解: 先求出 a 数组和 b 数组中每个元素的和,之后判断在 c 数组和 d 数组有多少组 -(c+d)=a+b; 运用upper_bound()和lower_bound() ; 详情看:点击打开链接;#includ原创 2017-08-27 11:31:29 · 312 阅读 · 0 评论 -
1363 - Joseph's Problem
1363 - Joseph's Problem点击打开链接#include #include #include #include #include typedef long long ll; using namespace std; ll cal(ll n, ll k) { ll ans = 0; if (n > k)原创 2017-04-26 22:34:17 · 362 阅读 · 0 评论 -
11582 - Colossal Fibonacci Numbers!
斐波那契对于一个正整数n,我们求Fib数模n的循环节的长度的方法如下: (1)把n素因子分解,即 uva11582 Colossal Fibonacci Numbers!" style="margin:0px; padding:0px; border:0px none; list-style:none; max-width:100%"> (2)分别原创 2017-04-24 23:26:39 · 256 阅读 · 0 评论 -
1649 - Binomial coefficients
Sample Input2215Sample Output1(2,1)4(6,2) (6,4) (15,1) (15,14)点击打开链接人家的:#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #incl原创 2017-04-23 22:40:44 · 246 阅读 · 0 评论 -
1210 - Sum of Consecutive Prime Numbers
紫书上习题10-6;#include #include #include using namespace std;int p=0; int vis[10010]; int a[10010];int sushu(){ memset(vis,0,10010); for(int i=2;i<=10010;i++){ if(vis[i]==0){原创 2017-04-21 20:49:15 · 325 阅读 · 0 评论 -
1644 - Prime Gap
紫书上习题10-4;直接附上代码:#include #include #include using namespace std;int p=0;int a[100005],vis[1299800];int Set_sushu(){ memset(vis,0,1299800); for(int i=2;i<=1299709;i++){ if(vis[i]原创 2017-04-21 18:50:47 · 208 阅读 · 0 评论 -
11040 - Add bricks in the wall
紫书上习题10-1;我的方法是先求出最后一行的数字,然后根据题目所说,由最后一行求出上面的所有数字;#include #include #include using namespace std;int a[9][9];int main(){ int n; cin>>n; while(n--){ for(int i=0;i<9;i+=2)原创 2017-04-21 18:03:34 · 285 阅读 · 0 评论 -
12545 - Bits Equalizer
自己写的不太对,抄个别人的,感觉自己好失败:#include#include#include#include#includeusing namespace std;const int MAXN = 111;char s[MAXN], t[MAXN];int main(){ int k; scanf("%d", &k); for( int kase = 1;原创 2017-04-20 22:25:18 · 265 阅读 · 0 评论 -
1610 - Party Games
紫书上习题8-2;将字符串由小到大排列,找出中间两个;1,可以根据小的和大的对比求出(老是wrong) 2,可以根据for循环组成一个字符串然后判断;#include#include#include#include#includeusing namespace std;const int N = 1005;string str[N];string res;int n;in原创 2017-04-19 23:08:49 · 226 阅读 · 0 评论 -
1149 - Bin Packing
UVA-1149: 题目大意:给定n个物品的重量,无限个容量为m的箱子,每个箱子最多装两个物品,要把所有的物品都装下,最少需要多少个箱子 题目分析:贪心策略:每次将最重和最轻的两个物品放到一个箱子里,如果装不下,则将最重的单独装到一个箱子里。 点击打开链接#include using namespace std;int main(){ int n;原创 2017-04-19 17:51:32 · 198 阅读 · 0 评论 -
10905 - Children's Game
我在UVA上找了一道简单贪心算法题,看完大神的题解,我建议使用字符串来做这道题;知识点:字符串中两个string字符串相加会形成一条由这两个字符串中的元素组成的新的字符串;例如: #include #include #include using namespace std ; int原创 2017-04-06 16:56:07 · 415 阅读 · 0 评论 -
572 - Oil Deposits
dfs连通快;紫书上6-12;#include#include#includeusing namespace std;const int maxn = 100 + 5; char M[maxn][maxn];int idx[maxn][maxn];int m, n; void dfs(int r, int c, int id){ if (r = n || c >=原创 2017-04-19 16:56:34 · 165 阅读 · 0 评论 -
10539 - Almost Prime Numbers
10539 - Almost Prime Numbers点击打开链接#include #define INF 1000000using namespace std;bool vis[1000010];long long primes[78500];vector ans;long long find(long long n,int l,int r){ int m原创 2017-04-26 23:06:49 · 249 阅读 · 0 评论 -
213 - Message Decoding
题目链接:点击打开链接#includeusing namespace std;int code[8][1<<8];int readchar(){//跨行读取编码串 while(1){ int ch=getchar(); if(ch!='\r'&&ch!='\n') return ch; }}int readin原创 2017-04-27 21:55:09 · 203 阅读 · 0 评论 -
512 - Spreadsheet Tracking
题目链接:点击打开链接#include #include #include #define maxn 10000 struct opera{ char ope_1[10]; int ope_2[10]; }opera[maxn]; int ope(int &x1,int &y1,int n1) { for(int i=原创 2017-04-27 21:59:01 · 232 阅读 · 0 评论 -
Maze Exploration UVA - 784 (DFS)
题目链接:点击打开链接题意: 把与 * 相连的空格改成 # ,X为墙,即无法通过;题解: 简单DFS,没有什么难度,就是输入有点坑,至今都没有弄出来咋错的;AC代码: #include #include #include #include using namespace std;char mmap[100][100];int n;int dx[原创 2017-08-24 19:55:49 · 205 阅读 · 0 评论 -
E - Morse Mismatches UVA - 508 (STL,模糊暴力)
题目链接:点击打开链接题意:给你26个字母以及0~9对应的摩斯密码,再给你几个字符串,输入摩斯密码,找到对应的字符串输出; 题解: 1,使用 map 容器将输入的东西连接起来。 2,结果出现 ! 时,存在多组字符串与求出的摩斯密码对应,输出的应是字典排序中最小的那个再加上’ !‘ 。 3,结果出现 ? 时,输入的摩斯密原创 2017-07-28 19:40:21 · 293 阅读 · 0 评论 -
C - Probability|Given UVA - 11181 (数学概率)
题目链接:点击打开链接题意:n 个人去购物,只有 r 个人买东西,而剩下的 n - r 个人不买东西,给出每个人可能买东西的概率,让求每个人在那 r 个人中的概率; 概率公式:P(A | B)= P(AB)/ P(B) ;P(A | B)指的是在A 发生的情况下,B 发生的概率; P(AB) 指的是A 和B 同时发生的概率,P(B)指B 发生的概率; 在原创 2017-07-27 13:25:57 · 371 阅读 · 0 评论 -
The Trip, 2007 UVA - 11100(贪心)
题目链接:点击打开链接题意: 有 n 个包,大包可以装一个小包,问这些包能组成的最少包数;题解: 找出 n 个数中出现最多次数的数 k,这个数就是一个基数,即能形成的最少包数(想想就明白了),从小到大排序,每隔 k 个数输出一次,输出的便是答案; 例如: 1122334444556666 可以分成 1346,1346,2原创 2017-08-19 10:15:14 · 565 阅读 · 0 评论 -
Sumsets UVA - 10125(二分法)
题目链接:点击打开链接题意:给出 n 个数字,找出其中四个使得形成 a+b+c=d 的形式,求出最大的 d ,若不存在,则输出 no solution ;题解: 按正常方法四个循环可得出,但肯定超时,所以需要换其他方法,可以先求出d - c 的值,然后按照二分求出 a + b的值,进而得出结果;#include#include#include#incl原创 2017-08-18 19:51:52 · 444 阅读 · 0 评论 -
Solve It UVA - 10341(二分法)
题目链接:点击打开链接题意: 给出一个方程式,求出该方程式的解;题解: 二分法,有题可知该式为递减的,所以分析当 x =0和x = 1时的值,可以得出是否有解,如果有解,就运用二分,注意这里不能用 L#include#include#include#include#include#includeusing namespace std;#define原创 2017-08-18 17:04:08 · 224 阅读 · 0 评论 -
Pie UVA - 12097 (二分法)
题目链接:点击打开链接题意:给你 n 块蛋糕,m 个人,求出 m+1 个人能分得的蛋糕最大为多少(分的大小一样)题解: 运用二分法,求出 sum / mid 的值,使这个值不小于m+1 ;#include#include#include#include#include#includeusing namespace std;int main(){原创 2017-08-18 16:09:29 · 372 阅读 · 0 评论 -
C - Corporative Network UVA - 1329 (并查集)
题目链接:点击打开链接#include#include#include#include#include#includeusing namespace std;int n;int a[100000+100];int b[100000+100];int init(){ for(int i=0;i<=n;i++) a[i]=i;}int fid(int x){原创 2017-08-18 14:47:50 · 256 阅读 · 0 评论 -
F - ENimEN UVA - 11892 (推理)
题目链接:点击打开链接题目大意: 给定 n 堆石子,让两个人依次取,后者只能在前者取过的那堆石子上取,取得最后一枚石子的人为胜利者; 不管放多少石子,后者只有在 n 是偶数且每堆石子只有一枚是赢得胜利,否则就是前者胜利;#include #include #include原创 2017-07-26 20:49:53 · 257 阅读 · 0 评论 -
D - Help is needed for Dexter UVA - 11384 (规律题)
题目链接:点击打开链接题意较简单,就是给你一个数 n ,然后1~n 的数最少需要多少下可以全部为0,减的数字任意;从 1 开始往后手算,可以发现规律,1 需要减一下,2和3需要减两下,4,5,6,7需要减三下,8,9,10,11,12,13,14,15需要减四下,以此类推。规律便出来了。#include #include #include #include #inclu原创 2017-07-25 09:39:24 · 265 阅读 · 0 评论 -
508 - Morse Mismatches
题目链接:点击打开链接#include using namespace std; const int maxdif = 10000; map morse; map dict; void encode(string &word) { string res; for(int i = 0; i <= word.size(); i++)原创 2017-04-27 22:25:45 · 193 阅读 · 0 评论 -
1647 - Computer Transformation
题目链接:点击打开链接#include #include using namespace std;int A[1005][150], B[1005][150];int main(){ A[0][0] = A[1][0] = 1; for(int i = 2; i <= 1000; i++) for(int j = 0; j < 135; j++)原创 2017-05-01 10:59:10 · 204 阅读 · 0 评论 -
814 - The Letter Carrier's Rounds
题目链接:点击打开链接#include #include #include #include #include #include using namespace std; void parse_address(string const s, string& user, string& mta) { int t = s.find('原创 2017-04-29 10:03:47 · 208 阅读 · 0 评论 -
400 - Unix ls
题目链接:点击打开链接紫书例题5-8;#include using namespace std;const int maxn=100+5;const int maxcol=60;string name[maxn];void print(const string &s,int len,char str){ cout<<s; for(int i=0;i<len-s.原创 2017-04-28 21:36:20 · 214 阅读 · 0 评论 -
10340 - All in All
紫书上习题3-9;这道题我是先输入两个string字符串 s1,s2,若s1的长度大于s2的长度,直接输出No,否则循环s2,判断s2里的字符是否能形成s1;#include #include #include #include #include #include using namespace std;int main(){ string s1,s2; whi原创 2017-04-09 22:46:34 · 283 阅读 · 0 评论 -
1588 - Kickdown
啥都别说,做了两个小时,提交老是错,实在是改不出了,贴上我的代码和正确的,看看到底咋错的?我的:#include #include #include #include #include #include using namespace std;int main(){ string s1,s2; while(cin>>s1>>s2){ int原创 2017-04-09 21:23:34 · 200 阅读 · 0 评论 -
1587 - Box
紫书上习题3-10;,我做这道题的思路是:给你6个矩阵的长和宽,先在结构体中定义长和宽,然后让这6个结构体全排列(长度由小到大,长度相同的话,让宽由小到大排列),排列完后,判断相邻的两个结构体是否一致,如果不一致就输出 IMPOSSINBLE ,如果全部一致,再判断0,2,4或者1,3,5这三个结构体中的数据,这时0,1,2,3中的长肯定一致,判断0中的宽和5中的长以及3中的宽和5中的宽是不是一样原创 2017-04-09 16:51:16 · 207 阅读 · 0 评论 -
455 - Periodic Strings
紫书上习题3-4,这道题我用了两种方法;一种是普通方法,另一种是用的 substr ,substr函数是截取 string 字符串上一段字符,然后如果用字符串的除以截取字符的长度求出 n ,然后如果 n 段截取字符能组成 string 字符串,则该截取字符的长度为周期;第一种方法:#include #include #include #include #include #inc原创 2017-04-09 11:51:23 · 281 阅读 · 0 评论 -
1225 - Digit Counting
紫书上习题3-3,这道题经过 for 循环对1到 n 之间的数判断,然后存在数组(范围0—9)里,每分析一个数,数组结果加一,最后输出数组就行;#include #include #include #include #include #include using namespace std;int main(){ int n,m;int a[15]; while原创 2017-04-09 00:14:55 · 276 阅读 · 0 评论 -
1586 - Molar mass
紫书上习题3-2,这道题我用的普通的 for 循环做的,逐个判断字符,若该字符为 C , H , O , N ,则判断该字符的后两位是否为数字,是数字就乘以该字符的原子量,最后求和;v#include #include #include #include #include #include using namespace std;int main(){ char C,原创 2017-04-08 23:31:23 · 226 阅读 · 0 评论 -
1583 - Digit Generator
紫书上的题,这道题不能用普通的 for 循环做,否则肯定超时,正如紫书上的说,要先打表,先把所有的结果存起来,然后在主函数中直接运用,这样可以减少运行时间;#include #include #include #include #include using namespace std;#define max 100005int sum[max];int main(){原创 2017-04-08 22:29:06 · 182 阅读 · 0 评论 -
524 - Prime Ring Problem
紫书上的题,P194页,这道题最精华的部分书上已经写好了,这里不再多说,提交代码时注意格式;#include #include #include #include #include #include using namespace std;int A[20],vis[20],n;int dec(int n){ if(n<2) return false; else{原创 2017-04-08 13:13:33 · 233 阅读 · 0 评论 -
673 - Parentheses Balance
这道题真坑,咋改都不对,复制我的代码和标准答案,找不同,看到底哪错了;我的代码;#include #include #include #include #include using namespace std;int main(){ int n; cin>>n;getchar(); while(n--){ string s; st原创 2017-04-08 08:48:12 · 376 阅读 · 1 评论 -
725 - Division
这道题做了两个小时,终于搞定,这道题吧,主要控制除数的范围(我用的范围是1000到99999,然后又分1000到9999和10000到99999两种情况讨论,个人感觉好麻烦),然后用输入的数和除数相乘求出第一个数,最后注意输出格式(我在这个地方改了差不多一个小时,坑死我了);#include #include #include #include using namespace std;原创 2017-04-07 23:12:48 · 354 阅读 · 0 评论 -
11059 - Maximum Product
这也是紫书上的一道暴力破解题, 没别的方法只有 for 循环爆破;#include #include #include using namespace std ;int main(){ int n,p=0,a[100]; while(cin>>n&&!0){ long long ma=0;p++; for(int i=0;i<n;i++原创 2017-04-07 21:09:17 · 376 阅读 · 0 评论