- 博客(34)
- 问答 (5)
- 收藏
- 关注
原创 128 - Software CRC
描述:crc检测题目,还好最近刚学了,要不然还真不会#include #include char str[1100];char t[]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};int main(){ // freopen("a.txt","r",stdin); int len;
2013-04-27 15:06:55 664
原创 10306 - e-Coins
描述:刚开始没看懂题目,原来是要凑出一个数(x,y),使得x^2+y^2==s^2#include #include int v[310][310],arr[45][2];int pow_two(int x,int y){ return x*x+y*y;}int main(){ // freopen("a.txt","r",stdin); int n,m,t,
2013-04-26 14:26:48 796
原创 590 - Always on the run
描述:没什么难度,比较水一点的题#include #include struct fli{ int d[10]; int flight[10][35]; int sum; int count;};fli f[12];int main(){// freopen("a.txt","r",stdin); int n,m,k,t=0,p;
2013-04-25 17:46:49 647
原创 10006 - Carmichael Numbers
描述:需要筛选和幂取模,要不然普通算法就会超时,只有合数并且满足所有的a(2<a<n)a^n%n=a才能输出The number %d is a Carmichael number.,否则输出%d is normal.#include #include #include bool prime[65005];void solve(){ memset(prime,0,sizeof(
2013-04-25 13:24:52 586
原创 10651 - Pebble Solitaire
描述:对于这道题,实在想不出如何用动规,所以就直接bfs#include #include char s[5010][15];int main(){ // freopen("a.txt","r",stdin); int n,flag; while(scanf("%d",&n)!=EOF) for(int i=0; i<n; i++)
2013-04-23 15:47:28 611
原创 138 - Street Numbers
描述:有m,n两个数字,求得区间[m,n]==[1,m],输出十组m,n#include #include int main(){ int n=8,m=6,arr[10]={0}; printf("%10d%10d\n",m,n); arr[0]=1; for(int i=1; i<10; i++) { arr[i]=m;
2013-04-23 14:05:29 655
原创 10051 - Tower of Cubes
描述:麻烦的题,需要记录走过的路程,而且和最短路还有些车别#include struct cube{ int val; int sum; int no; int x; int y;};cube v[510][6];char str[6][7]= {"front","back","left","right","top","bottom"};int
2013-04-22 13:08:54 663
原创 10534 - Wavio Sequence
描述:由于数组会到10000,所以普通的记忆化搜索会超时,需要改进一下#include int n,sum,len;int v[10010][2],arr[10010],s[10010];int min(int x,int y){ return x>y?y:x;}int max(int x,int y){ return x>y?x:y;}int cal(int
2013-04-18 19:08:42 540
原创 10069 - Distinct Subsequences
描述:可恶的奇葩题,不但要求记忆化搜索,而且还要求高精度,大数据 10^100,真受不了,非得开了个大数才解决的,开小数还超时#include #include #define N 100000000char str[10010],s[110];int v[110][10010][13],len[110][10010];int max(int x,int y){ return
2013-04-17 14:55:53 814
原创 825 - Walking on the Safe Side
描述:计算从点(1,1)到点(n,m)一共有多少条路径#include #include int arr[110][110];int main(){ // freopen("a.txt","r",stdin); int t,n,m,len; scanf("%d",&t); while(t--) { memset(arr,0,sizeo
2013-04-16 16:33:25 540
原创 620 - Cellular Structure
描述:这道题具体是怎么回事,我也不清楚,先看看这位大神的题解吧http://hi.baidu.com/knowledgetime/item/1e890017baa663fd87ad4eb5#include #include int main(){ // freopen("a.txt","r",stdin); int n,len; char s[10010];
2013-04-15 22:24:41 662
原创 10404 - Bachet's Game
描述:博弈题目,第一次看这种题,实在不,明白什么意思,后来才知道是博弈题目,由于是巴什博弈(Bash Game)。(i=1;i=0,num[i-arr[j]]==0则代表Stan可以移动石块,数组num标记为1,(开始时全部初始化为零,num[0]=1,零代表Ollie刚刚在此处移动数组),直到出现num[n]为1时,终止循环,此时就可以输出Stan wins,否则最后就输出Ollie wins
2013-04-15 20:46:08 671
原创 437 - The Tower of Babylon
描述:给出n种长方体,每种长方体无数个,将这些长方体按照长和宽依次递减的趋势依次增加高度,求最大的高度是多少#include #include int n,m,t,sum;int arr[100][3];int max(int x,int y){ return x>y?x:y;}void swap(int &x,int &y){ if(x>y) {
2013-04-14 13:06:45 526
原创 10285 - Longest Run on a Snowboard
描述:寻找一个数,从这个数上、下、左、右四个方向寻找一堆数,使之为递增或者递减数列,输出这个数列的个数#include #include int n,m,t,sum;int arr[110][110],visit[110][110],num[110][110];char s[110];int max(int x,int y){ return x>y?x:y;}int df
2013-04-14 00:47:46 894
原创 10465 - Homer Simpson
描述:输入三个数n,m,t,寻找一堆n和m,使之和为t,如果不存在,那么则寻找最接近(小于等于)t的数,并求出此时所包含的最多的n与m的个数和这个数与t的差值,并输出这两个数#include int main(){ // freopen("a.txt","r",stdin); int n,m,t,count,sum,flag,pos,v; while(scanf("%d
2013-04-13 14:36:53 594
原创 531 - Compromise
描述:比较最长子序列,然后输出这个最长子序列#include #include int n,m,flag,arr[110][110],num[110][110];char str[110][35],v[110][35];void show(int x,int y){ if(x==n||y==m) return; if(num[x][y]==1) {
2013-04-13 10:43:38 560
原创 10130 - SuperSale
描述:水题不解释#include #include int t,n,m,sum,p,q;int arr[1010][2],w[110],v[50010][2];int main(){ // freopen("a.txt","r",stdin); scanf("%d",&t); while(t--) { scanf("%d",&n);
2013-04-12 16:26:28 665
原创 624 - CD
描述:题意:输入两个数n,m和m个数,计算一堆数的和,寻找最接近n并且小于n的数,找到后把凑成这个和的数全部输出即可#include #include struct Cd{ int flag; int pos;};Cd count[50010];void show(int x){ if(x) show(count[x].pos); if(x)prin
2013-04-12 12:34:10 557
原创 348 - Optimal Array Multiplication Sequence
描述:状态转移方程min(v,dp(x,i)+dp(i+1,y)+num[x][0]*num[i][1]*num[y][1]);数据量只有10,不大,主要是存储步骤#include #include int num[15][2],s[15][15],count[15][15];int dp(int x,int y){ int &v=count[x][y]; if(v) r
2013-04-11 21:51:40 688
原创 562 - Dividing coins
描述:把硬币平分成两份,寻找与平均数差值最小的就可以#include #include bool s[50010];int num[110];int main(){ int n,t,sum,flag,p,m; // freopen("a.txt","r",stdin); scanf("%d",&t); while(t--) { sc
2013-04-10 13:59:38 537
原创 357 - Let Me Count The Ways
描述:这道题还好,相比起上一题没有精度问题#include long long s[30010];int v[6]= {1,5,10,25,50};void solve(){ s[0]=1; for(int i=0; i<5; i++) for(int j=v[i]; j<30010; j++) s[j]+=s[j-v[i]];}
2013-04-08 16:14:53 647
原创 147 - Dollars
描述:可恶的精度问题,真让人受不了了了了了……#include long long s[6010];int v[13]= {1,2,4,10,20,40,100,200,400,1000,2000};void solve(){ s[0]=1; for(int i=0; i<11; i++) for(int j=v[i]; j<6010; j++)
2013-04-08 16:06:11 551
原创 10192 - Vacation
描述:依然是最长子序列问题……#include #include int max(int a,int b){ if(a>b) return a; else return b;}char str[2][110];int s[110][110];int main(){ //freopen("a.txt","r",stdin); int n,m,flag
2013-04-08 14:49:30 631
原创 10066 - The Twin Towers
描述:查找最长子序列问题,前面好几道都是这样的题#include #include int max(int a,int b){ if(a>b) return a; else return b;}int num[110][2],s[110][110];int main(){ //freopen("a.txt","r",stdin); int n,m,f
2013-04-08 14:37:03 688
原创 10131 - Is Bigger Smarter?
描述:题意很简单,先快排一下,然后从中选择即可,因为我觉得只用数组有些麻烦,所以用了结构体#include #include struct Ele{ int We; int Iq; int sum; int next; int pos;};Ele count[1010];int cmp(const void *p1 ,const void *p
2013-04-08 13:45:14 597
原创 116 - Unidirectional TSP
描述:实际就是从这个数组找最小,状态方程是:s[i][j]+=min(min(s[a][j+1],s[b][j+1]),s[c][j+1]);但是难得不是这,而是寻找一条路径满足行坐标尽量的小,只能从右往左找了#include #include int min(int a,int b){ if(a>b) return b; else return a;}int main
2013-04-07 18:40:31 854
原创 10003 - Cutting Sticks
描述:题目难度为 2,将一条长为n的木棍切成m+1块,但是切割顺序不同,寻找状态方程s[x][y]=min(s[x][y],s[x][i]+s[i][y]+s[y]-s[x]);然后就可以敲代码了代码一(递归,耗时较多):#include #include int num[55],s[55][55];int min(int a,int b){ if(a>b) return b;
2013-04-06 20:37:41 1011
原创 674 - Coin Change
描述:dp问题,需要状态转移,并且还需要统计,如果每次都要进行计算的话,也会超时的#include int num[7500];int main(){ // freopen("a.txt","r",stdin); int n,v[6]= {1,5,10,25,50}; num[0]=1; for(int i=0; i<5; i++) for(i
2013-04-05 10:52:50 652
原创 10405 - Longest Common Subsequence
描述:要命的题,回车也算字符,只要是字符就要算才行,绝不能用scanf读取字符串#include #include #define N 1010char str[N],s[N];int num[N][N];int main(){ // freopen("a.txt","r",stdin); while(gets(str)) { gets(s);
2013-04-04 15:55:46 642
原创 103 - Stacking Boxes
描述:像刘汝佳书上一样需要转化成有向图,然后再统计路最长的就可以了#include #include #include #define N 32int n,m,sum;int num[N][12],s[N],pos[N];bool next[N][N];int cmp(const void *p1,const void *p2){ return *(int *)p1 -
2013-04-04 15:01:34 509
原创 111 - History Grading
描述:题意倒是挺难理解的:给出一个整数n,下一行有n个数,这是正确答案,但是需要转化一下 10 3 1 2 4 9 5 10 6 8 7 ->代表第一件事发生在下标3,第二件事发生在下标1,第三件事发生在下标2……-> 2 3 1 4 6 8 10 9 5 7,以后的输入都要转化,并且和第一次输入的作比较,查找两个数组最大的子序列,输出最大子序列个数#include #include int
2013-04-04 10:34:13 863
原创 10148 - Advertisement
描述:区间选点问题,刘汝佳书上有这题,自己看看就会了#include #include #include int s[1010][2];bool str[20010];int cmp(const void *p1,const void *p2){ if(((int *)p1)[1] > ((int *)p2)[1]) return 1; else if(((int *
2013-04-03 16:06:11 718
原创 757 - Gone Fishing
描述:暴力+贪心,先定向选择依次只能到达第一个湖、第二个湖……最后一个湖,就会变成选择最优解问题,选择和最大的就可以了,注意有可能数据都是为零的时候,这是把所有的时间都用在第一个湖就可以了#include #include int main(){ // freopen("a.txt","r",stdin); int t[30],f[30],d[30],s[30]; i
2013-04-03 14:11:52 589
原创 10827 - Maximum sum on a torus
描述:比上一题还要麻烦的题,不过改进了方法,比上一题耗时还要少,先把输入的数组复制成三分,分别在右,下,右下三个地方,然后计算从0下标到当前下标的和,然后再暴一下就可以了#includeint main(){ // freopen("a.txt","r",stdin); int t,n,count,sum; int num[160][160]; scanf("%
2013-04-01 19:10:02 887
空空如也
C++11奇妙的未定义行为??
2014-09-21
C# 窗口移动,文字显示
2014-05-22
侯捷stl源码剖析红黑树代码问题
2014-04-07
python创建sql server 数据库问题求助
2013-12-25
sublime text3代码中自动对齐问题
2013-09-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人