Codeforces Round #376 (Div. 2)
A 模拟
#include <cstdio>
#include <cstring>
int Ans;
char Str[];
inline int Abs(int x) {return x>?x:-x;}
inline int Min(int x,int y) {return x>y?y:x;}
int main()
{
char u='a'; Ans=;
scanf("%s",Str+);
for (int i=;i<=strlen(Str+);i++)
Ans+=Min(Abs(Str[i]-u),-Abs(Str[i]-u)),u=Str[i];
printf("%d\n",Ans);
return ;
}
A
B 贪心
#include <cstdio>
int n,a[];
bool Flag;
int main()
{
scanf("%d",&n); Flag=true;
for (int i=;i<=n;i++) scanf("%d",&a[i]);
for (int i=;i<n;i++)
{
if (a[i]&)
{
if (a[i+]==)
{
Flag=false;
break;
}
a[i+]--;
}
}
if (a[n]&) Flag=false;
if (Flag) puts("YES"); else puts("NO");
return ;
}
B
C 并查集+暴力 没写路径压缩T了好久..
#include <cstdio>
#include <cstring>
#include <vector>
#define pb push_back
using namespace std;
const int Maxn=;
int Father[Maxn],c[Maxn],Last[Maxn],l[Maxn],r[Maxn],n,m,k,tot,Cnt[Maxn],Ans,num[Maxn];
vector<int> V[Maxn];
int GetFather(int x)
{
if (x==Father[x]) return x;
return Father[x]=GetFather(Father[x]);
}
inline void Merge(int x,int y) {Father[GetFather(x)]=GetFather(y);}
inline int Max(int x,int y) {return x>y?x:y;}
int main()
{
scanf("%d%d%d",&n,&m,&k); tot=;
for (int i=;i<=n;i++) scanf("%d",&c[i]);
for (int i=;i<=n;i++) Father[i]=i;
for (int i=;i<=m;i++) scanf("%d%d",&l[i],&r[i]),Merge(l[i],r[i]);
for (int i=;i<=n;i++) if (Father[i]==i) num[i]=++tot;
for (int i=;i<=n;i++) V[num[GetFather(i)]].pb(c[i]);
Ans=;
for (int i=;i<=tot;i++)
{
int Ret=,Tmp=V[i].size();
for (int j=;j<Tmp;j++) Cnt[V[i][j]]=;
for (int j=;j<Tmp;j++)
{
Cnt[V[i][j]]=Cnt[V[i][j]]+;
Ret=Max(Ret,Cnt[V[i][j]]);
}
Ans+=Tmp-Ret;
}
printf("%d",Ans);
return ;
}
C
D 模拟+看了好久的题意 就是一个操作是每个数+1,是的最终的序列为字典序,比较的是序列,比较相邻两个得出可以在的区间求交即可.
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <vector>
#define pb push_back
using namespace std;
const int Maxn=;
int n,c,Len[Maxn],cnt,B[Maxn],x;
vector<int> V[Maxn];
inline int Min(int x,int y) {return x>y?y:x;}
void Work(int x,int y)
{
int LEN=Min(Len[x],Len[y]);
for (int i=;i<LEN;i++)
{
if (V[x][i]==V[y][i]) continue;
if (V[x][i]<V[y][i])
{
B[]++,B[c-V[y][i]+]--;
B[c-V[x][i]+]++,B[c]--;
} else B[c-V[x][i]+]++,B[c-V[y][i]+]--;
cnt++; return;
}
if (Len[x]>Len[y])
{
puts("-1");
exit();
}
}
int main()
{
scanf("%d%d",&n,&c);
for (int i=;i<=n;i++)
{
scanf("%d",&Len[i]);
for (int j=;j<=Len[i];j++) scanf("%d",&x),V[i].pb(x);
if (i!=) Work(i-,i);
}
int Sum=;
for (int i=;i<c;i++)
{
Sum+=B[i];
if (Sum==cnt)
{
printf("%d\n",i);
return ;
}
}
puts("-1");
return ;
}
D
E 直接模拟..
#include<bits/stdc++.h>
using namespace std;
int n,tot,i,a[];
inline int Max(int x,int y) {return x>y?x:y;}
int main()
{
scanf("%d",&n);
for(i=;i<=n;i++) scanf("%d",&a[i]),a[i]+=a[i-];
tot=a[n];
for(i=n-;i>;i--) tot=Max(tot,a[i]-tot);
printf("%d\n",tot);
}
E
F 枚举前缀就可以了
#include <cstdio>
#define LL long long
const LL Maxn=;
LL n,x,vis[Maxn+],Sum[Maxn+],Ans;
int main()
{
scanf("%I64d",&n);
for (LL i=;i<=n;i++) scanf("%I64d",&x),vis[x]++;
for (LL i=;i<=Maxn;i++) Sum[i]=Sum[i-]+vis[i];
Ans=;
for (LL i=;i<=Maxn;i++)
if (vis[i]>)
{
LL Res=,t=Maxn/i;
for (LL j=;j<=t;j++) Res+=(Sum[j*i-]-Sum[(j!=)?j*i-i-:j*i-i])*(j-)*i;
Res+=(Sum[Maxn]-Sum[t*i-])*t*i;
if (Res>Ans) Ans=Res;
}
printf("%I64d\n",Ans);
return ;
}
F
Codeforces Round #376 (Div. 2)的更多相关文章
- Codeforces Round #376 (Div. 2) D. 80-th Level Archeology —— 差分法 + 线段扫描法
题目链接:http://codeforces.com/contest/731/problem/D D. 80-th Level Archeology time limit per test 2 sec ...
- Codeforces Round #376 (Div. 2) C题 Socks(dsu+graphs+greedy)
Socks Problem Description: Arseniy is already grown-up and independent. His mother decided to leave ...
- Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)
题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...
- Codeforces Round #376 (Div. 2) C. Socks---并查集+贪心
题目链接:http://codeforces.com/problemset/problem/731/C 题意:有n只袜子,每只都有一个颜色,现在他的妈妈要去出差m天,然后让他每天穿第 L 和第 R 只 ...
- Codeforces Round #376 (Div. 2) F. Video Cards 数学 & 暴力
http://codeforces.com/contest/731/problem/F 注意到一个事实,如果你要找一段区间中(从小到大的),有多少个数是能整除左端点L的,就是[L, R]这样.那么,很 ...
- Codeforces Round #376 (Div. 2) F. Video Cards —— 前缀和 & 后缀和
题目链接:http://codeforces.com/contest/731/problem/F F. Video Cards time limit per test 1 second memory ...
- Codeforces Round #376 (Div. 2) A. Night at the Museum —— 循环轴
题目链接: http://codeforces.com/contest/731/problem/A A. Night at the Museum time limit per test 1 secon ...
- Codeforces Round #376 (Div. 2) C. Socks —— 并查集 + 贪心
题目链接:http://codeforces.com/contest/731/problem/C 题解: 1.看题目时,大概知道,不同的袜子会因为要在同一天穿而差生了关联(或者叫相互制约), 其中一条 ...
- Codeforces Round #376 (Div. 2) C D F
在十五楼做的cf..一会一断...比赛的时候做出了ABCF 就没有时间了 之后没看题解写出了D..E是个神奇的博弈(递推或者dp?)看了题解也没有理解..先写了CDF.. C 有n个袜子 每个袜子都有 ...
随机推荐
- Nodejs express中创建ejs项目,解决express下默认创建jade,无法创建ejs问题
最近在看<Node.js开发指南>,看到使用nodejs进行web开发的时候,准备创建ejs项目遇到问题了, 书上命令为: express -t ejs microblog 可是执行后,仍 ...
- 常用C# DateTime 日期计算
//今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateStrin ...
- web前端代码编写体验
最好是使用HTML5的有意义的标签,并尝试在不同的,老版本的浏览器中也保持一致,不然你会发现,满屏都是div,后期进行代码验证,修改和查找简直是一场大灾难. 而且,编写代码的时候,为了方便以后代码的复 ...
- 话说Spring Security权限管理(源码)
最近项目需要用到Spring Security的权限控制,故花了点时间简单的去看了一下其权限控制相关的源码(版本为4.2). AccessDecisionManager spring security ...
- 油猴 greasemonkey 背景音乐 火狐 chrome 背景音乐
火狐,chrome背景音乐 http://www.w3school.com.cn/tags/tag_audio.asp js插入背景音乐,猴油脚本使用 var audio = document.cre ...
- AngularJS-UI-Router
涉及知识点: $stateProvider,$urlRouteProvider ui-href $stateParams,$state 1.如何引用依赖angular-ui-router angula ...
- node开发指南
Node.js 能做什么 正如 JavaScript 为客户端而生,Node.js 为网络而生.Node.js 能做的远不止开发一个网站那么简单,使用 Node.js,你可以轻松地开发: 具有复杂逻辑 ...
- 114 的 dns 的解析测试
114 的 dns 号称使用 BGP Global AnyCast 技术多点部署 的方式, 可以将用户请求导向到"就近"的服务器,理论上是可以得到域名网络就近解析的IP的,所以将 ...
- scanf_s 可能会出现的死循环
VS2015中提供了scanf_s().在调用时,必须提供一个数字以表明最多读取多少位字符. scanf_s("%s& ...
- php 常用数组操作
php常用的数组操作函数,包括数组的赋值.拆分.合并.计算.添加.删除.查询.判断.排序等 array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 <?p ...