HDU 3784 继续xxx定律 & HDU 2578 Dating with girls(1)
HDU 3784 继续xxx定律
HDU 2578 Dating with girls(1)
做3748之前要先做xxx定律 对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。
当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数,5,8,4,2称为覆盖数。现在输入n个数字a[i],根据关键数与覆盖数的理论,我们只需要验证其中部分数就可以确定所有数满足xxx定律,输出输入的n个数中的关键数。如果其中有多个关键数的话按照其输入顺序的逆序输出。
所以只需把n个数都当做关键数,一一标记a[i]的覆盖数,最后在这数列中找到未被标记的,逆序输出。
15 ms
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
int a[],b[],i,n,x,y,c[]; //a为原数列,b为未被标记的数列,c为标记,记得c要开很大,因为要(x*3+1)/2可能很大
while(~scanf("%d",&n)&&n)
{
memset(c,,sizeof(c)); //清零
for(i=;i<=n;i++)
scanf("%d",&a[i]);
for(i=;i<=n;i++)
{
x=a[i];
if(!c[x]) //未被标记,若已被标记那么x的覆盖数已全被标记
while(x!=)
{
if(x%==)
{
x/=;
c[x]=;
}
else
{
x=(*x+)/;
c[x]=;
}
}
}
y=;
for(i=;i<=n;i++)
if(c[a[i]]==) //未被标记
b[++y]=a[i];
for(i=y;i>=;i--) //逆序输出
printf("%d ",b[i]);
printf("%d\n",b[]);
}
return ;
}
第二题 2578
大意是:给出n个数,满足x属于n,y属于n,x+y=k的方案数。 PS;1+3和3+1算两种,2+2只算一种
刚开始想用母函数做.....后来发现k<2^31,数组开不了这么大T^T
后来是周XX说用二分= =,想想也是......
然后各种改,错了6次!!!! 406MS
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int T,n,k,i,a[],l,r,sum,x,mid,y;
scanf("%d",&T);
while(T--)
{
sum=;
y=;
scanf("%d%d",&n,&k);
for(i=;i<=n;i++)
{
scanf("%d",&a[i]);
if(k%==&&a[i]==k/) //如果存在k/2这个数,则方法数+1
y=;
}
a[]=-;
sort(a+,a+n+); //排序
for(i=;i<=n;i++)
if(a[i]<(k+)/ && a[i]!=a[i-]) //先1,3;3,1只算一种,不要重复算 ①
{
x=k-a[i]; //找y
l=;
r=n+; //②
mid=(l+r)/;
while(r-l>) //③
{
mid=(l+r)/;
if(a[mid]>x)
r=mid;
if(a[mid]<x)
l=mid;
if(a[mid]==x)
break;
}
if(a[mid]==x)
sum++;
}
sum=sum*+y; //sum*2+是否有x=y这种情况
printf("%d\n",sum);
}
return ;
}
做的时候有几个易错的地方: ①②③
还有一组很难过得数据:
3 4
1 2 3
两道这样的题做了那么久.......╭(╯^╰)╮
HDU 3784 继续xxx定律 & HDU 2578 Dating with girls(1)的更多相关文章
- hdu 2578 Dating with girls(1)
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2578 Dating with girls(1) Description Everyone in the ...
- hdu 2578 Dating with girls(1) (hash)
Dating with girls(1) Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU 2578 Dating with girls(1) [补7-26]
Dating with girls(1) Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- hdu 2578 Dating with girls(1) 满足条件x+y=k的x,y有几组
Dating with girls(1) Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- hdu 2579 Dating with girls(2)
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2579 Dating with girls(2) Description If you have sol ...
- HDU 3782 xxx定律
xxx定律 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 2579 Dating with girls(2) (bfs)
Dating with girls(2) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Top ShooterHDU2863&&继续xxx定律HDU3784
继续xxx定律 HDU3784 先看这个题目:HDU3782 #include<iostream> #include<algorithm> #include<stdio. ...
- 每日一九度之 题目1033:继续xxx定律
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5502 解决:1351 题目描述: 当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数, ...
随机推荐
- win7安装oracle
1.下载 2.安装 主目录关键重要
- HTML5移动Web开发
1. 响应式web设计 说到这个,移动开发面对的屏幕尺寸那叫一个丰富,其中安卓阵营就够让人头痛的.我们在PC端常用的两种布局方式就是固定布局和弹性布局,前者设置一个绝大多数电脑能正常显示的固定宽度居中 ...
- Java实现短信中提取号码
Description 提取一条短信里所有的电话号码,电话号码之间换行打印,短信的内容由用户输入. Input 第一行有个整数n(1≤n≤1000)表示测试用例的个数.其后的每一行中有一条短信,每一条 ...
- centos 安装sysbench
安装sysbench 下载并且解压 shell> wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbe ...
- C++函数重载的4种错误示例
函数重载的4种错误示例: #include <iostream> #include <string> using namespace std; //函数重载 同函数名,函数重载 ...
- 数学 HDOJ 5301 Buildings
题目传送门 /* 题意:n*m列的矩阵,删除一个格子x,y.用矩形来填充矩阵.且矩形至少有一边是在矩阵的边缘上. 求满足条件的矩形填充方式中面积最大的矩形,要使得该最大矩形的面积最小. 分析:任何矩形 ...
- 368 Largest Divisible Subset 最大整除子集
给出一个由无重复的正整数组成的集合, 找出其中最大的整除子集, 子集中任意一对 (Si, Sj) 都要满足: Si % Sj = 0 或 Sj % Si = 0.如果有多个目标子集,返回其中任何一个均 ...
- 306 Additive Number 加法数
Additive number is a string whose digits can form additive sequence.A valid additive sequence should ...
- CAD使用SetxDataLong写数据(网页版)
主要用到函数说明: MxDrawEntity::SetxDataLong 写一个long扩展数据,详细说明如下: 参数 说明 [in] BSTR val 字符串值 szAppName 扩展数据名称 n ...
- CAD删除组(网页版)
主要用到函数说明: _DMxDrawX::DeleteGroup 根据组名,删除组.详细说明如下: 参数 说明 BSTR pszName 组名 js代码实现如下: 1 2 3 4 5 6 7 8 9 ...