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个袜子 每个袜子都有 ...
随机推荐
- Chome v42 支持Java
从ver42开始,Chrome默认禁用了NPAPI.可以去chrome://flags/#enable-npapi开启,但是google很有可能在9月从代码中彻底移除NPAPIFirefox也有这个意 ...
- It matters, In the coming year ,i will stand here.
人在安逸中会迷失自己,直至看不到远处的光亮.在一个人迷茫的时候便需要寻找认同感,于是我来到了这里.比我更加优秀的人都在默默的努力,我怎么能允许自己在原地踏步.在这一刻我似乎又看了黑夜中的一束光. 初识 ...
- Nuget包之间的依赖
为什么我们使用依赖呢??原因是某些资源是基于某些资源的基础上才可以运行的,比如bootstrap基于Jquery,EntityFramework.zh-Hans基于EntityFramework,如果 ...
- recovery编译问题汇总
1.修改支持USB大容量存储 (1).首先需要查看手机lun位置 手机链接电脑,打开cmd命令行,依次输入以下命令: adb shell find /sys -name "lun" ...
- iOS安全—阻止tweak注入hook api
http://blog.csdn.net/zcrong/article/details/51617348 在Other Linker Flags中添加: -Wl,-sectcreate,__RESTR ...
- iOS 支付宝第三方使用步骤
使用支付宝进行一个完整的支付功能,大致有以下步骤: 1 与支付宝进行签约,获得商户ID(partner)和账号ID(seller) 2 下载相应的公钥私钥文件(加密签名用) 3 下载支付宝SDK 4 ...
- Android studio 提示:Can't use Subversion command line client: svn Probably the path to Subversion executable is wrong. Fix it.
1.参考来源:http://my.oschina.net/fyyy/blog/519353 按照下图,svn相关选项不要选.
- Windows下QT Creator工程中添加文件夹
在QT项目,常常会有很多头文件和源文件,但是QT Creator中却没有添加文件夹的功能,造成项目代码混乱. 下面是建立文件的步骤: 1.打开工程目录,在目录下建立文件夹,如建立文件SerialP ...
- Emmet 使用说明。
Emmet for Sublime Text Official Emmet plugin for Sublime Text. How to install Available actions Exte ...
- android开发中的问题集锦(慢慢搬运...)
1, android 设置ExpandableListView 系统默认箭头到右边 if(android.os.Build.VERSION.SDK_INT < android.os.Build. ...