- 博客(174)
- 收藏
- 关注
原创 UVa 846-Steps
一道数学题,因为开始和结束的步数都是1,而且每一步只能比前一步大1,小1,或者和上一步相等。所以我从头和尾一起增加步数,所以用一个flag变量控制,第一次是从头开始,然后判断下还剩下的步数是否大于0,在从尾部增加。/************************************************************************* > File Name:
2013-05-29 09:05:36
844
原创 UVa 10894-Save Hridoy
还是采取了打表的方式。然后只要控制好输出即可/************************************************************************* > File Name: 10894.cpp > Author: Toy > Mail: ycsgldy@163.com > Created Time: 2013年05
2013-05-28 20:35:06
654
原创 UVa 10415-Eb Alto Saxophone Player
题意: 给出了每个音阶的不用手指按键,比如说先按a手指2~4 7~10按下,然后按b这时只需要松开手指10即可。最后统计每个手指按了多少次。只得注意的使这个song可能为空这时输出全为0.思路: 用flag数组记录每个手指的状态,0表示没按下,1表示按下,然后按所给的音阶一个一个去计算,方法有点笨。/*************************
2013-05-28 16:51:39
1447
原创 UVa 10260-Soundex
就是给几个字母所对应的数字,然后将数字输出,但是前后两个数字一样的情况只输出一次。/************************************************************************* > File Name: 10260.cpp > Author: Toy > Mail: ycsgldy@163.com > Cr
2013-05-28 15:19:44
821
原创 UVa 10222-Decode the Mad man
就是美个字母错打了两位,输出该字母在键盘上的前两位。#include #include #include char *s = "qwertyuiop[]asdfghjkl;'zxcvbnm,.";int main (){ //freopen ( "input.txt", "r", stdin ); //freopen ( "output.txt", "w", std
2013-05-28 13:07:11
1075
原创 UVa 10929 - You can say 11
就是模拟除法的运算,但是从奥数上可以用奇数位的和减去偶数位的和后mod11.如果是0则可以整除0,反之不能。/************************************************************************* > File Name: 10929.cpp > Author: Toy > Mail: ycsgldy@163.
2013-05-27 22:41:01
737
原创 UVa 417-Word Index
根据所给的方式每种字母的组合都对应一个固定的数值,所以我采用的打表的方式,没仔细想其他的方法。/************************************************************************* > File Name: 417.cpp > Author: Toy > Mail: ycsgldy@163.com
2013-05-27 19:37:55
1088
原创 UVa 10074 - Take the Land
这题和836一样,输入比那个简单的很多。/************************************************************************* > File Name: 10074.cpp > Author: Toy > Mail: ycsgldy@163.com > Created Time: 2013年05月2
2013-05-24 21:05:49
541
原创 UVa 836 - Largest Submatrix ( 最大01矩阵)
求所有连续1的最大和。/************************************************************************* > File Name: 836.cpp > Author: Toy > Mail: ycsgldy@163.com > Created Time: 2013年05月24日 星期五 13时3
2013-05-24 20:29:46
890
原创 UVa 108 - Maximum Sum (最大子矩阵)
/************************************************************************* > File Name: 108.cpp > Author: Toy > Mail: ycsgldy@163.com > Created Time: 2013年05月24日 星期五 12时56分02秒 ******
2013-05-24 13:19:55
643
原创 UVa 10994 - Simple Addition
数学题,范围很大,枚举一定TLE,所以就要找规律啦。求p ~ q之间数列和的差,就是求(1 ~q )-( 1 ~( p - 1))。/************************************************************************* > File Name: 10994.cpp > Author: Toy > Ma
2013-05-24 11:22:57
633
原创 UVa 10106 - Product
求两个数的的乘积import java.util.*;import java.math.*;public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code
2013-05-22 10:22:40
568
原创 UVa 424 - Integer Inquiry
求所给数的和,0代表结束。import java.util.*;import java.math.*;public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO
2013-05-22 10:07:44
473
原创 UVa 10010 - Where's Waldorf?
给一个字符组成的矩阵,在矩阵中找到要寻找的字符串,输出首字母在矩阵中的位置。只要枚举8个方向即可,代码很长,题很简单。/************************************************************************* > File Name: 10010.cpp > Author: Toy > Mail: ycs
2013-05-21 20:17:44
504
原创 UVa 10534 - Wavio Sequence
LIS 朴素算法时间是 n ^ n, 会超时,所以需要用到时间复杂度nlogn的方式。是用到的二分查找的方式。用一个栈来维护整个序列,当A[i] 大于栈顶的元素,则将A[i]放入栈顶。否则找到恰好不小于A[i]的元素的位置,用A{i]替换他,最后top就是整个序列的最长上升子序列。/***************************************************
2013-05-09 15:27:30
792
原创 UVa 825 - Walking on the Safe Side
这题的输入很坑人,和我在蓝桥杯比赛中遇到的一个题一样,每行输入不顾定的字符。这题的转移方程很好找,因为要求时间少,因此对于位置i, j 只能从左边或者上边走到,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]/*********************************************************************
2013-05-09 05:53:54
540
原创 hdu 1251统计难题
做了几道Trie了,这个题做过之后,让我对Trie又有的许多新的认识,真正的理解了插入和查询的整个过程。// File Name: hdu1251.cpp// Author: Toy// Created Time: 2013年05月08日 星期三 09时17分28秒#include #include #include #include #include #includ
2013-05-08 12:14:33
592
原创 hdu 1305 Immediate Decodability
和1671类似。// File Name: hdu1305.cpp// Author: Toy// Created Time: 2013年05月08日 星期三 07时25分58秒#include #include #include #include #include #include #include #include #include #includ
2013-05-08 08:37:49
527
原创 hdu 1671 Phone List
给N个字符串,找0~N中的一个字符串是否是其他的前缀。如果是则输出NO。反之输出YES。Trie在查找的时候需要判断节点的信息是否为1,最后一个节点不需要判断// File Name: hdu1671.cpp// Author: Toy// Created Time: 2013年05月07日 星期二 20时47分30秒#include #include #inclu
2013-05-07 22:17:37
483
原创 hdu 1247 Hat’s Words
做的第一个Trie。 #include #include #include #include using namespace std;const int maxnode = 50000 * 10 + 10;const int sigma_size = 26;struct Trie { int ch[maxnode][sigma_size]; int v
2013-05-07 20:26:57
511
原创 UVa 620 - Cellular Structure
// File Name: UVa620.cpp// Author: Toy// Created Time: 2013年05月07日 星期二 10时53分39秒#include #include #include #include #include #include #include #include #include #include #include #inclu
2013-05-07 11:04:01
797
原创 UVa 10911 - Forming Quiz Teams
集合上的dp问题,和佳神给的例题是类似。d (S ) 表示是把集合S中的元素两两配对后的最小距离和。d(S)= min { |Pi Pj| + d ( S - {i} - {j} )}; #include #include #include #include const int MAX = 10;const int INF = 1 << 30;using namespac
2013-05-07 07:20:01
727
原创 UVa 10069 - Distinct Subsequences
高精度的运算,,所以用了JAVA的大数。用b表示长串,a表示短串。dp[k][j]表示的是短串的位置k之前的子串在长串位置j之前出现的次数。所以当str[j] == str[k] dp[k][j] += dp[k - 1][j - 1]不过在对dp[k][j]进行初始化的时候要特别注意 import java.math.BigDecimal;import java.math.
2013-05-07 06:43:30
555
原创 UVa 11151 - Longest Palindrome
求最长回文子序列,将所给字符串反制后,求与原串的最长公共子序列// File Name: UVa11151.cpp// Author: Toy// Created Time: 2013年05月05日 星期日 22时07分03秒#include #include #include #include #include #include #include #includ
2013-05-05 22:40:32
570
原创 UVa 10739 - String to Palindrome
将所给的字符串 经过 插入,删除,修改等操作形成回文串。没操作一次花费一个时间,求花费最小的时间。仔细想一下,删除和插入操作是一样的。dp [i][j] 表示i ~ j 是回文串时的最小操作时间。对于删除和插入操作 dp[i + 1][j], dp[i][j - 1]。而修改是将i 和 j位置改成了一样的,所以 dp[i + 1][j - 1]转移方程为 ans = min ( dp
2013-05-05 20:44:55
666
原创 UVa 10617 - Again Palindrome
字符串的DP,用d[i][j] 表示 i和j ( i 所以有两种情况 当 str [i] == str[j] 时 的d[i][j] >?= dp ( i + 1, j ) + dp ( i, j - 1 ) + 1.当str[i] != str[j] 时 d[i][j] >?= dp ( i +1, j ) + dp ( i, j - 1 ) - dp ( i + 1, j - 1 ) (
2013-05-05 20:35:46
541
原创 UVa 11137 - Ingenuous Cubrency
听取了老大的建议,说记忆化搜索由于数据较大比较费时,所以直接上的递推,过的比较轻松。 #include #include #include #include #include using namespace std;int Case, A[25];long long dp[10005];int main ( ) { for ( int i = 1; i <= 2
2013-05-03 22:34:59
506
原创 UVa 10404 - Bachet's Game
opt[i] = 1 表示剩i个石子时 Stan wins。用A[]数组表示 m 堆的个数情况。opt[0] = 0 ( 0个石子 Ollie wins,所以为0 )。当 i >= A[j] 且 opt[i - A[j]] == 0 此时表示的是石子数为i - A[j] 时Ollie wins,故可以推出opt[i] = 1。 // File Name: UVa10404.cpp// A
2013-05-03 21:55:20
607
原创 UVa 437 - The Tower of Babylon
每一种箱子都有6种情况,没两个边都可以当底面,另一个边做高。排序后找面积符合情况下的高度最长上升子序列即可。// File Name: UVa437.cpp// Author: Toy// Created Time: 2013年05月03日 星期五 18时20分12秒#include #include #include #include #include #i
2013-05-03 18:47:42
588
原创 UVa 10285 - Longest Run on a Snowboard
记忆化搜索,对d[i][j] 需要考虑 d[i - 1][j], d[i + 1][j], d[i][j - 1], d[i][j + 1]四种情况,但是需要注意边界的控制。 #include #include #include #include #include using namespace std;int Case, R, C, A[105][105], opt[10
2013-05-03 17:54:52
457
原创 UVa 10465 - Homer Simpson
背包问题,要求出重量恰好是t的最大价值 (每个物品的价值是1)。此题分为恰能达到重量t和不能达到重量t两种情况。再求背包的过程中要注意。 #include #include #include #include #include using namespace std;int m, n, t, opt[10005], V[3];int main ( ) { whi
2013-05-03 13:53:12
497
原创 UVa 531 - Compromise
求最长公共子序列,输出路径,a[i][j]为到第i行第j列时最长的公共子序列,所以在输出路径的时候,讲a[cnt1][cnt2]从后遍历排除不是的情况,再用path记录路径就可以。 #include #include #include #include #include using namespace std;string str1[101], str2[101], s,
2013-05-03 11:53:38
522
原创 HEU Monkey CC
这个题和之前做过的接馅饼的题类似。用opt[i][j][t] 表示第i秒时在位置j上跳跃的次数为t是所得的最大香蕉数。这样有三个状态可以考虑,在第i - 1秒是 在位置j,位置j - 1,位置j + 1三个位置。所以转移方程为 opt[i][j][t] = max ( max ( opt[i - 1][j- 1][t - 1], opt[i - 1][j + 1][t - 1] ), opt[
2013-04-24 12:58:29
574
原创 HEU The message
囧啊,读错题了,一直在想为什么是DP。误以为当时间相同是可以一起删除。后来发现并非如此。用ans[i]记录前i条信息全部删除的最短时间,dele[i][i]表示删除第i条信息所需的时间,opt[a][b]是从a到b一起删除的时候所需的时间。用结构体表示 到达时间 ( arr ),删除所需时间(cost )。转移方程为 cnt = max ( ans[j], mess[i].arr ) + op
2013-04-23 22:42:36
500
原创 HEU_ Who Is In Front of Me
num个数,1 - num 。A[i]代表第i个人的身高,第i个人只能看见他前面的比他高的,也就是从第i个人到头找最长上升子序列,Case为50000所以需要优化,用id表示从i能看见的最高人的的位置。 #include #include using namespace std;int Case, A[50005], dp[50005], num;int main ( ) {
2013-04-23 16:12:03
752
原创 hdu 1063 Exponentiation
给一个浮点数,然后求Case次幂,如果第一个是0,则从小数点处输出,需要转成字符串处理,才学的大数,不知道怎么处理,查看的别人代码。用法是String str = ans.stripTrailingZeros ( ).toPlainString ( );不是很理解怎么过程。 import java.math.BigDecimal;//import java.math.BigInteg
2013-04-23 11:58:06
607
原创 hdu 1047 Integer Inquiry
就是求Case组样例,未知个数的和,还是简单的大数相加的问题,值得注意的就是格式的问题,JAVA用hasNext()判断是否还有下一个输入。 import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ public static void mai
2013-04-23 10:31:54
503
原创 hdu 1715 大菲波数
就是斐波那契数列,但是数据范围特别大,C/C++ 需要用到大数加法。而JAVA的大数可以直接计算 import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ public static void main(String[] args) { /
2013-04-22 19:19:52
612
原创 nyist ( 南阳理工学院 ) 28 大数阶乘
大数阶乘的问题 import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scann
2013-04-21 17:33:53
745
原创 hdu 1002 A + B Problem II ( JAVA大数)
JAVA的大数很强大的,才学习的,就做了道 A + B 的水题。 import java.math.BigInteger;import java.util.Scanner;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-gene
2013-04-21 17:14:41
533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅