牛客比赛-Wannafly9-A/B/C
A-链接:https://www.nowcoder.com/acm/contest/71/A
来源:牛客网
输入描述:
输出描述:
- 输出符合条件个数
输入
- 5
- 1 2 3 4 5
输出
- 2
说明
- 5个数中1和2符合条件,1是后面每个数的因子,2是4的因子
备注:
- 1≤n,a≤1000000
- 询问一个a[i]=x的整数倍(>1倍)是否也在数列中,统计x的个数;
用类似筛法的写法,对于x,检查kx(k>1)是否为真,如果存在就累加所有的x,复杂度O(nlog(n));
- #include <bits/stdc++.h>
- using namespace std;
- int z, n, v[];
- int main() {
- scanf("%d", &n);
- for (int i = ; i < n; i++) {
- int x;
- scanf("%d", &x);
- v[x]++;
- }
- for (int i = ; i <= ; i++) {
- for (int j = i + i; j <= ; j += i) {
- if (v[j] > ) {
- z += v[i];
- break;
- }
- }
- }
- printf("%d\n", z);
- }
B-链接:https://www.nowcoder.net/acm/contest/71/B
来源:牛客网
输入描述:
- 第一行一个整数n。
接下来n行每行一个仅由英文字母构成的非空字符串,第i个字符串代表s
i
- 。
输出描述:
- 共n行,第i行输出
- 对 998244353取模的结果。
输入
- 1
- BALDRSKYKirishimaRain
输出
- 1
备注:
- 1 ≤ n ≤ 10
6
- ,所有字符串的总长度不超过2*10
6
- 说实话有点想骂人了,浪费我这么长时间一直以为自己kmp写傻逼了,最后把cout<<endl换成cout<<'\n'就能过全部数据我。。。。。。
注意到除了长度最小的字符串S,只要比S大的那么这个i对应的那一行的输出必定是零,比S大或长度相同但内容不同自然不会匹配成功,有一个为零答案就是0;
然后再对S向所有的字符串都跑一遍kmp,复杂度是O(L),L为字符串总长度。
- #include<bits/stdc++.h>
- using namespace std;
- #define LL long long
- const int MAXN=;
- int MOD=;
- string str[MAXN],S;
- int f[MAXN*];
- int ans;
- int main()
- {
- ios::sync_with_stdio(false);
- cin.tie();
- int n,i,j,k;
- cin>>n;
- cin>>str[];
- S=str[];
- for(i=;i<=n;++i){
- cin>>str[i];
- if(str[i].length()<S.length())
- S=str[i];
- }
- ans=;
- f[]=-;
- j=-;
- for(i=;i<=S.length();++i){
- j=f[i-];
- while(j!=-&&S[i-]!=S[j])j=f[j];
- f[i]=j+;
- }
- for(i=;i<=n;++i){
- LL tmp=;
- int len=str[i].length();
- for(j=,k=;k<len;++k){
- if(S[j]==str[i][k]) j++;
- else{
- while(j!=-&&S[j]!=str[i][k])j=f[j];
- if(j!=-&&S[j]==str[i][k])j++;
- else j=;
- }
- if(j==S.length()){j=f[j];tmp++;}
- }
- ans=(LL)ans*tmp%MOD;
- if(!ans)break;
- }
- for(i=;i<=n;++i){
- if(str[i]==S)
- cout<<ans<<'\n';
- else
- cout<<<<'\n';
- }
- return ;
- }
C-链接:https://www.nowcoder.com/acm/contest/71/C
来源:牛客网
输入描述:
每行包括数列中的一项Ak(k<=100000)。
总行数T<=30。
输出描述:
对于每一项Ak,输出一行包括一个正整数k表示输入中数是数列的第几项。
输入
- 2
- 3
- 5
- 8
- 13
输出
- 2
- 3
- 4
- 5
- 6
显然要用到大数,但想要计算前十万个数并且保存一定MLE了,我们只留下最多40位末尾的数,显然这样的话末尾四十位的计算一定是正确的,而前100000项末尾四十位全部相同的几率是很小的,
大数一开始重载+莫名出bug,改成函数就好了。
- #include<bits/stdc++.h>
- using namespace std;
- struct Bign
- {
- int a[];
- Bign(){memset(a,,sizeof(a));}
- void print(){
- for(int i=a[];i>=;--i)
- printf("%d",a[i]);puts("");
- }
- }B[];
- Bign add(Bign A,Bign chs){
- int sz=max(A.a[],chs.a[]);
- for(int i=;i<=sz;i++){
- A.a[i]+=chs.a[i];
- if(A.a[i]>){
- A.a[i+]++;
- if(i+>sz) A.a[]=++sz;
- A.a[i]%=;
- }
- }
- return A;
- }
- bool ok(Bign A,Bign B){
- if(A.a[]!=B.a[]) return ;
- for(int i=;i<=A.a[];++i){
- if(A.a[i]!=B.a[i]) return ;
- }
- return ;
- }
- string s;
- int main()
- {
- B[].a[]=B[].a[]=;
- B[].a[]=;
- B[].a[]=;
- for(int i=;i<=;++i){
- B[i]=add(B[i-],B[i-]);
- if(B[i].a[]>){
- for(int j=;j<=B[i].a[];++j)
- B[i].a[j]=;
- B[i].a[]=;
- }
- }
- //B[100000].print();
- while(cin>>s){//B[1000].print();
- Bign x;
- int n=s.size();
- if(n>)n=;
- reverse(s.begin(),s.end());
- x.a[]=n;
- for(int i=;i<=n;++i)
- x.a[i]=s[i-]-'';
- for(int i=;;i++){
- if(ok(x,B[i])){
- cout<<i<<endl;
- break;
- }
- }
- }
- return ;
- }
牛客比赛-Wannafly9-A/B/C的更多相关文章
- 牛客比赛-假的字符串-Trie+拓扑
链接:https://www.nowcoder.com/acm/contest/59/B来源:牛客网 题目描述 给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个 ...
- 牛客比赛-状压dp
链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意 ...
- 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)
链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客OI周赛9-提高组题目记录
牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...
- 牛客练习赛43 Tachibana Kanade Loves Game (简单容斥)
链接:https://ac.nowcoder.com/acm/contest/548/F来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓 ...
- 牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)
链接:https://ac.nowcoder.com/acm/contest/548/C来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 QingyuQingyu 当 ...
- 牛客练习赛28 B数据结构(线段树)
链接:https://www.nowcoder.com/acm/contest/200/B来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客网Wannafly挑战赛25A 因子(数论 素因子分解)
链接:https://www.nowcoder.com/acm/contest/197/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客网NOIP赛前集训营-提高组(第一场)
牛客的这场比赛感觉真心不错!! 打得还是很过瘾的.水平也比较适合. T1:中位数: 题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个序列,可以由数对[l ...
随机推荐
- 模块 - json/pickle/shelve/xml/configparser
序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...
- Python基础教程-条件判断和循环
Python条件判断 在Python中用if语句实现: age = 20 if age >= 18: print 'your age is :',age print 'adult' 根据Pyth ...
- tomcat 日志目录 介绍
[root@mysql tomcat]# ll 总用量 drwxr-x---. root root 11月 : bin -rw-r-----. root root 11月 : BUILDING.txt ...
- 009-shiro与spring web项目整合【三】验证码、记住我
一.验证码 1.自定义FormAuthenticationFilter 需要在验证账号和名称之前校验验证码 /** * * <p>Title: CustomFormAuthenticati ...
- SIP穿越NAT SIP穿越防火墙-SBC
FireWall&NAT FireWall是一种被动网络安全防卫技术,位于网络的边界.在两个网络之间运行訪问控制策略.防止外部网络对内部信息资源的非法訪问,也能够阻止特定信息从内部网络被非法输 ...
- MariaDB备份之XtraBackup
一.XtraBackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtrabd数据库进行热备的工具.特点: (1)备份过程快速.可靠: ...
- appium实现adb命令 截图和清空EditText
原文地址http://www.cnblogs.com/tobecrazy/p/4592405.html 原文地址http://www.cnblogs.com/tobecrazy/ 该博主有很多干货,可 ...
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找 //查找是否存在 var reg: TPerlRegEx; begin reg := TPerlRegEx.Cre ...
- [MongoDB] 学习笔记(2)
1. Mac 安装mongodb: 官网下载mac版mongodb,解压到本地目录,如/Applications/mongodb,注意这里的地址是根更目录下的Applications,然后在根目录下创 ...
- boot空间不足,删除Ubuntu旧内核
0 Problem 今天打开电脑的时候ubuntu提示boot空间不足.查了资料,原来Ubuntu的自动升级并没有删除系统的旧内核,于是boot下旧的内核文件越积越多,最后就满了. 1 Solutio ...