洛谷 开学赛
2016-02-27 10:08
239 查看
刷一波水比赛找回点感觉。。。
http://www.luogu.org/contest/show?tid=414
赛题 #1:不要把球传给我
找规律水题
赛题 #2:海盗
排个序,暴个力,就过了
赛题 #3:拦截部队
水。。。
赛题 #4:取余运算
快速幂取模模板题
赛题 #5:奇特的数
被这道题虐爆了。。。求神犇指点。。。
赛题 #6:位数问题
低端动归
f[i][1]表示i位有奇数个3的数的个数
f[i][0]表示i位有偶数个3的数的个数
显然,多一位之后想要得到偶数个3可以在原来偶数个3的数上加0个3即9种,也原来奇数个3的数上加1个3,奇数个3同理。
状态转移方程:
f[i][1]=(f[i-1][1]*9+f[i-1][0])
f[i][0]=(f[i-1][0]*9+f[i-1][1])
http://www.luogu.org/contest/show?tid=414
赛题 #1:不要把球传给我
找规律水题
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,s; int main() { scanf("%d",&n); n-=3; for(int i=1;i<=n;i++) s+=(i*(i+1))/2; printf("%d",s); return 0; }
赛题 #2:海盗
排个序,暴个力,就过了
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,m,ans,s; int a[10010],b[10010]; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); for(int i=1;i<=m;i++) scanf("%d",&b[i]); sort(b+1,b+1+m); int j=1; for(int i=1;i<=m;i++) { if(b[i]>a ) { n-=1; continue; } while(b[i]>a[j]&&b[i]<=a ) j++; a[j]=0; j++; } for(int i=1;i<=n;i++) ans+=a[i]; printf("%d",ans); return 0; }
赛题 #3:拦截部队
水。。。
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; double x1,y1,z1,x2,y2,z2,s1,s2; int main() { scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&z1,&x2,&y2,&z2); s1=(x1-x2)/z1; s2=(y2-y1)/z2; if(s2-s1<0) printf("0"); else printf("%lf",s2-s1); return 0; }
赛题 #4:取余运算
快速幂取模模板题
#include<iostream> #include<cstdio> using namespace std; long long b,p,k; long long quick_pow(long long a,long long q) { long long ans=1; while(q>0) { if(q&1) ans=(ans*a)%k; a=(a*a)%k; q>>=1; } return ans; } int main() { scanf("%lld%lld%lld",&b,&p,&k); printf("%lld",(quick_pow(b,p))%k); return 0; }
赛题 #5:奇特的数
被这道题虐爆了。。。求神犇指点。。。
赛题 #6:位数问题
低端动归
f[i][1]表示i位有奇数个3的数的个数
f[i][0]表示i位有偶数个3的数的个数
显然,多一位之后想要得到偶数个3可以在原来偶数个3的数上加0个3即9种,也原来奇数个3的数上加1个3,奇数个3同理。
状态转移方程:
f[i][1]=(f[i-1][1]*9+f[i-1][0])
f[i][0]=(f[i-1][0]*9+f[i-1][1])
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,f[1000][3]; int main() { scanf("%d",&n); f[1][1]=1; f[1][0]=8; for(int i=2;i<=n;i++) { f[i][1]=(f[i-1][1]*9+f[i-1][0])%12345; f[i][0]=(f[i-1][0]*9+f[i-1][1])%12345; } printf("%d",f [0]%12345); return 0; }
相关文章推荐
- 精确的数字类型?
- 详解Android中AsyncTask的使用
- DIV+CSS命名规范-转载1
- 浅谈Block
- GCD之dispatch_barrier_asyc
- 笔记本磁盘图标变成U盘图标怎么办
- 抽屉实现技术原理
- jQuery实践中发现的问题
- Nosql的一些疑问
- 什么是表?
- 在脚本中刷新impala元信息
- 【设计模式】访问者模式
- android管理SD卡 mksdcard
- 在脚本中刷新impala元信息
- 快速排序
- launcher默认app图标排序xml
- InterLockedIncrement and InterLockedDecrement函数原理
- 不同hadoop集群之间迁移hive数据
- java修饰符大全详解
- 1015 Reversible Primes