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)的更多相关文章

  1. 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 ...

  2. 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 ...

  3. Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)

    题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...

  4. Codeforces Round #376 (Div. 2) C. Socks---并查集+贪心

    题目链接:http://codeforces.com/problemset/problem/731/C 题意:有n只袜子,每只都有一个颜色,现在他的妈妈要去出差m天,然后让他每天穿第 L 和第 R 只 ...

  5. Codeforces Round #376 (Div. 2) F. Video Cards 数学 & 暴力

    http://codeforces.com/contest/731/problem/F 注意到一个事实,如果你要找一段区间中(从小到大的),有多少个数是能整除左端点L的,就是[L, R]这样.那么,很 ...

  6. 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 ...

  7. 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 ...

  8. Codeforces Round #376 (Div. 2) C. Socks —— 并查集 + 贪心

    题目链接:http://codeforces.com/contest/731/problem/C 题解: 1.看题目时,大概知道,不同的袜子会因为要在同一天穿而差生了关联(或者叫相互制约), 其中一条 ...

  9. Codeforces Round #376 (Div. 2) C D F

    在十五楼做的cf..一会一断...比赛的时候做出了ABCF 就没有时间了 之后没看题解写出了D..E是个神奇的博弈(递推或者dp?)看了题解也没有理解..先写了CDF.. C 有n个袜子 每个袜子都有 ...

随机推荐

  1. tensorflow版的bvlc模型

    研究相关的图片分类,偶然看到bvlc模型,但是没有tensorflow版本的,所以将caffe版本的改成了tensorflow的: 关于模型这个图: 下面贴出通用模板: from __future__ ...

  2. Emacs下的中文输入

    Emacs如此优秀的编辑器,如果输入中文不顺畅,不免遗憾.可惜现实是折腾很久也未必用得称心如意,作为一个重度(也许是中毒) Emacs使用者,根据个人经验写下此文,希望对同道中人有所帮助. 在Wind ...

  3. 转载:《TypeScript 中文入门教程》

    缘由 事情是这样的,我想搜索 TypeScript 中文教程,结果在 https://www.baidu.com , https://cn.bing.com ,上都找不到官方的翻译,也没有一个像样的翻 ...

  4. hdu 5929 Basic Data Structure

    ゲート 分析: 这题看出来的地方就是这个是左结合的,不适用结合律,交换律. 所以想每次维护答案就不怎么可能了.比赛的时候一开始看成了异或,重读一遍题目了以后就一直去想了怎么维护答案...... 但是很 ...

  5. Windows 10系统更换Windows 7系统磁盘分区注意事项二

    1.在原WIN10系统中将硬盘的GPT分区表格式转换为MBR分区表格式 上一篇关于新机预装WIN10系统更换为WIN7系统中说到需要将硬盘的GPT分区表格式转换为MBR分区表格式,在文章末尾给出的链接 ...

  6. mysql取前几行数据limit用法

    转自http://www.cnblogs.com/study100/archive/2013/07/30/3224250.html 在mysql中是没有top关键字的,在mysql中可以用limit来 ...

  7. 安装phpredisadmin linux nginx服务器下

    1.下载phpRedisAdmin:git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git 2.cd phpRedisAdmin   ...

  8. myhandle

    #ifndef my_handle_h #define my_handle_h #include <stdint.h> #include "mydef.h" #incl ...

  9. JavaEE Spring

    1.  Spring以一己之力撼动了Sun公司的JavaEE传统重量级框架(EJB),逐渐成为使用最多的JavaEE企业应用开发框架. 2.  Spring是分层的JavaEE应用一站式的轻量级开源框 ...

  10. #Deep Learning回顾#之2006年的Science Paper

    大家都清楚神经网络在上个世纪七八十年代是着实火过一回的,尤其是后向传播BP算法出来之后,但90年代后被SVM之类抢了风头,再后来大家更熟悉的是SVM.AdaBoost.随机森林.GBDT.LR.FTR ...