EXAM-2018-8-10

F

突然卡了一会的水题

M

这题有点坑

考虑到一个数列的第一个数肯定会有 我们可以贪心的认为最优的方案是一个数列的第一个与另一个数列所有数的和。但是很容易找到反例

1 2 4 5

1 2 4 5

1先跟1 然后与2 然后1与4 而实际上这时的最佳是2与2

这个时候要么是1继续往后遍历另一个数组 要么是轮换到2 2与眼前的数组 2和2之后还是轮到1与4 先预先将第一个数与另一个数列的所有数的和存入优先队列中 然后处理时再将这个数的下一个数与同位置的另一个数列的和存入

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e5+7;
int s[maxn],p[maxn];
int id[maxn];
struct qnode
{
ll a;
ll b;
int id;
qnode(ll _v=0,ll _c=0):a(_v),b(_c){}
bool operator <(const qnode &r)const
{
return a+b>r.a+r.b;
}
};
priority_queue<qnode>Q;
template<class T>
void read(T &res)
{
res = 0;
char c = getchar();
T f = 1;
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)
{
putchar('-');
x = -x;
}
if(x >= 10)
{
out(x / 10);
}
putchar('0' + x % 10);
}
int main(){
int n,ans=0;
read(n);
qnode temp(0,0);
for(int i=1;i<=n;i++){
read(s[i]);
}
for(int i=1;i<=n;i++){
read(p[i]);
}
for(int i=1;i<=n;i++){
qnode a(s[1],p[i]);
a.id=1;
Q.push(a);
}
while(ans!=n)
{
temp=Q.top();
Q.pop();
ans++;
if(temp.a+temp.b!=0)//防止超出
out(temp.a+temp.b);
printf(" ");
temp.id++;
temp.a=s[temp.id];
Q.push(temp);
}
return 0;
}

K

一道比较裸的LCA 也比较常见的预处理 就是要预处理50次方的...当时没想到

#include<bits/stdc++.h>
#define mod 998244353ll
const int maxn=300000+10;
using namespace std;
#define ll long long
struct Edge{
ll v , next;
}e[maxn << 1];
ll power(ll a,ll b){
ll ans = 1;
while(b)
{
if(b & 1)ans=ans*a%mod;
b>>=1;
a = (a*a) % mod;
}
return ans % mod;
}
ll n,m,dp[maxn][25],head[maxn<<1],dep[maxn],prf[maxn][55],cnt=0;
void link(ll u , ll v){
cnt++;
e[cnt].v = v;
e[cnt].next =head[u];
head[u]=cnt;
}
void DFS(ll u , ll fa){
dep[u] = dep[fa] + 1;
for(int i = 1;i <= 50;i++){
prf[u][i] = (prf[fa][i]+power(dep[u],i));
}
dp[u][0] = fa;
for(ll i=head[u];i;i=e[i].next){
ll v = e[i].v;
if(v != fa){
DFS(v , u);
}
}
}
ll LCA(ll u,ll v){
if(dep[u] < dep[v]) swap(u , v);
for(int i = 19;i >= 0;i--){
if(dep[u] >= dep[v] + (1 << i)){
u = dp[u][i];
}
}
if(u==v){
return u;
}
for(int i = 19;i >= 0;i--){
if(dp[u][i] != dp[v][i]){
u=dp[u][i];
v=dp[v][i];
}
}
return dp[u][0];
}
template<class T>
void read(T &res)
{
res = 0;
char c = getchar();
T f = 1;
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)
{
putchar('-');
x = -x;
}
if(x >= 10)
{
out(x / 10);
}
putchar('0' + x % 10);
}
int main()
{
read(n);
for(ll i = 1;i < n;i++){
ll u , v;
read(u) , read(v);
link(u,v);
link(v,u);
}
dep[1] = -1;
DFS(1,1);
for(ll j=1;j<=19;j++)
for(ll i =1;i<=n;i++)
if(dp[i][j - 1]) dp[i][j] = dp[dp[i][j-1]][j-1];
read(m);
while(m--){
ll u , v ,k;
read(u),read(v),read(k);
ll an = LCA(u,v);
out(((prf[u][k] + prf[v][k]) - (prf[an][k] + prf[dp[an][0]][k])) % mod);
printf("\n");
}
return 0;
}

Self-examination

个人训练赛结束 然后就是组队训练赛了

感觉这段时间还是不够努力 并不是特别的专心

然后呢 既然是学习 还是要好好思考 记笔记 学懂

补题的时候不能照着博客写就完事了

要会用伪代码 思路更清晰一点

再努力一点就好 坚持下去


EXAM-2018-8-10的更多相关文章

  1. 申请Office 365一年免费的开发者账号攻略(2018年10月份版本)

    要进行Office 365开发,当然需要有完整的Office 365环境才可以.为了便于广大开发人员快速地启动这项工作,微软官方给所有开发人员提供了免费的一年开发者账号   那么如何申请Office ...

  2. IntelliJ IDEA 最新激活码(截止到2018年10月14日)

    IntelliJ IDEA 注册码: EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYX ...

  3. 新手C#SQL Server使用记录2018.08.10

    主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键.一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键. 主键有两张选用策略,分 ...

  4. 01 mybatis框架整体概况(2018.7.10)-

    01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...

  5. 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H)

    目录 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛链接 竞赛题目 总结 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛 ...

  6. 富士康的盈利秒杀99%的A股公司:3星|《三联生活周刊》2018年10期

    三联生活周刊·最美的数学:天才为何成群到来(2018年10期) 本期专题是数学和成都,我都跳过去没看.其他内容也还有点意思. 总体评价3星. 以下是本期一些内容的摘抄,#号后面是kindle电子版中的 ...

  7. Burn Down Chart(2018.6.4~2018.6.10)

    Burn Down Chart (2018.6.4~2018.6.10) 娄雨禛[前端部分] 曾子轩[后端部分+燃尽图] 前端 1. 娄雨禛+李鑫 1)在总工程中完成跳转,实现图片显示,并发布到Git ...

  8. Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容

    2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...

  9. 【福州活动】| "福州首届.NET开源社区线下技术交流会"(2018.11.10)

    活动介绍 微软爱开源,已是尽人皆知的事实.自从收购全球最大的开源社区 GitHub 之后,微软依旧使 GitHub 保持独立运营,并且通过此项举措,微软本身已经成为最大的社区服务者. .NET Cor ...

  10. 【2018.8.10】四连测day4 题解

    T1:给出一棵 $n$ 个节点的无根树,其中 $m$ 个节点是特殊节点,求对于任意 $i ∈ [0, m]$,包含 $i$ 个特殊节点的联通块个数$\mod 998244353$. $1<=n, ...

随机推荐

  1. Mybatis框架的简单配置

    Mybatis 的配置 1.创建项目(当然,这是废话) 2.导包 下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis ...

  2. 从1到n整数中1的个数

    [问题]求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.A ...

  3. shell下32位随机密码生成

    最简单的两个  参考 zzx@zzx120:~$ date | md5sum|cut -c1-790cdbd8 zzx@zzx120:~$ echo  `< /dev/urandom tr -d ...

  4. 8. react 基础 - props 默认值和类型限制 与 Props , State , render 函数 关系

    一. PropTypes 与 DefaultProps 官方文档 1. PropTypes 属性校验 引入 PropTypes import PropTypes from 'prop-types'; ...

  5. 应用层上的协议HTTP

    HTTP http://www.runoob.com/http/http-tutorial.html https://www.cnblogs.com/houfee/articles/9161847.h ...

  6. SPOJ 3883. LATGACH3/ UVA 10918

    用1*2的方块去覆盖3*n的方块 http://www.cnblogs.com/staginner/archive/2011/12/16/2290020.html 玉斌大神的题解 其实我昨晚想得跟斌神 ...

  7. LeetCode——139. 单词拆分

    给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典中没有重复 ...

  8. SQL基础教程(第2版)第4章 数据更新:4-3 数据的更新(UPDATE)

    第4章 数据更新:4-3 数据的更新(UPDATE) ● 使用UPDATE语句可以更改(更新)表中的数据.● 更新部分数据行时可以使用WHERE来指定更新对象的条件.通过WHERE子句指定更新对象的U ...

  9. Linux(CENTOS7) Nginx负载均衡简单配置

    负载均衡的作用 1.转发功能 按照一定的算法[权重.轮询],将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量. 2.故障移除 通过心跳检测的方式,判断应用服务器当前是否可以正常工 ...

  10. LeetCode——739. 每日温度

    根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 temperatures = ...