51nod 几道题
1001 数组中和等于K的数对
基准时间限制:1 秒 空间限制:131072 KB
分值: 5 难度:1级算法题
给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,
找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5)。
Input
第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 <= N <= 50000,-10^9 <= K <= 10^9)
第2 - N + 1行:A数组的N个元素。(-10^9 <= A[i] <= 10^9)
Output
第1 - M行:每行2个数,要求较小的数在前面,并且这M个数对按照较小的数升序排列。
如果不存在任何一组解则输出:No Solution。
Input示例
8 9
-1
6
5
3
4
2
9
0
8
Output示例
-1 9
0 8
2 6
3 5
#include<algorithm>
#include<iostream>
#include<cstdiO>
#include<set>
using namespace std;
int n,k;
int s[100005];
set<int>str;
int main(){
cin>>k>>n;
int ans=0,num;
for(int i=1;i<=n;++i){
scanf("%d",&s[i]);
str.insert(s[i]);
}
sort(s+1,s+n+1);
for(int i=1;i<=n;++i){
if(k-s[i]<s[i])break;
if(k-s[i]==s[i])continue;
if(str.count(k-s[i])){
ans++;
cout<<s[i]<<' '<<k-s[i]<<endl;
}
}
if(!ans)cout<<"No Solution";
return 0;
}
比较正常的做法是\(O(n^2)\)枚举
但是会被卡
所以可以二分
因为可以与一个数配对的数有且只有一个
1002 数塔取数问题
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注
一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。
每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上。
5
8 4
3 6 9
7 2 9 5
例子中的最优方案是:5 + 8 + 6 + 9 = 28
Input
第1行:N,N为数塔的高度。(2 <= N <= 500)
第2 - N + 1行:每行包括1层数塔的数字,第2行1个数,第3行2个数......第k+1行k个数。数与数之间用空格分隔(0 <= A[i] <= 10^5) 。
Output
输出最大值
Input示例
4
5
8 4
3 6 9
7 2 9 5
Output示例
28
#include<iostream>
#include<cstdio>
#define N 505
using namespace std;
int n;
int s[N][N];
int f[N][N];
int main(){
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=i;++j)
cin>>s[i][j];
for(int i=1;i<=n;++i)
for(int j=1;j<=i;++j)
f[i][j]=max(f[i-1][j],f[i-1][j-1])+s[i][j];
int ans=0;
for(int i=1;i<=n;++i)
ans=max(ans,f[n][i]);
cout<<ans;
return 0;
}
水动规
1003 阶乘后面0的数量
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注
n的阶乘后面有多少个0?
6的阶乘 = 12345*6 = 720,720后面有1个0。
Input
一个数N(1 <= N <= 10^9)
Output
输出0的数量
Input示例
5
Output示例
1
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n;
cin>>n;
int ans=0;
int sn=n;
while(n>0){
ans+=n/2;
n/=2;
}
int ans1=0;
while(sn>0){
ans1+=sn/5;
sn/=5;
}
cout<<min(ans,ans1);
return 0;
}
找出作为因子的5的数量和2的数量
取min就好
但是不能直接求10的数量
1004 n^n的末位数字
题目来源: Author Ignatius.L (Hdu 1061)
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注
给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。
Input
一个数N(1 <= N <= 10^9)
Output
输出N^N的末位数字
Input示例
13
Output示例
3
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int mmm[10][5]={
{0,0,0,0},{1,1,1,1},
{6,2,4,8},{1,3,9,7},
{6,4,6,4},{5,5,5,5},
{6,6,6,6},{1,7,9,3},
{6,8,4,2},{1,9,1,9}
};
int main(){
cin>>n;
cout<<mmm[n%10][n%4];
return 0;
}
发现
1009 数字1的数量
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 取消关注
给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。
例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。
Input
输入N(1 <= N <= 10^9)
Output
输出包含1的个数
Input示例
12
Output示例
5
#include<cstdio>
using namespace std;
int main(){
int n;
int t,tn;
long long ans=0;
int mul=1;
scanf("%d",&n);
tn=n;
while(tn){
t=tn%10;
if(t==0)
ans+=n/(mul*10)*mul;
else if(t==1){
ans+=n/(mul*10)*mul;
ans+=(n%mul)+1;
}
else
ans+=(n/(mul*10)+1)*mul;
mul*=10,tn/=10;
}
printf ("%lld\n",ans);
return 0;
}
51nod 几道题的更多相关文章
- 【51Nod 1616】【算法马拉松 19B】最小集合
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1616 这道题主要是查询一个数是不是原有集合的一个子集的所有数的gcd. ...
- 51nod百度之星2016练习赛
今天看了看51nod发现有这样一个练习赛,就做了做.因为实力太弱想不出E题,各位神犇勿D. (5.26UPD:E题想粗来了) A 区间交 不难发现若干线段[li,ri]的交就是[max(li),min ...
- 51nod 最近刷题 简要题解
51nod 1564 由于数据是随机的,可以证明,对于每一个数,向左或右找比它小的数,长度是logn级别的 考虑枚举最大值 注意,对于每一个最大值,如果直接用2个循环枚举左右端点的话,理论是lognl ...
- 51Nod 算法马拉松15 记一次悲壮而又开心的骗分比赛
OwO 故事的起源大概是zcg前天发现51Nod晚上有场马拉松,然后他就很开心的过去打了 神奇的故事就开始了: 晚上的时候我当时貌似正在写线段树?然后看见zcg一脸激动告诉我第一题有九个点直接输出B就 ...
- 51Nod 有限背包计数问题 题解报告
首先这道题理论上是可以做到O(nlogn)的,因为OEIS上有一个明显可以用多项式乘法加速的式子 但是由于模数不是很兹磁,所以导致nlogn很难写 在这里说一下O(n*sqrt(n))的做法 首先我们 ...
- 51nod水题记
妈呀51nod已经刷不动了又开始跟bzoj一样总是得看题解了...那么发一下总结吧... 1051:最大子矩阵 #include<cstdio> #include<cstring&g ...
- 51Nod 1091 线段的重叠(贪心+区间相关,板子题)
1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...
- 51nod 1617 奇偶数组
传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧……然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...
- 51Nod 1815 调查任务
发现绍一的人很喜欢做51nod,不得不说这还是一个很全能的良心OJ 但是做的这道题就一点都不良心了,简直是毒瘤,调了一早上 首先我们考虑让一条路径的\(a_x\ mod\ a_y\)的值最大,我们简单 ...
随机推荐
- Spark实战练习01--XML数据处理
一.要求 将XML中的account_number.model数据提取出来,并以account_number:model格式存储 1.XML文件数据格式 <activations> < ...
- Linux yum安装MySQL5.7,及远程连接mysql(亲测有效!)
一.安装配置MySQL的yum源 # 安装MySQL的yum源,下面是RHEL6系列的下载地址 rpm -Uvh http://dev.mysql.com/get/mysql-community-re ...
- MAC下Python3.5安装问题
mac中自动集成了python2.7,但是作为程序员总是希望用最新的版本, 刚才安装python3.5后,python -V,依然提示是,2.7: 然后在 .bash_profile后面找到pytho ...
- hadoop worldcount小程序
首先在hadoop中建立input文件夹放几个文件,里边写点东西.比如我放了三个,分别写的是 第一个 hello hadoop bye hadoop 第二个 hello world bye world ...
- vue里的this
vue中methods对象里的函数, this指向的都是当前实例或者组件.
- 为Ubuntu安装SSH服务
只有当Ubuntu安装了SSH服务后,我们才能够通过ssh工具登陆Ubuntu.我自己喜欢使用x-shell作为终端工具 1.安装Ubuntu缺省安装了openssh-client,所以在这里就不安装 ...
- ES mapping的写入与查看
Elasticsearch索引mapping的写入.查看与修改 https://blog.csdn.net/napoay/article/details/52012249 首先创建一个索引: curl ...
- 【bzoj1086】[SCOI2005]王室联邦 树分块
题目描述 将一棵n个点的树分为若干“块”,每个块满足:大小在B到3B之间,并且这个“块”添加某个点后连通.求方案. 输入 第一行包含两个数N,B(1<=N<=1000, 1 <= B ...
- hdu 1286 找新朋友 (欧拉函数)
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- ListView获取网络数据并展示优化练习
权限: <uses-permission android:name="android.permission.INTERNET"></uses-permission ...