CodeForces div3 第一场
题意: 对于一个数操作n次,操作如下: 如果末尾是0就将这个数除以10, 如果末尾不是0就将这个数-1, 直接做就好了。
代码:
#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int INF = 0x3f3f3f3f;
const LL mod = 1e9+;
const int N = 1e5+;
int main(){
///Fopen;
int n, k;
scanf("%d%d", &n, &k);
while(k--){
int t = n%;
if(t) n--;
else n/=;
}
printf("%d", n);
return ;
}
题意:求2个连续字符出现次数最多的那2个字符。
代码:
#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int INF = 0x3f3f3f3f;
const LL mod = 1e9+;
const int N = 1e3+;
int cnt[N][N];
char str[N];
int main(){
///Fopen;
int n;
scanf("%d", &n);
scanf("%s", str);
int ans = -, s1, s2;
for(int i = ; i < n-; i++){
int x = str[i]-'A';
int y = str[i+]-'A';
cnt[x][y]++;
if(cnt[x][y] > ans){
ans = cnt[x][y];
s1 = x;
s2 = y;
}
}
printf("%c%c",s1+'A',s2+'A');
return ;
}
题意:给你一个数组, 要求找到一个数在[1,1e9]之间,使得恰好有k个数小于等于他,如果没有输出-1, 有就输出任意一个合法答案。
题解:sort一下数组, 如果第k个数等于第k+1个数就找不到一个数满足题意了。 还有0个的情况。
代码:
#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int INF = 0x3f3f3f3f;
const LL mod = 1e9+;
const int N = 2e5+;
int n, m;
int A[N];
int main(){
///Fopen;
scanf("%d%d", &n, &m);
for(int i = ; i <= n; i++)
scanf("%d", &A[i]);
sort(A+, A++n);
if(m == ){
if(A[] == ) printf("-1");
else printf("");
}
else if(m == n){
printf("%d", (int)1e9);
}
else{
if(A[m] == A[m+]) printf("-1");
else printf("%d", A[m]);
}
return ;
}
D Divide by three, multiply by two
题意:将题目给的数重新排列,使得前一个数是后一个数的3倍,或者后一个数是前一个数2倍的情况最多。
题解:这个特殊的数列是不可能形成一个环的。DFS找一下就可以了,从长的开始输出。(也有更简单的方法, 但是当时写了DFS就DFS了。。。)
代码:
#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int INF = 0x3f3f3f3f;
const LL mod = 1e9+;
const int N = 1e2+;
int n, m;
LL A[N];
int cnt[N];
LL ans[N];
map<LL,int> mp;
void dfs(LL u){
cnt[mp[u]] = ;
if(u% == && mp.count(u/)){
if(cnt[mp[u/]] == -)
dfs(u/);
cnt[mp[u]] = max(cnt[mp[u]],+cnt[mp[u/]]);
}
if(mp.count(u*)){
if(cnt[mp[u*]] == -)
dfs(u*);
cnt[mp[u]] = max(cnt[mp[u]],+cnt[mp[u*]]);
}
}
void Show(LL u, int h){
printf("%I64d ", u);
A[mp[u]] = ;
h--;
if(h == ) return ;
if(u% == && mp.count(u/) && cnt[mp[u/]] == h && A[mp[u/]] != )
Show(u/,h); else if(mp.count(u*)
&& A[mp[u*]] !=
&& cnt[mp[u*]] == h){
Show(u*,h);
}
}
int main(){
scanf("%d", &n);
memset(cnt, -, sizeof(cnt));
for(int i = ; i <= n; i++){
scanf("%I64d", &A[i]);
mp[A[i]] = i;
}
for(int i = ; i <= n; i++){
if(cnt[i] == -){
dfs(A[i]);
} }
while(){
int Max = , save;
for(int i = ; i <= n; i++){
if(cnt[i] >= Max && A[i] != )
Max = cnt[i], save = i;
}
if(Max == ) break;
Show(A[save], Max);
}
return ;
}
题意:求环的个数, 这个环需要这个环上的点都只有2条边。
题解:DFS一下, 从某个点出发, 如果按照一个方向走能回到该点, 并且路上的点都只有2条边, 就cnt++;
代码:
#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int INF = 0x3f3f3f3f;
const LL mod = 1e9+;
const int N = 1e5+;
vector<int> son[*N];
int vis[N*];
int cnt = ;
void dfs(int u, int l, int v){
if(u == v){cnt++; return ;}
if(vis[v]) return ;
vis[v] = ;
if(son[v].size() == ){
if(l == son[v][]) dfs(u,v, son[v][]);
else dfs(u,v,son[v][]);
}
}
int main(){
///Fopen;
int n, m;
scanf("%d%d", &n, &m);
for(int i = ; i <= m; i++){
int u, v;
scanf("%d%d", &u, &v);
son[u].pb(v);
son[v].pb(u);
}
for(int i = ; i <= n; i++){
if(!vis[i]) {
vis[i] = ;
if(son[i].size() == ){
dfs(i, i, son[i][]);
}
}
}
printf("%d", cnt);
return ;
}
题意:求最长的递增子序列。 这个序列的前一项与后一项相差为1。
题解:开一个map, 映射一下某个值上一次访问的位置,然后每次处理一个新的点, 如果比这个点小1的值的mp不为0, 就将这个点的位置指向上一个比他小1的点,记录长度, 如果没有比他小1的点, 就指向-1, 然后长度记为1, 然后每次更新最长的值 和 相应的位置就好了。
代码:
#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int INF = 0x3f3f3f3f;
const LL mod = 1e9+;
const int N = 2e5+;
map<int,int> mp;
int cnt[N];
int pre[N];
int A[N];
int Max = , B = ;
void Show(int u){
if(u == -) return;
Show(pre[u]);
printf("%d ", u);
}
int main(){
///Fopen;
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++)
scanf("%d", &A[i]);
for(int i = ; i <= n; i++){
int t = A[i]-;
if(mp.count(t)){
pre[i] = mp[t];
cnt[i] = cnt[pre[i]]+;
}
else pre[i] = -, cnt[i] = ;
if(Max < cnt[i]){
Max = cnt[i];
B = i;
}
mp[A[i]] = i;
}
printf("%d\n", cnt[B]);
Show(B);
return ;
}
CodeForces div3 第一场的更多相关文章
- 2019年湖南多校第一场||2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)
第一场多校就打的这么惨,只能说自己太菜了,还需继续努力啊- 题目链接: GYM链接:https://codeforces.com/gym/101933 CSU链接:http://acm.csu.edu ...
- 校省选赛第一场C题解Practice
比赛时间只有两个小时,我没有选做这题,因为当时看样例也看不懂,比较烦恼. 后来发现,该题对输入输出要求很低.远远没有昨天我在做的A题的麻烦,赛后认真看了一下就明白了,写了一下,一次就AC了,没问题,真 ...
- 校省选赛第一场A题Cinema题解
今天是学校省选的第一场比赛,0战绩收工,死死啃着A题来做,偏偏一直WA在TES1. 赛后,才发现,原来要freopen("input.txt","r",stdi ...
- 计蒜之道 初赛第一场B 阿里天池的新任务(简单)
阿里“天池”竞赛平台近日推出了一个新的挑战任务:对于给定的一串 DNA 碱基序列 tt,判断它在另一个根据规则生成的 DNA 碱基序列 ss 中出现了多少次. 首先,定义一个序列 ww: \displ ...
- hdu 5288||2015多校联合第一场1001题
pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...
- Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)
Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...
- 2018牛客暑期ACM多校训练营第一场(有坑未填)
(重新组队后的第一场组队赛 也是和自己队友的一次磨合吧 这场比赛真的算是一个下马威吧……队友上手一看 啊这不是莫队嘛 然后开敲 敲完提交发现t了 在改完了若干个坑点后还是依然t(真是一个悲伤的故事)然 ...
- 比赛总结——牛客网 NOIP赛前集训营提高组模拟第一场
第一场打的很惨淡啊 t1二分+前缀最小值没想出来,20分的暴力也挂了,只有10分 t2数位dp,调了半天,结果因为忘了判0的特殊情况WA了一个点,亏死 t3emmmm.. 不会 imone说是DSU ...
- NOI.AC NOIP模拟赛 第一场 补记
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...
随机推荐
- Guitar Pro如何更改五线谱的符杆方向
可能有的小伙伴不知道Guitar Pro是什么软件,我先稍微给大家介绍一下~ Guitar Pro是专为帮助所有吉他爱好者学习.绘谱.创作的多功能软件.它包含所有吉他的现有指法和音色,可以帮助我们了解 ...
- Linux vim基本的使用方法
一.vim 的三种模式 (1) 插入模式 在插入模式中,才能输入文字:要进入插入模式,可以按键 “i”:如果要进入插入模式时,直接切换到下一行,可以输入“o”: (2) 命令模式 在命令模式中,主要进 ...
- zabbix监控WEB网站性能
一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...
- 90后iOS开发者的出路,如何规划30岁前的自己(程序员必修课)
前言: 最近发生了一些和我们没有直接关系但是有间接关系的事情.比如华为“清洗”高龄基层员工,比如游戏公司2号员工拿不到股份而离职.先不说事实到底如何,起码很多码农是心有戚戚焉. 最近一年多也发生了一些 ...
- Java ActionListenner类的一些理解
Java的ActionListenner事实上我去年年这个时候大概就已经接触到了,也学会了比较简单的使用.但却始终不能理解ActionListenner的一系列的运行是怎么维持这么一个联系的? 我产生 ...
- 进程间通信与ipcs使用7例
进程间通信(IPC, inter-process communication)实现进程间消息的传递,对于用户地址空间相互独立的两个进程而言,实现通信可以通过以下方式: 由内核层面分配内存,两进程共享该 ...
- 身体质量指数BMI
Solution: 方法一:"Python语言程序设计"(中国大学MOOC平台)的答案 分析:对比两种指标,将共性(相同的区间)和异性(不同的区间)细分.这样两种指标的判断条件(不 ...
- EMCAscript6随心所记
es6的支持情况http://kangax.github.io/compat-table/es6/ 1.let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变 ...
- Vue的冒泡事件
由于业务需求需要,需要在一个元素中的子元素添加一个点击事件. 但是刚好父元素也有一个点击事件.这个时候我们就需要使用到Vue中的阻止事件冒泡了.
- ansible模块介绍之ios_command
一.模块简介 ios_command此模块将任意命令发送到ios节点并返回设备读取的结果 此模块不支持在配置模式下使用,即只支持在用户模式>和特权模式#下使用 官方文档地址:https://do ...