CF掉分日记 6.6 6.8
---恢复内容开始---
写的效果依旧不好 还没写完前四题比赛就结束了 而且这些普及组的题目 我大多还是缺少简单算法的灵性 总是把问题搞复杂化。
6.5 A 第一道题非常水 简单分析发现是一个快速幂的逆过程。logn时间内解决。
B 这是一个比平成的模拟要难上一点点的 模拟 因为有可能爆ll 所以写之前要把该考虑到的情况考虑好再写。
C 一眼不可做 也看不懂题目是什么意思,还是看不懂弃掉以后看见了再写https://codeforces.com/contest/1175/problem/C
D 感觉能写 一段序列分成k段 第一段乘1 第二段乘2... 求最大值 显然dp 然后 f[i][j] 表示前 i个数字分成j段的最大值 这个dp 是n^2k的相当难受 貌似斜率优化可以到nk 然后? 然后还是挂掉。
乱搞出来一个贪心 是 我从后往前拿第k 段 k-1段 每次我都选取最大的那个后缀和 nlogn 发现一直wa 没有考虑到一些因素并不是后缀和最大的是最优的因为当前数字造成的贡献不只只有前面的而且还是有后面的,所以说不太会写,考虑设p1 p2 ...pk 为每一段的断点 显然p1=1; pi<pi+1 取bi为 i~n的和 也就是后缀和 那么此时sum=1*(bp1-bp2)+2*(bp2-bp3)+..k*bk; 得到.bp1 + bp2 + bp3 + bp4 ... bpk;
发现我们只需取最大的这几个bp值即可 注意p1是强制取1的。
剩下的题目没看结束了。。。
6.8 A 是一道非常水的题目注意好关系就能AC
B 猛一看感觉是不可写的 但是实际上画个图发现每次放棋子只能放在上一个棋子的 右边 或者下边注意维护好轮换放即可。
C 是一道比较有意思的题目 看起来也不可做深入理解发现只会有两种情况 1 枚举每次放哪个数字了如果当前手牌中没有的话就一直取数字直至把这个数字取出来 然后模拟放回去。
或者是 在这个队伍之中就直接模拟排序好 如果可以成功那么一定优于第一种决策。这样就OK了!
D 好像是一个排列计数 看了一下不会写弃掉了现在再看 n<=2e5 看完题解 发现是一个很妙的树形dp
题目:https://codeforces.com/contest/1173/problem/D
哦 原来是这样的 对于一个无根树来说我们以任意的角度来看的话我们可以想象成每个点都可以是根,所以 可以以1为根 然后发现 1 任何位置都是可以放的。
考虑1的子树 由于子树必须是在一个圆弧之上 显然 。 所以子树们和父亲们放的位置决定了父亲的初始方案数 仔细思考1可以放n个位置我们让其按照一个方式放的话也把所有方案数遍历到了。
好题 于是就有转移了。下面放代码:
//#include<bits/stdc++.h>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<deque>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<algorithm>
#include<vector>
#include<cctype>
#include<utility>
#include<set>
#include<bitset>
#include<map>
#define INF 2147483646
#define ll long long
#define min(x,y) (x>y?y:x)
#define max(x,y) (x>y?x:y)
#define RI register ll
#define up(p,i,n) for(ll i=p;i<=n;++i)
#define db double
#define mod 998244353
using namespace std;
char buf[<<],*fs,*ft;
inline char getc()
{
return (fs==ft&&(ft=(fs=buf)+fread(buf,,<<,stdin),fs==ft))?:*fs++;
}
inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
inline void put(ll x)
{
x<?x=-x,putchar('-'):;
int num=;char ch[];
while(x)ch[++num]=x%+'',x/=;
num==?putchar(''):;
while(num)putchar(ch[num--]);
putchar('\n');return;
}
const int MAXN=;
int n,len;
ll fac[MAXN],sz[MAXN],f[MAXN];//f[i] 表示以i为根的子树内部的方案数
int vis[MAXN];
int lin[MAXN<<],nex[MAXN<<],ver[MAXN<<];
inline void add(int x,int y)
{
ver[++len]=y;
nex[len]=lin[x];
lin[x]=len;
}
inline void dfs(int x)
{
vis[x]=;sz[x]=;ll sum=;
for(int i=lin[x];i;i=nex[i])
{
int tn=ver[i];
if(vis[tn])continue;
dfs(tn);sum=sum*f[tn]%mod;
++sz[x];
}
//f[x]=fac[sz[x]];
if(x!=)f[x]=fac[sz[x]];
else f[x]=fac[sz[x]-];
f[x]=f[x]*sum%mod;
}
int main()
{
//freopen("1.in","r",stdin);
n=read();fac[]=;
for(int i=;i<n;++i)
{
int x,y;
x=read();y=read();
add(x,y);add(y,x);
}
for(int i=;i<=n;++i)fac[i]=fac[i-]*i%mod;
dfs();
put(f[]*n%mod);
return ;
}
剩下的题目就不说了。。不太会写也没有时间了。
CF掉分日记 6.6 6.8的更多相关文章
- cf掉分记——Avito Code Challenge 2018
再次作死的打了一次cf的修仙比赛感觉有点迷.. 还好掉的分不多(原本就太低没法掉了QAQ) 把会做的前三道水题记录在这.. A: Antipalindrome emmmm...直接暴力枚举 code: ...
- Codeforces940掉分记
掉分经过 难得这次时间比较好,下午17:35开始. 本来还很高兴,心想这回肯定不会犯困,没准排名能再上升一些呢,,可惜事与愿违-- 上来a题,光看懂题就花了一些时间. 然后开始写,结果第一遍CE,第二 ...
- Codeforces Round#402(Div.1)掉分记+题解
哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...
- CF480Div2掉分记
rating 1900+参加只有Div2的比赛也记rating了.还以为yyc报名没打会惨惨,原来不交题好像就不算参加.. 本来太晚了不想打,不过有Sinogi大佬带我还是打一打吧,apio之前练练手 ...
- cf上分的失落->高兴->更失落
cf昨日做出一个题居然div2打了1800多名直接上分了...我原以为垂直落地但是....我现在1399差一分就能蓝名了啊啊啊啊,以后不一定会有这个水平的啊,给个蓝名体验卡不行吗,多加一分会死啊... ...
- Codeforces Round 480 Div 2 光荣掉分记
痛 痛苦 痛苦啊. 越接近黄名想的越多了啊…… 都说了不要在意rating这破玩意了…… 没出E就算了,策略问题. 居然还FST了: FST个D就算了: FST个A算个**啊. 紧张的时候总会写出一些 ...
- Codeforces Round #670 (Div. 2) 深夜掉分(A - C题补题)
1406A. Subset Mex https://codeforces.com/contest/1406/problem/A Example input 4 6 0 2 1 5 0 1 3 0 1 ...
- 友链&&日记
上面友链,下面日记 友人链 最喜欢galgameの加藤聚聚 初三一本&&\(ACG\)姿势比我还丰厚的yx巨巨 更喜欢galgame的shadowice czx ZigZag胖胖 文文 ...
- 租酥雨的NOIP2018赛前日记
租酥雨的NOIP2018赛前日记 离\(\mbox{NOIP2018}\)只剩下不到一个月的时间辣! 想想自己再过一个月就要退役了,觉得有必要把这段时间的一些计划与安排记录下来. 就从国庆收假开始吧. ...
随机推荐
- HDU 2236 无题Ⅱ
HDU 2236 无题Ⅱ 题目大意 这是一个简单的游戏,在一个\(n*n\)的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. solution 暴枚\(i ...
- 石子合并——区间dp
石子合并(3种变形) <1> 题目: 有N堆石子排成一排(n<=100),现要将石子有次序地合并成一堆,规定每次只能选相邻的两堆合并成一堆,并将新的一堆的石子数,记为改次合并的得分, ...
- 状压DP之炮兵阵地
题目 原题来自:\(NOI 2001\) 司令部的将军们打算在\(N*M\) 的网格地图上部署他们的炮兵部队.一个\(N*M\)的地图由\(N\)行\(M\)列组成,地图的每一格可能是山地(用 H表示 ...
- 关于C++命名空间namespace的理解与使用介绍
0X00 前言 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 0x01 与C语言区别 <iostream> ...
- 题解:2018级算法第三次上机 C3-Zexal的浩瀚星辰
题目描述: 样例: 实现解释: 一道结合了火箭发射的贪心题目 知识点: 贪心,优先队列 题目分析: 根据题目描述可知,延迟后时间是正常推进的,也就是假设共有n个火箭,推迟k小时.则在到达k+1小时时, ...
- java 基本语法(十五)Lambda (二)函数式接口
1.函数式接口的使用说明> 如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口.> 我们可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检查它是 ...
- 数据可视化之分析篇(四)PowerBI分析模型:产品关联度分析
https://zhuanlan.zhihu.com/p/64510355 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...
- 浏览器常见攻击方式(XSS和CSRF)
常见的浏览器攻击分为两种,一种为XSS(跨站脚本攻击),另一种则为CSRF(跨站请求伪造). XSS(跨站脚本攻击) 定义 XSS 全称是 Cross Site Scripting,为了与“CSS”区 ...
- 对掌机游戏Pokemon的一部分系统的拆解流程图
整体系统拆解 POKEMON系统拆解 属性.技能.进化形态 属性提升系统 种族值说明: 所有Pokemon都拥有自己的种族的种族值,且固定(例如:小火龙:309, 皮卡丘: 320) 种族值是各项属性 ...
- Hadoop进阶命令使用介绍
hadoop生产环境的使用是很复杂的,有些公司是CDH或者Ambari等管理工具运维的,有些是原生的集群俗称裸奔,前者优缺点是运维,查看监控等容易,对于底层理解不友好:裸奔集群反之,裸奔集群的很多东西 ...