关键词:
solved 5
A(签到)
题意:两个人随机得到0或1其中之一数字,每个人都可以猜对方的数字是什么,有一个人猜对就算成功,问最优策略下00,01,10,11四种情况两人的成功概率分别是多少。
题意不明的签到题,题面说两人不能沟通,以为就是两个人随便猜,成功率都是1-0.5*0.5=0.75。结果是两个人可以提前商量好策略,那显然可以其中一个人猜和自己相同的数,另一个人猜和自己不同的数,那么所有的成功率都是100%。
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=1;i<=n;i++) #define LL long long #define pii pair<int,int> #define mp make_pair #define st first #define nd second #define pb push_back const int N= 1e7+7; const int inf= 3e3+7; int main() printf("1.00 1.00 1.00 1.00 "); system("pause");
0:48(2A)
B(递推)
题意:求斐波那契数列每一项的平方的连续一段和。
题意不明的签到题,前缀和,注意最后相减之后要加mod再模mod防止出现负数。
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=1;i<=n;i++) #define LL long long #define pii pair<int,int> #define mp make_pair #define st first #define nd second #define pb push_back const int N= 1e6+7; const int inf= 3e3+7; const int mod=192600817; int get(int a,int b) return a*4+b+1; LL f[N],F[N]; int main() f[1]=f[2]=1; F[1]=1; F[2]=2; for(int i=3;i<=1e5;i++) f[i]=(f[i-1]+f[i-2])%mod; F[i]=f[i]*f[i]%mod; F[i]+=F[i-1]; F[i]%=mod; int q; while(cin>>q) while(q--) int a,b,c,d; cin>>a>>b>>c>>d; //if(get(a,b)==get(c,d))cout<<0<<endl; if(get(c,d)<get(a,b))cout<<(F[get(a,b)]-F[get(c,d)-1]+mod)%mod<<endl; else cout<<(F[get(c,d)]-F[get(a,b)-1]+mod)%mod<<endl; system("pause");
1:37(3A)
C(模拟)
题意:把一个数字变换为他的各数位的平方和,经过若干次变换后这个数可以变成1,则称他为鸽子数,求第K个鸽子数。
记忆化搜索即可。
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=1;i<=n;i++) #define LL long long #define pii pair<int,int> #define mp make_pair #define st first #define nd second #define pb push_back const int N= 1e7+7; const int inf= 3e3+7; int cnt; int ans[N],vis[N],mem[N],in[N]; int solve(int x) if(mem[x]!=-1)return mem[x]; if(x==1)return 1; if(in[x])return 0; in[x]=1; int res=x,now=0; while(res) now+=(res%10)*(res%10); res/=10; mem[x]=solve(now); in[x]=0; return mem[x]; int main() memset(mem,-1,sizeof(mem)); for(int i=1;i<=2e6;i++)if(mem[i]==-1)mem[i]=solve(i); rep(i,2e6)if(mem[i])ans[++cnt]=i; int q; cin>>q; while(q--) int k; cin>>k; cout<<ans[k]<<endl; system("pause");
0:33(1A)
D
E(线性代数)
题意:给出三个点的坐标,以及线性变换后三个点的新坐标(保证三点不共线),多次询问(x,y)经过线性变换后的坐标
F
G(数学)
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=1;i<=n;i++) #define LL long long #define pii pair<int,int> #define mp make_pair #define st first #define nd second #define pb push_back const int N= 1e7+7; const int inf= 3e3+7; const int mod=1000000007; LL po(LL x) if(x==0)return 1; LL res=po(x/2); if(x&1)return res*res%mod*2%mod; return res*res%mod; int main() LL x; while(cin>>x) cout<<(x-1)%mod * (po(x)%mod) %mod +1<<endl; system("pause");
1:12(1A)
H
I
J(矩阵快速幂)
题意:f[n]=f[n-1]+2*f[n-2]+n^3,f[1]=1,f[2]=2,求f[n]。
矩阵快速幂裸题
(打了好久...)
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=1;i<=n;i++) #define LL long long #define pii pair<int,int> #define mp make_pair #define st first #define nd second #define pb push_back const int N=6; const int inf= 3e3+7; const int mod=123456789; LL tmp[N][N]; void multi(LL a[][N],LL b[][N],int n) memset(tmp,0,sizeof tmp); for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) tmp[i][j]=(tmp[i][j]+ (b[i][k]%mod*a[k][j]%mod) )%mod; for(int i=0;i<n;i++) for(int j=0;j<n;j++) a[i][j]=tmp[i][j]; LL init[N][N]= 2,0,0,0,0,0, 1,0,0,0,0,0, 27,0,0,0,0,0, 9,0,0,0,0,0, 3,0,0,0,0,0, 1,0,0,0,0,0 ; LL a[N][N]= 1,2,1,0,0,0, 1,0,0,0,0,0, 0,0,1,3,3,1, 0,0,0,1,2,1, 0,0,0,0,1,1, 0,0,0,0,0,1 ; LL b[N][N]= 1,2,1,0,0,0, 1,0,0,0,0,0, 0,0,1,3,3,1, 0,0,0,1,2,1, 0,0,0,0,1,1, 0,0,0,0,0,1 ; LL res[N][N]; void Pow(LL a[][N],LL n) for(int i=0;i<N;i++) for(int j=0;j<N;j++) res[i][j]=init[i][j],a[i][j]=b[i][j]; while(n) if(n&1) multi(res,a,N); multi(a,a,N); n>>=1; int main() int q; cin>>q; while(q--) LL n; cin>>n; Pow(a,n-2); cout<<res[0][0]<<endl; system("pause");
2:26(2A)
hduoj题目分类
基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1 查看详情
hdu6467简单数学题递推公式&&o优化乘法(广东工业大学第十四届程序设计竞赛)(代码片段)
...ampleInput5100 SampleOutput129660756544 Source“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛 解题思路: 但是这道题只推出递推 查看详情
hduoj2094产生冠军
??产生冠军TimeLimit:1000/1000MS(Java/Others) MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):8541 AcceptedSubmission(s):4019ProblemDescription有一群人,打乒乓 查看详情
hduoj1285确定比赛名次
??确定比赛名次TimeLimit:2000/1000MS(Java/Others) MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):11940 AcceptedSubmission(s):4756ProblemDescription有N个比赛 查看详情
hduoj1012ucalculatee
分析:注意格式。#include<stdio.h>intmain(){ inti,j,k; doublesum=0; printf("ne ------------ "); printf("01 12 22.5 "); for(i=3;i<=9;i++) { k=1; for(j=1;j<=i;j++) k*=j; sum+=1.0/k; printf( 查看详情
hduoj-1735简单的贪心算法
字数统计TimeLimit:1000/2000MS(Java/Others) MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):1987 AcceptedSubmission(s):552ProblemDescription 一天,淘气的Tom 查看详情
hduoj3371connectthecities(最小生成树)
ConnecttheCitiesTimeLimit:2000/1000MS(Java/Others) MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):9985 AcceptedSubmission(s):2843ProblemDescripti 查看详情
hduoj水果
/*水果夏天来了~~好开心啊,呵呵,好多好多水果~~Joe经营着一个不大的水果店.他觉得生存之道就是经营最受顾客欢迎的水果.如今他想要一份水果销售情况的明细表,这样Joe就能够非常easy掌握全部水果的销售情况了.Input... 查看详情
hduoj2560thesevenpercentsolution(代码片段)
#include<iostream>#include<stdlib.h>usingnamespacestd;intmain()//第一个循环用于输入,遇到#停止while(1)//第二个循环用于单次输入的每个字符的判断while(1)charc;c=getchar();//若遇到换行符,则结束此次输入if(c==‘‘||c==EOF)cout<<en 查看详情
hduoj2162-primes(代码片段)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2161 题意:判断n是不是素数,输入到0停止。题目规定12都不是素数。 题解:筛素数。老题目。不过这次是普通筛23333.。之前做的题了。 1#include<iostream>2#include<cmath>3#... 查看详情
hduoj1257最少拦截系统(代码片段)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 题意:经典题。 题解:最长上升子序列。 代码:1#include<iostream>2#include<algorithm>3#include<cstdio>4#include<cstring>5#include< 查看详情
hduoj1166敌兵布阵
发现自己之前对线段树树状数组这种数据结构只会套套模板,根本就没有理解与运用。所以打算最近开始重新学习这些数据结构。那么这就是我的树状数组第一道练习题目:敌兵布阵差不多就是模板题目 1#include<cstdio>2#in... 查看详情
hduoj开门人与关门人
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1234#include<stdio.h>#include<string.h>structpoint{chars1[20],s2[20],s3[20];//假设是定义成s1[15],s2[15],s3[15]就会出错}p[100];//定义结构体数组intmain(){intN,M 查看详情
如何有效使用杭电hduoj
参考技术A找好题刷.当你想熟练某个算法的时候可以在网上找相关的题目,有一些都是杭电的经典的题目.平时如果想检查自己或是锻炼一下自己的解题能力和知识面的话,也可以去打打HDOJ的BC(bestcoder)...感觉还是有帮助的.有的水题... 查看详情
hduoj几道递推dp(代码片段)
就不写题解了。很基础的递推。 HDU2084数塔题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 代码: 1#include<iostream>2#include<algorithm>3#include<cstdio>4#include<cstring>5 查看详情
hduoj18651string大数菲波那切数列
1stingTimeLimit:5000/1000MS(Java/Others) MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):5310 AcceptedSubmission(s):2030ProblemDescriptionYo 查看详情
hduoj1848fibonacciagainandagainsg函数博弈菲波那切数列
FibonacciagainandagainDescription任何一个大学生对菲波那契数列(Fibonaccinumbers)应该都不会陌生,它是这样定义的: F(1)=1; F(2)=2; F(n)=F(n-1)+F(n-2)(n>=3); 所以,1,2,3,5,8,13……就是菲波那契数列。 在HDOJ上有不少相关的题... 查看详情
hduoj悼念512汶川大地震遇难同胞——老人是真饿了(代码片段)
贪心算法~#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#include<iomanip>usingnamespacestd;structriceintprice;intweight;r[1001];boolcmp(ricea,riceb 查看详情