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)的更多相关文章

  1. hdu 2578 Dating with girls(1)

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2578 Dating with girls(1) Description Everyone in the ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. hdu 2579 Dating with girls(2)

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2579 Dating with girls(2) Description If you have sol ...

  6. HDU 3782 xxx定律

    xxx定律 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  7. 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 ...

  8. Top ShooterHDU2863&&继续xxx定律HDU3784

    继续xxx定律 HDU3784 先看这个题目:HDU3782 #include<iostream> #include<algorithm> #include<stdio. ...

  9. 每日一九度之 题目1033:继续xxx定律

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5502 解决:1351 题目描述:     当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数, ...

随机推荐

  1. sql server数据库占用cpu太大,使用sys.dm_exec_query_stats查询优化

    查询sql语句占用 CPU详细信息: SELECT (SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 , ( (CASE WHE ...

  2. (数论)51NOD 1135 原根

    设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数)   给出1个质数P,找出P最小的原根. Input 输入1个质数P(3 <= P &l ...

  3. ACM_排序

    除了sort,你还会什么 Time Limit: 1000/500ms (Java/Others) Problem Description: 给出若干人的年龄(1~100之间的整数),把它们按照从小到 ...

  4. 6.12mysql自己的数据库的作用

  5. 重新学习Java——对象和类(二)

    上一节回归了如何以面向对象的思想去使用一些Java中的公共类,也设计了一些自己的类并介绍了设计类的基本方法和技巧,这一节我们将继续回顾这些内容,并争取从中获得新的体验和感受. 1. 静态域与静态方法 ...

  6. P1160 队列安排

    题目描述 一个学校里老师要将班上N个同学排成一列,同学被编号为1-N,他采取如下的方法: 1.先将1号同学安排进队列,这时队列中只有他一个人: 2.2-N号同学依次入列,编号为i的同学入列方式为:老师 ...

  7. Angular——路由参数

    基本介绍 在控制中注入$routeParams可以获取传递的参数 区别对比 angular中的路由是指#之后的内容,包括之后的?,而在之前的http地址中我们习惯性的将?放在前面 具体使用 1.形参 ...

  8. ElasticSearch学习笔记--安装

    1.安装ElasticSearch https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html 这 ...

  9. https与http的访问,应对苹果ATS验证问题

    为应对2017年1月1日苹果ATS的问题,微信.微博等等APP要求挂载的网页必须https访问,需要添加ssl认证. 一.SSL认证 选取了阿里云提供的免费SSL,使用期限为一年.电话咨询阿里客服,免 ...

  10. 并发编程学习笔记(12)----Fork/Join框架

    1. Fork/Join 的概念 Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此joi ...