我好菜啊,ARC注定出不了F系列。要是出了说不定就橙了。

C - Splitting Pile

题意:把序列分成左右两部分,使得两边和之差最小。

#include<cstdio>
#include<algorithm>
#define MN 2100001
using namespace std; int n,m,a[MN];
long long sum1=,sum2=,mmh=1e18;
long long _abs(long long x){return x<?-x:x;}
int main(){
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&a[i]),sum2+=a[i];
for (int i=;i<n;i++) if (sum1+=a[i],_abs(sum2-sum1-sum1)<mmh) mmh=abs(sum2-sum1-sum1);
printf("%d\n",mmh);
}

D - Fennec VS. Snuke

题意:一棵树,初始有一个白点一个黑点,两人轮流操作,分别把白区域的黑区域拓展一个点,问谁先无法操作。

#include<cstdio>
#include<vector>
#include<algorithm>
#define MN 2100001
using namespace std; int n,m,a[MN],x,y,fa[MN],s[MN],d[MN];
vector<int> v[MN];
void dfs(int x,int f){
fa[x]=f;s[x]=;
for (int i=;i<v[x].size();i++)
if (v[x][i]!=f){
d[v[x][i]]=d[x]+;
dfs(v[x][i],x);
s[x]+=s[v[x][i]];
}
}
int main(){
scanf("%d",&n);
for (int i=;i<n;i++){
scanf("%d%d",&x,&y);
v[x].push_back(y);v[y].push_back(x);
}
dfs(,);
x=n;y=d[x]-(d[x]->>);
while (d[x]!=y) x=fa[x];
if (n-s[x]>s[x]) puts("Fennec");else puts("Snuke");
}

E - Awkward Response

题意:猜数,每次可以询问一个数,回答这个数的大小和字典序与答案的大小关系是否相同。

逐位确定即可。

#include<cstdio>
#include<vector>
#include<algorithm>
#define MN 2100001
using namespace std; int n,m,a[MN],x,y;
vector<int> v[MN];
long long g=;
bool bo=;
char s[]="",c[];
int main(){
for (int i=;i<=;i++){
int l=i==,r=,mid;
while (l<r){
mid=l+r>>;
s[i]=mid+'';
printf("? %s\n",s);
fflush(stdout);
scanf("%s",c);
if (c[]=='Y') r=mid;else l=mid+;
}
if (l!=) bo=;
g=g*+l;
printf("? %d\n",g+);
fflush(stdout);
scanf("%s",c);
if (bo){
if (c[]=='N') return printf("! %d\n",g),fflush(stdout),;
}else{
if (c[]=='Y') return printf("! %d\n",g),fflush(stdout),;
}
s[i]=l+'';
}
}

F - Mole and Abandoned Mine

题意:给一个图,要求删掉一条边,使得1到n有且只有一条简单路径。

状压dp

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int n,m,map[][],x,y,z,mmh[<<][],o[<<][];
inline int work(int a,int b){
int mmh=;
for (int i=;i<n;i++)
if ((a>>i)&) mmh+=o[b][i];
return mmh;
}
int main(){
scanf("%d%d",&n,&m);
memset(map,,sizeof(map));
memset(mmh,,sizeof(mmh));
while(m--){
scanf("%d%d%d",&x,&y,&z);x--;y--;
map[x][y]=map[y][x]=z;
}
for (int i=;i<(<<n);i++)
for (int j=;j<n;j++){
o[i][j]=;
for (int k=;k<n;k++)
if ((i>>k)&) o[i][j]+=map[j][k];
}
mmh[][]=;
for (int i=;i<(<<n);i++)
for (int j=;j<n;j++)
if ((i>>j)&){
for (int k=;k<n;k++)
if (map[j][k])
if (!((i>>k)&)) mmh[i|(<<k)][k]=min(mmh[i|(<<k)][k],mmh[i][j]+work(i,<<k)-map[j][k]); int u=(<<n)--i;
for (int p=u;p;p=(p-)&u) mmh[i|p][j]=min(mmh[i|p][j],mmh[i][j]+work(i^(<<j),p));
}
printf("%d\n",mmh[(<<n)-][n-]);
}

AtCoder Regular Contest 078的更多相关文章

  1. AtCoder Regular Contest 078 D

    D - Fennec VS. Snuke Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statement F ...

  2. AtCoder Regular Contest 078 C

    C - Splitting Pile Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement Snu ...

  3. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

  4. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  5. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  6. AtCoder Regular Contest 093

    AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...

  7. AtCoder Regular Contest 094

    AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...

  8. AtCoder Regular Contest 095

    AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...

  9. AtCoder Regular Contest 102

    AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...

随机推荐

  1. 9.python面向对象编程

    面向对象的几个核心特性如下 Class 类一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都具备的属性(variables(data)).共同的方法 Object 对象 一 ...

  2. C# 委托详解(一)

    1.委托简单例子 class eeProgram { // 声明delegate对象 public delegate string CompareDelegate(int a, int b); // ...

  3. ios 中的循环引用问题及解决

    循环引用,指的是多个对象相互引用时,使得引用形成一个环形,导致外部无法真正是否掉这块环形内存.其实有点类似死锁. 举个例子:A->B->C->....->X->B   - ...

  4. iOS框架搭建(MVC,自定义TabBar)--微博搭建为例

    项目搭建 1.新建一个微博的项目,去掉屏幕旋转 2.设置屏幕方向-->只有竖向 3.使用代码构建UI,不使用storyboard 4.配置图标AppIcon和LaunchImage 将微博资料的 ...

  5. Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版

    Microsoft Visual Studio 2012 Ultimate旗舰版(VS2012中文版下载)是一个最先进的开发解决方案,它使各种规模的团队能够设计和创建出使用户欣喜的引人注目的应用程序. ...

  6. 阅读MDN文档之StylingBoxes(五)

    目录 BoxModelRecap Box properties Overflow Background clip Background origin Outline Advanced box prop ...

  7. 分享非常好用的前端分页js工具类 灵活 简单易懂

    分享自己封装的前端分页js工具类  下面是默认样式效果截图 可以随意更改js及css 很灵活 /** * pageSize, 每页显示数 * pageIndex, 当前页数 * pageCount 总 ...

  8. 论文笔记-Squeeze-and-Excitation Networks

    作者提出为了增强网络的表达能力,现有的工作显示了加强空间编码的作用.在这篇论文里面,作者重点关注channel上的信息,提出了"Squeeze-and-Excitation"(SE ...

  9. JavaScript调试技巧

    熟悉工具可以让工具在工作中发挥出更大的作用.尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug. 文中已经列出了14个你可能不知道的调试技巧,但是 ...

  10. Keep Mind Working

    想找一个这样的地方,可以让脑袋持续运转着.不会像游戏一样让人着迷,不会像有色电视一样让人想错地方,也不会像工作一样充满太多严密.就是让脑袋继续转着,适意地思考些什么. 之前会跑去游戏里,至少没有太污. ...