第一题:ACGT

题目链接:https://ac.nowcoder.com/acm/contest/931/A

trie树、hash、map遍历

    ①、trie树上的节点多记一个rest值表示还有多少个串没被用。枚举所有串, 每次先在trie上跑匹配串,看一看那个点的rest。如果没法匹配的话就往trie里插入原串,把结束节点的rest+1

  ②、思路和trie类似。其实就是把trie换成hash。(把在树上跑换成去hash值)

  ③、将每个序列的个数存下,每次读入时判断对应序列的map的权值是否为0,若不为0,将输入序列和其对应序列的map权值-- ,ans++

下面是第三种解法 :

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f
ll read()
{
ll res=,flag=;
char ch;
if((ch=getchar())=='-')flag=;
else if(ch>=''&&ch<='')res=ch-'';
while((ch=getchar())>=''&&ch<='')res=res*+(ch-'');
return flag?-res:res;
}
void out(int a)
{
if (a<)
{
putchar('-');
a=-a;
}
if(a>=)out(a/);
putchar(a%+'');
}
map<string ,int >haha;
int n;
map<char,char> ab;
int main()
{
ios_base::sync_with_stdio(false);
ab['A'] = 'T';
ab['T'] = 'A';
ab['C'] = 'G';
ab['G'] = 'C';
while(cin>>n)
{
string a;
string b;
int cot = ;
haha.clear();
for(int i=; i<=n; i++)
{
cin>>a;
haha[a]++;
b="";
for(int i = ; i < a.size(); i++)
{
b+=ab[a[i]];
}
// cout<<b<<" "<<haha[b]<<endl;
if(haha[b]!=)
{
cot++;
haha[b]--;
haha[a]--;
}
}
cout<<cot<<endl;
}
return ;
}

第二题:幸运数字考试

题目链接:https://ac.nowcoder.com/acm/contest/931/B

dfs打表+二分

   因为n是<=1e19的,而long long是存不到大于777777777444444444的下一个幸运数,所以当n>777777777444444444,我们要进行特判。

  剩下的情况的最大的幸运数则为777777777444444444。

  因为幸运数肯定为偶数,且只包含4、7且4、7个数相同,所以打表完我们会发现 在long long可存的范围下幸运数并不多

  所以我们将所有幸运数存入arr[ ]数组中,最后再对arr[ ]和n进行二分查找,返回大于等于n的第一个幸运数(打表时注意递归方式使数组arr[ ]默认从小到大排序)

下面贴代码:

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f
ll read()
{
ll res=,flag=;
char ch;
if((ch=getchar())=='-')flag=;
else if(ch>=''&&ch<='')res=ch-'';
while((ch=getchar())>=''&&ch<='')res=res*+(ch-'');
return flag?-res:res;
}
void out(ll a)
{
if (a<)
{
putchar('-');
a=-a;
}
if(a>=)out(a/);
putchar(a%+'');
}
const int N = 1e6+;
int k = ,t;
ll n;
ll arr[N];
void dfs(int num4,int num7,ll ans)
{
if(num4 == && num7 == )
{
arr[k++] = ans;
return ;
}
else if(num4 == )
{
dfs(num4,num7-,ans*+);
}
else if(num7 == )
{
dfs(num4-,num7,ans*+);
}
else
{
dfs(num4-,num7,ans*+);
dfs(num4,num7-,ans*+);
}
}
int main()
{
ios::sync_with_stdio(false);
for(int i=; i<=; i+=)
dfs(i/,i/,);
k--;
cin>>t;
while(t--)
{
cin>>n;
if(n > )
{
cout<<""<<endl;
continue;
}
int r = k;
int l = ;
while(r - l > )
{
int mid = (r+l)>>; if(arr[mid]<n)
l = mid + ;
else
r = mid;
}
cout<<arr[r]<<endl;
}
return ;
}

牛客NOIP暑期七天营-提高组2的更多相关文章

  1. 牛客NOIP暑期七天营-提高组1

    牛客NOIP暑期七天营-提高组1 链接 A 边权可为0就排序建一条链子. 但是边权不为0 除了第一个有0的不行. x连向上一个比他小的数. 期间判断有无解. #include <bits/std ...

  2. 牛客NOIP暑期七天营-提高组6

    目录 A-积木大赛 题目描述 link 题解 代码 B-破碎的序列 题目描述 link 题解 C-分班问题 题目描述 link 题解 比赛链接 官方题解 A-积木大赛 题目描述 link 题解 标签: ...

  3. 牛客NOIP暑期七天营-提高组5+普及组5

    ————提高组———— 第一题:deco的abs 题目链接:https://ac.nowcoder.com/acm/contest/934/A 因为每个数都可以加任意次 d ,所以可以推出 0 < ...

  4. 牛客NOIP暑期七天营-提高组3

    第一题:破碎的矩阵 题目链接:https://ac.nowcoder.com/acm/contest/932/A    刚看到这题的时候感觉特别熟悉...诶,这不就是codeforces某场比赛的某某 ...

  5. 牛客NOIP暑期七天营-提高组6C:分班问题 (组合数)

    题意:A班有N个人,B班有M个人,现在要组成一个新的班级C班,为了公平,从AB班各抽相同人数的人. 现在求所有方案中,人数之和是多少. 思路:即求Σ k*C(N,k)*C(M,k);    先忽略这个 ...

  6. 牛客NOIP暑期七天营-提高组5

    A:deco的abs. 水题,先%,然后相邻两个数min()一下差值. #include<bits/stdc++.h> #define ll long long using namespa ...

  7. 牛客NOIP暑期七天营-提高组2C:滑块(平衡树) (这里rope骗分)

    A:hash 或者 map 或者trie. #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) usin ...

  8. 牛客NOIP暑期七天营-提高组1 解题报告

    https://ac.nowcoder.com/acm/contest/920#question A 构造+双指针 发现m的限制是1e5,而点数是5e4,所以不能构造太多的边,思考一下最短路树的定义. ...

  9. 牛客NOIP暑期七天营-普及组2D

    链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li​和 ri​,此外它的颜 ...

随机推荐

  1. uniapp打包Android APP

    1.uniAPP 将项目打包成,打包成功后格式如下 2.下载相关工具 Android studio(打包成app的工具) 和Hbuilder官方SDK,安装解压响应工具 3. 用 Android st ...

  2. Spring中常见的设计模式——工厂模式

    一.简单工厂模式 简单工厂模式(Simple Factory Pattern)由一个工厂对象决定创建哪一种产品类的实例,简单工厂模式适用于工厂类负责创建对象较少的情况,且客户端只需要传入工厂类的参数, ...

  3. 面试官:CPU百分百!给你一分钟,怎么排查?有几种方法?

    Part0 遇到了故障怎么办? 在生产上,我们会遇到各种各样的故障,遇到了故障怎么办? 不要慌,只有冷静才是解决故障的利器. 下面以一个例子为例,在生产中碰到了CPU 100%的问题怎么办? 在生产中 ...

  4. Redis高可用演进(一)

    原文链接:http://www.cnblogs.com/chenty/p/5152878.html 最近整理Redis,对sentinel有了更深入的理解,特地总结如下 1.主从Redis 主从red ...

  5. c# 为什么会出现死锁?多线程死锁怎么解决

    出现死锁必须满足以下几个条件: 1.互斥条件:该进程拥有的资源,其他进程只能等待其释放. 2.不剥夺条件:该进程拥有的资源只能由它自己来释放. 3.请求和保持条件:请求其他的资源,同时自己拥有的资源又 ...

  6. Git使用和介绍-基础指令

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52210625 本文出自: [HansChen的博客] 查看已有配置 取消已有的配置 ...

  7. react修改端口

    react修改端口 在react官网根据文档安装好项目之后,发现新项目没有了scripst文件夹 之前版本是在scripts文件夹中的starts.js中修改 新版本修改port发现移入到了依赖里面 ...

  8. Python-车牌识别

    一.车牌识别系统的用途与技术车牌识别系统(Vehicle License Plate Recognition,VLPR) 是计算机视频图像识别技术在车辆牌照识别中的一种应用.车牌识别在高速公路车辆管理 ...

  9. 华为云 AI 实战营计划,带你迈上 AI 之路

    当今,AI的开发人才需求呈现极大的供需不平衡.所有开发者都关心,要如何从一名开发者晋升为AI开发者?AI开发能力,是主要的进入障碍.不用慌,华为云推出了 <华为云ModelArts-Lab AI ...

  10. Python高级学习笔记

    Python高级学习笔记,此笔记中包含Linux操作系统.Html+CSS+JS.网络协议等. 所有思维导图为本人亲手所画,请勿用于商用. 大哥们,求点赞哦. 第一天笔记:链接 第二天笔记:链接 第三 ...