A.map统计数量,更新最大值。

#include<bits/stdc++.h>
using namespace std; int n;
map<int,int> mp; int main()
{
ios::sync_with_stdio();
int T;
cin >> T;
while(T--)
{
mp.clear();
cin >> n;
int ans,maxx = ;
for(int i = ;i <= n;i++)
{
string s;
int x;
cin >> s >> x;
mp[x]++;
if(maxx == mp[x]) ans = min(ans,x);
else if(maxx < mp[x])
{
ans = x;
maxx = mp[x];
}
}
cout << ans << endl;
}
return ;
}

B.统计b中每个字符个数,a串线性扫一遍,到没有的字符则停止。

#include<bits/stdc++.h>
using namespace std; char a[],b[];
int cnt[]; int main()
{
ios::sync_with_stdio();
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s%s",a,b);
memset(cnt,,sizeof(cnt));
int len1 = strlen(a),len2 = strlen(b);
for(int i = ;i < len2;i++) cnt[b[i]]++;
int ans = ;
for(int i = ;i < len1;i++)
{
if(!cnt[a[i]]) break;
ans++;
cnt[a[i]]--;
}
printf("%d\n",ans);
}
return ;
}

C.选最小值。

#include<bits/stdc++.h>
using namespace std; int a,b,c; int main()
{
ios::sync_with_stdio();
int T;
cin >> T;
while(T--)
{
cin >> a >> b >> c;
if(a < b && a < c) cout << "First" << endl;
else if(b < a && b < c) cout << "Second" << endl;
else cout << "Third" << endl;
}
return ;
}

D.2*C(a-1,b),预处理阶乘逆元。

#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std; long long a[],fac[],inv[]; long long c(int n,int m)
{
return fac[n]*inv[m]%MOD*inv[n-m]%MOD;
} int main()
{
inv[] = ;
inv[] = ;
for(int i = ;i <= ;i++) inv[i] = inv[MOD%i]*(MOD-MOD/i)%MOD;
for(int i = ;i <= ;i++) inv[i] = inv[i-]*inv[i]%MOD;
fac[] = ;
for(int i = ;i <= ;i++) fac[i] = fac[i-]*i%MOD;
int T;
scanf("%d",&T);
while(T--)
{
long long x,y;
scanf("%lld%lld",&x,&y);
printf("%lld\n",*c(x-,y)%MOD);
}
return ;
}

E.流水线,n+k-1。

#include<bits/stdc++.h>
using namespace std; int main()
{
ios::sync_with_stdio();
int T;
scanf("%d",&T);
while(T--)
{
long long x,y;
scanf("%lld%lld",&x,&y);
printf("%lld\n",x+y-);
}
return ;
}

F.预处理每个数下一个的位置,set储存位置模拟。

#include<bits/stdc++.h>
using namespace std; int n,k,a[],ne[]; int main()
{
ios::sync_with_stdio();
int T;
cin >> T;
while(T--)
{
cin >> n >> k;
for(int i = ;i <= n;i++) cin >> a[i];
map<int,int> mp;
set<int> s;
for(int i = n;i >= ;i--)
{
if(mp.count(a[i])) ne[i] = mp[a[i]];
else ne[i] = n+i;
mp[a[i]] = i;
}
int ans = ;
for(int i = ;i <= n;i++)
{
if(s.count(i))
{
s.erase(i);
s.insert(ne[i]);
continue;
}
if(s.size() == k) s.erase(*s.rbegin());
s.insert(ne[i]);
ans++;
}
cout << ans << endl;
}
return ;
}

G.n^2枚举区间,只要sum%lcm则符合要求,lcm过大时,break掉。

#include<bits/stdc++.h>
using namespace std; int n,a[]; long long lcm(long long a,long long b)
{
long long t = __gcd(a,b);
if(1e14/b > a/t) return a/t*b;
return 1e18;
} int main()
{
ios::sync_with_stdio();
int T;
cin >> T;
while(T--)
{
cin >> n;
for(int i = ;i <= n;i++) cin >> a[i];
int ans = ;
for(int i = ;i <= n;i++)
{
long long t = ,sum = ;
for(int j = i;j <= n;j++)
{
sum += a[j];
t = lcm(t,a[j]);
if(t > 1e14) break;
if(sum%t == ) ans++;
}
}
cout << ans << endl;
}
return ;
}

H.贪心,注意几种特例。

#include<bits/stdc++.h>
using namespace std; int n,k;
char ans[]; int main()
{
ios::sync_with_stdio();
int T;
cin >> T;
while(T--)
{
cin >> n >> k;
ans[n] = ;
if(n% == && k% == || *n < k || n > && k < )
{
cout << - << endl;
continue;
}
for(int i = ,j = n-;i < j;i++,j--)
{
if(k >= )
{
k -= ;
ans[i] = '';
ans[j] = '';
}
else
{
int t = k/;
k -= *t;
ans[i] = t+'';
ans[j] = t+'';
}
}
if(n%) ans[n/] = k+'';
cout << ans << endl; }
return ;
}

I.n,m均为偶数,先手必输。

#include<bits/stdc++.h>
using namespace std; int n,m; int main()
{
ios::sync_with_stdio();
int T;
cin >> T;
while(T--)
{
cin >> n >> m;
if(n % == && m% == ) cout << "abdullah" << endl;
else cout << "hasan" << endl;
}
return ;
}

J.从大到小枚举长度每一约数,当前约数不成立则把这个约数的所有因子标记不成立。

#include<bits/stdc++.h>
using namespace std; char a[];
int vis[]; int main()
{
ios::sync_with_stdio();
int T;
scanf("%d",&T);
getchar();
while(T--)
{
gets(a+);
int n = strlen(a+);
n++;
a[n] = ' ';
memset(vis,,sizeof(vis));
int flag = ;
for(int i = n/;i >= ;i--)
{
if(vis[i]) continue;
if(n%i) continue;
int ok = ;
for(int j = i;j <= n;j += i)
{
if(a[j] != ' ') ok = ;
}
if(ok == )
{
for(int t = ;t*t <= i;t++)
{
if(i%t == )
{
vis[t] = ;
vis[i/t] = ;
}
}
}
else
{
flag = ;
break;
}
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return ;
}

Codeforces_101498的更多相关文章

随机推荐

  1. apache相关实验-2

    一.Apache+openssl 实现 https HTTPS(全称:Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的 HTTP 通道,简单 ...

  2. spring boot 中AOP的使用

    一.AOP统一处理请求日志 也谈AOP 1.AOP是一种编程范式 2.与语言无关,是一种程序设计思想 面向切面(AOP)Aspect Oriented Programming 面向对象(OOP)Obj ...

  3. gcc 命令详解

    1. gcc -E source_file.c-E,只执行到预编译.直接输出预编译结果. 2. gcc -S source_file.c -S,只执行到源代码到汇编代码的转换,输出汇编代码. 3. g ...

  4. 交换机广播风暴,STP生成树协议,端口聚合

    交换机(工作在数据链路层)具有学习功能:     一台刚重启的交换机上的mac地址表为空,根据数据包的来源,目的地来学习MAC地址与端口的映射关系映射关系,对于MAC地址表之中已有的就不管了,对未知端 ...

  5. 关于Scrum+XP+DevOps的学习

    最近听了ECUG大会上孙敬云老师的分享感觉受益匪浅,毕竟大学课本上只讲到瀑布模型就没有下文了,工作以后一直贯彻的都是Scrum路线,一直也没有时间好好的去学习整理这部分的知识,直到近几天听到了孙老师的 ...

  6. npm全局模块卸载及默认安装目录修改

    卸载全局安装模块  npm uninstall -g <package> 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:npm ls npm ...

  7. 【转】推荐给初级Java程序员的3本进阶书

    ImportNew 注: 原作者在这篇文章中介绍3本不错的技术书籍.作者认为这些书籍对新手或者学生而言尤其有帮助.通过一些基础性的教程入门后,我们可以使用Java做基础性的编程.然而,当我们需要从初级 ...

  8. 深入理解 Java 并发锁

    本文以及示例源码已归档在 javacore 一.并发锁简介 确保线程安全最常见的做法是利用锁机制(Lock.sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方 ...

  9. .net生成荣誉证书

    参考:https://blog.csdn.net/ljk126wy/article/details/84299373 采用生成pdf 方式  效果如下: 用adobe acrobat 制作一个模板  ...

  10. Go 每日一库之 viper

    简介 上一篇文章介绍 cobra 的时候提到了 viper,今天我们就来介绍一下这个库. viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/ ...