【AtCoder】ARC078

C - Splitting Pile

枚举从哪里开始分的即可

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define MAXN 200005
#define eps 1e-12
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {res = 0;T f = 1;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {res = res * 10 + c - '0';c = getchar();}res *= f;
}
template<class T>
void out(T x) {if(x < 0) {x = -x;putchar('-');}if(x >= 10) {out(x / 10);}putchar('0' + x % 10);
}
int N;
int64 s[MAXN];
void Solve() {read(N);for(int i = 1 ; i <= N ; ++i) read(s[i]);for(int i = 1 ; i <= N ; ++i) s[i] += s[i - 1];int64 ans = abs(s[N] - 2 * s[1]);for(int i = 1 ; i < N ; ++i) {ans = min(ans,abs(s[N] - 2 * s[i]));}out(ans);enter;
}
int main() {
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifSolve();
}

D - Fennec VS. Snuke

看树上这段链从Fennec开始数第K / 2和K / 2+1的边断开之后,分成的两个子树哪个结点多
Fennec只有当节点数大于Snuke才会胜利

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define MAXN 100005
#define eps 1e-12
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {res = 0;T f = 1;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {res = res * 10 + c - '0';c = getchar();}res *= f;
}
template<class T>
void out(T x) {if(x < 0) {x = -x;putchar('-');}if(x >= 10) {out(x / 10);}putchar('0' + x % 10);
}
struct node {int to,next;
}E[MAXN * 2];
int head[MAXN],sumE,N;
int dep[MAXN],fa[MAXN],siz[MAXN];
void add(int u,int v) {E[++sumE].to = v;E[sumE].next = head[u];head[u] = sumE;
}
void dfs(int u) {dep[u] = dep[fa[u]] + 1;siz[u] = 1;for(int i = head[u] ; i ; i = E[i].next) {int v = E[i].to;if(v != fa[u]) {fa[v] = u;dfs(v);siz[u] += siz[v];}}
}
void Solve() {read(N);int u,v;for(int i = 1 ; i < N ; ++i) {read(u);read(v);add(u,v);add(v,u);}dfs(1);int t = dep[N] / 2 - 1;u = N;while(t--) {u = fa[u];}if(N - siz[u] > siz[u]) puts("Fennec");else puts("Snuke");
}
int main() {
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifSolve();
}

E - Awkward Response

如果不为1后面接的只有0的形式,那么问出第一个\(10^k\)为N则证明数字有k位,然后可以通过二分,判断中间值是否小于当前值可以把mid扩大10倍,这样可以知道中间值的字典序是否大于还是小于n,因为长度相等字典序顺序就是大小顺序,所以可行
如果是1后面接的只有0,那么问出第一个合法的k个9,这个数就是\(10^{k - 1}\)

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define MAXN 100005
#define eps 1e-12
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {res = 0;T f = 1;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {res = res * 10 + c - '0';c = getchar();}res *= f;
}
template<class T>
void out(T x) {if(x < 0) {x = -x;putchar('-');}if(x >= 10) {out(x / 10);}putchar('0' + x % 10);
}
bool Query(int64 t) {putchar('?');space;out(t);enter;fflush(stdout);char s[5];scanf("%s",s);return s[0] == 'Y';
}
void Solve() {int64 v = 1;bool f = 0;for(int i = 1 ; i <= 10 ; ++i) {if(!Query(v)) {f = 1;v /= 10;break;}v *= 10;}if(!f) {v = 1;for(int i = 1 ; i <= 10 ; ++i) {if(Query(v * 10 - 1)) {putchar('!');space;out(v);enter;return;}v *= 10;}}int64 L = v,R = min(v * 10 - 1,(int64)1e9);while(L < R) {int64 mid = (L + R + 1) >> 1;if(!Query(mid * 10)) L = mid;else R = mid - 1;}putchar('!');space;out(L + 1);enter;
}
int main() {
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifSolve();
}

F - Mole and Abandoned Mine

为啥算完2s跑出来不到0.1s???
atc扩充我的想象力系列???
这个就是把这唯一一条路径挑出来,肯定是希望这条路径和路径上每个点上挂的一个联通块价值最大,然后用总路径价值减掉
然后dp[i][S]表示当前走到第i个点,已经扩充的点集是S,就是每次路径往下走一个点,或者扩充一个包括i其余的点不在S中的点集即可,复杂度\(O(N\times 3^{N})\)
然后我过于智障写错了好几遍,cao

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define MAXN 10005
#define eps 1e-12
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {res = 0;T f = 1;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {res = res * 10 + c - '0';c = getchar();}res *= f;
}
template<class T>
void out(T x) {if(x < 0) {x = -x;putchar('-');}if(x >= 10) {out(x / 10);}putchar('0' + x % 10);
}
int N,M;
struct node {int to,next,val;
}E[1005];
int sumE,head[25],pos[(1 << 15) + 5];
int f[16][(1 << 15) + 5],h[16][(1 << 15) + 5],sum[(1 << 15) + 5];
void add(int u,int v,int c) {E[++sumE].to = v;E[sumE].next = head[u];E[sumE].val = c;head[u] = sumE;
}
inline int lowbit(int x) {return x & (-x);
}
void Init() {read(N);read(M);int u,v,c;for(int i = 1 ; i <= M ; ++i) {read(u);read(v);read(c);add(u,v,c);add(v,u,c);h[u][1 << v - 1] = c;h[v][1 << u - 1] = c;}for(int i = 1 ; i <= N ; ++i) {for(int j = 1 ; j < (1 << N) ; ++j) {if(lowbit(j) == j) continue;h[i][j] = h[i][j - lowbit(j)] + h[i][lowbit(j)];}}for(int i = 1 ; i <= N ; ++i) pos[(1 << i - 1)] = i;for(int i = 1 ; i < (1 << N) ; ++i) {sum[i] = sum[i - lowbit(i)] + h[pos[lowbit(i)]][i - lowbit(i)];}
}
void Solve() {for(int i = 1 ; i <= N ; ++i) {for(int j = 0 ; j < (1 << N) ; ++j) {f[i][j] = -1e9;}}f[1][1] = 0;for(int j = 0 ; j < (1 << N - 1) ; ++j) {for(int i = 1 ; i <= N ; ++i) {int S = j << 1 | 1;if(!(S & (1 << i - 1))) continue;int L = S ^ (1 << i - 1);for(int T = L; T ; T = (T - 1) & L) {if(f[i][S ^ T] >= 0)f[i][S] = max(f[i][S],f[i][S ^ T] + sum[T ^ (1 << i - 1)]);}if(f[i][S] >= 0) {for(int k = head[i] ; k ; k = E[k].next) {int v = E[k].to;if(!(S & (1 << v - 1))) {f[v][S ^ (1 << v - 1)] = max(f[v][S ^ (1 << v - 1)],f[i][S] + E[k].val);}}}}}out(sum[(1 << N) - 1] - f[N][(1 << N) - 1]);enter;
}
int main() {
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifInit();Solve();
}

转载于:https://www.cnblogs.com/ivorysi/p/10507718.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20172325 2018-2019-1 《Java程序设计》第二周学习总结

20172325 2018-2019-1 《Java程序设计》第二周学习总结 教材学习内容总结 3.1集合 集合是一种聚集、组织了其他对象的对象。集合可以分为两大类&#xff1a;线性集合和非线性集合。线性集合&#xff1a;一种其元素按照直线方式组织的集合。非线性集合&#xff1a;一种其元素按某…

数据库视图

测试表:user有id&#xff0c;name&#xff0c;age&#xff0c;sex字段 测试表:goods有id&#xff0c;name&#xff0c;price字段 测试表:ug有id&#xff0c;userid&#xff0c;goodsid字段 视图的作用实在是太强大了&#xff0c;以下是我体验过的好处&#xff1a; 作用一&…

题解 luogu P2568 GCD

题解 luogu P2568 GCD 时间&#xff1a;2019.3.11 欧拉函数前缀和 题目描述 给定整数\(N\)&#xff0c;求\(1\le x,y \le N\)且\(\gcd(x,y)\)为素数的数对\((x,y)\)有多少对. 分析 枚举素数\(p\), 先求出\(1\le x,y \le \left \lfloor \dfrac n p \right \rfloor\)且\(\gcd(x, …

解决前后台发送请求或者接口之间发送请求乱码的问题

前后台传中文乱码&#xff1a; 前台使用encodeURI 进行编码 后台使用decode进行解码 如果接口之间调用出现乱码.接收方是&#xff1f;&#xff1f;&#xff1f;&#xff1f;这种。传送方式明文的处理方式&#xff1a; 发送方使用decode 进行编码&#xff1a; 接收方使用的ecod…

MSDN帮助文档 无法显示该网页 的问题解决方案(转)

MSDN帮助文档 "无法显示该网页" 的问题解决方案 以前就遇到过这样的问题&#xff0c;还以为是IE7导致的。后来重新安装了IE7也没有解决。后来就重新安装MSDN了&#xff0c;非常郁闷。今天终于知道原因了。因为开了HijackThis删除了一些注册协议&#xff0c;然后发现M…

.net Core发布至IIS完全手册带各种踩坑

服务器环境配置 和各位大爷报告一下我的服务器环境 : Windows Server 2012 iis 8 小插曲开始: 运维大哥在昨天给了我一台新的server 0环境开始搭建 。 并且没有安装任何的系统补丁。 第一件事情请开始打 补丁 打完补丁之后有时补丁会不完全 ,所以需要去官网获取补丁: KB2919355…

Unity --- MeshRenderer之网格合并

创建如图所示的对象结构,parent为空对象&#xff0c;然后将下面的代码挂载到parent对象上运行即可。 1 using UnityEngine;2 using System.Collections;3 4 public class CombineMeshAndMaterials : MonoBehaviour5 {6 void Start()7 {8 CombineMesh();9 }…

css 盒模型的属性

1、盒模型 2、display 3、浮动转载于:https://www.cnblogs.com/Tang854416/p/9676424.html

前后端分离

、前后端分离的好处 &#xff08;1&#xff09;彻底解放前端 &#xff08;2&#xff09;提高工作效率&#xff0c;分工更加明确。 &#xff08;3&#xff09;局部性能提升 &#xff08;4&#xff09;降低维护成本 2、前后端分离的概念 后台只需要提供API接口&#xff0c;…

Win10还原被Windows Defender隔离的文件

Win10最新版本的Windows Defender隔离/删除的文件没有还原的选项&#xff0c;导致很多破解文件或是注册机直接隔离&#xff0c;到威胁历史记录中去却无法恢复。经过各个尝试&#xff0c;到微软官方论坛中也尝试了很多方法&#xff0c;后来发现竟然恢复啦。各位小伙伴可以试试这…

AtCoder Grand Contest 013 题解

A - Sorted Arrays 贪心&#xff0c;看看不下降和不上升最长能到哪&#xff0c;直接转移过去即可。 1 //waz2 #include <bits/stdc.h>3 4 using namespace std;5 6 #define mp make_pair7 #define pb push_back8 #define fi first9 #define se second 10 #define ALL(x…

servlet架构解析

https://www.jianshu.com/p/d433b5fb87e2

(Review cs231n) Backpropagation and Neural Network

损失由两部分组成&#xff1a; 数据损失正则化损失&#xff08;data loss regularization&#xff09; 想得到损失函数关于权值矩阵W的梯度表达式&#xff0c;然后进性优化操作&#xff08;损失相当于海拔&#xff0c;你在山上的位置相当于W&#xff0c;你进行移动&#xff0c…

springboot restful

https://www.jianshu.com/p/733d788ea94d

【计算机算法设计与分析】——排序

一.排序 二.插入排序 &#xff08;1&#xff09;算法描述 &#xff08;2&#xff09;性能分析 &#xff08;3&#xff09;寻求优化 三.归并排序 &#xff08;1&#xff09;算法思想 &#xff08;2&#xff09;性能分析 &#xff08;2&#xff09;示例 &#xff08;3&#xff09…

QT 随机数生成

下面总结了QT中随机生成的方法&#xff08;仅供学习参考&#xff09;&#xff0c;分为旧方法和新方法&#xff0c;一般来说&#xff0c;旧的方法已经被抛弃&#xff0c;在开发新的应用中推荐使用新方法。 C Code 123456789101112131415161718192021222324#include <QCoreApp…

获取/设置IFRAME内对象元素的几种JS方法

获取/设置IFRAME内对象元素的几种JS方法 iframe浏览器ie文档微软&#xff11;。IE专用(通过frames索引形象定位)&#xff1a; document.frames[i].document.getElementById(元素的ID); &#xff12;。IE专用(通过IFRAME名称形象定位)&#xff1a; document.frames[iframe的name…

高并发

https://blog.csdn.net/java_xth/article/details/81162088

多人游戏服务器

https://www.getmangos.eu/转载于:https://www.cnblogs.com/aibox222/p/9682697.html

Hbase 各个角色的工作。

HMaster的作用&#xff1a; 为region server 分配region&#xff1b;负责region server的负载均衡&#xff0c;region分裂完成监控&#xff1b;处理schema更新请求&#xff0c;数据表的创建&#xff0c;更新&#xff1b;HDFS上的垃圾文件回收&#xff1b;发现失效的region serv…