前言

赛时:好难啊,什么都不会

刚结束:原来如此

现在:为什么我这么菜


洛谷 5657 格雷码

代码(找规律)

#include <cstdio>
using namespace std;
typedef unsigned long long ull;
ull k,now=1; char c[101]; int n;
int main(){
scanf("%d%llu",&n,&k);
for (int i=1;i<=n;++i){
if (((k/now)&3)==1||((k/now)&3)==2) c[n-i+1]=49;
else c[n-i+1]=48;
now<<=1;
}
for (int i=1;i<=n;++i) putchar(c[i]);
return 0;
}

洛谷 5658 括号树

题目


分析

考虑在树上动态维护一个装入左括号的栈,

一个显然的性质就是以\(i\)结尾的合法括号串个数等于前一个左括号的前驱的个数+1

但是赛时只想到这个性质没有想到用栈维护QWQ


代码

#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=500011; long long ans,s[N];
struct node{int y,next;}e[N];
int col[N],top,st[N],cnt[N],ls[N],n,k=1,fat[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void dfs(int x){
rr int tmp=0;
if (col[x]){
if (top){
tmp=st[top];
cnt[x]=cnt[fat[tmp]]+1;
--top;
}
}else st[++top]=x;
s[x]=s[fat[x]]+cnt[x];
for (rr int i=ls[x];i;i=e[i].next)
dfs(e[i].y);
if (tmp) st[++top]=tmp;
else if (top) --top;
}
signed main(){
n=iut();
for (rr int i=1;i<=n;++i){
rr char c=getchar();
while (c!='('&&c!=')') c=getchar();
col[i]=c==')';
}
for (rr int i=2;i<=n;++i){
rr int x=iut(); fat[i]=x;
e[++k]=(node){i,ls[x]},ls[x]=i;
}
dfs(1);
for (rr int i=1;i<=n;++i) ans^=1ll*s[i]*i;
return !printf("%lld",ans);
}

洛谷 5659 树上的数

待更


洛谷 5664 Emiya 家今天的饭

待更


洛谷 5665 划分

题目


分析

单调队列裸题,考场没想到qwq

不过这题比较恶心的是要用高精度

根据\((a+b)^2>a^2+b^2\)可以知道要尽量多分段

设\(dp[i]\)表示前\(i\)个位置所能取到的最大的\(j\)

那么\(dp[i]=\max\{j\}[s_i-s_j\geq s_j-s_{dp[j]}]\)

由于\(s\)是单调递增的,那么可以用单调队列维护


代码

#include <cstdio>
#include <cctype>
#define rr register
#define calc(x) ((s[x]<<1)-s[dp[x]])
using namespace std;
const int aod=1073741823,N=40000011;
typedef unsigned uit;
typedef long double ld;
typedef long long lll; lll s[N];
int n,typ,q[N],dp[N],head,tail;
const lll mod=100000000000000000ll;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline lll mul(lll a,lll b){
a%=mod,b%=mod;
rr lll c=(ld)a*b/mod,ans=a*b-c*mod;
ans=ans<0?ans+mod:(ans>=mod?ans-mod:ans);
return ans;
}
signed main(){
n=iut(),typ=iut();
if (!typ){
for (rr int i=1;i<=n;++i) s[i]=s[i-1]+iut();
}else {
rr uit X=iut(),Y=iut(),Z=iut(),a1=iut(),a2=iut(),a3;
iut(),s[1]=a1,s[2]=a2; rr int TAIL=iut(),L=iut(),R=iut();
for (rr int i=1;i<3;++i){
a3=s[i]%(R-L+1)+L,s[i]=s[i-1]+a3;
if (TAIL==i&&TAIL<n) TAIL=iut(),L=iut(),R=iut();
}
for (rr int i=3;i<=n;++i){
a3=(a2*X+a1*Y+Z)&aod,a1=a2,a2=a3;
a3=a3%(R-L+1)+L,s[i]=s[i-1]+a3;
if (TAIL==i&&TAIL<n) TAIL=iut(),L=iut(),R=iut();
}
}
for (rr int i=1;i<=n;++i){
while (head<tail&&s[i]>=calc(q[head+1])) ++head;
dp[i]=q[head];
while (head<tail&&calc(q[tail])>=calc(i)) --tail;
q[++tail]=i;
}
rr lll ans[2]={0,0},t[2];
for (rr int i=n;i;i=dp[i]){
rr lll t1=s[i]-s[dp[i]];
t[1]=mul(t1,t1),t[0]=(ld)t1*t1/mod;
ans[0]+=t[0],ans[1]+=t[1];
if (ans[1]>=mod) ++ans[0],ans[1]-=mod;
}
if (ans[0]) printf("%lld%017lld",ans[0],ans[1]);
else printf("%lld",ans[1]);
return 0;
}

洛谷 5666 树的重心

待更


后记

wtcl,什么都不会

CSP2019-S2总结的更多相关文章

  1. CSP2019 S2滚粗记

    最好分数:100+20+10+64+64+55 最坏分数:100+20+10+64+36+55 咕咕数据分数:100+25+10+64+60+55 CCF官方: 100+35+10+64+36+55= ...

  2. CSP2019总结

    CSP2019总结 前言 赛前停课集训了两个星期,自认为已经准备充分了,结果... 不知道有没有写挂分,即使一分没挂,满打满算也只有400出头,还是太菜了. Day0 晚上复习了一会,打了会游戏就睡了 ...

  3. s2 devMode cmdshell

    s2 devMode cmdshell   仅支持批量验证,命令执行 链接:http://pan.baidu.com/s/1sl7tgRV 密码:wud8 也可以通过outscan一键获取,之后导入t ...

  4. 电源相关知识—S0、S1(POS)、S2、S3(STR)、 S4、S5、睡眠、休眠、待机

    转 http://blog.sina.com.cn/s/blog_52f28dde0100l3ci.html APM https://en.wikipedia.org/wiki/Advanced_Po ...

  5. 判断s2是否能够被通过s1做循环移位(rotate)得到的字符串是否包含

    问题:给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含.例如,S1=AABCD和s2=CDAA,返回true:给定s1=ABCD和s2=ACBD,返回 ...

  6. S2 易买网总结

    易买网项目总结 --指导老师:原玉明 不知不觉,又到了S2结业的时间了,S1的项目KTV项目还历历在目.一路走来,感觉时间过的好快,我们离就业也越来越近... 展示: 1.主页面(首页) 01.商品分 ...

  7. 445. Add Two Numbers II ——while s1 or s2 or carry 题目再简单也要些测试用例

    You are given two linked lists representing two non-negative numbers. The most significant digit com ...

  8. 写一个函数,实现两个字符串的比较。即实现strcmp函数,s1=s2时返回0,s1!=s2时返回二者第一个不同字符的ASCII值。

    #include<stdio.h> #include<stdlib.h> int main(){ setvbuf(stdout,NULL,_IONBF,); ],s2[]; i ...

  9. ACPI电源管理中的S0 S1 S2 S3 S4 S5

    电源选项中S0,S1,S2,S3,S4,S5的含义以 ACPI 的规格来说吧!ACPI(Advanced Configuration and Power Interface),即高级配置与电源接口.这 ...

  10. S2第一本书内测

    <深入.NET平台和C#编程>内部测试题-笔试试卷 一 选择题 1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格 ...

随机推荐

  1. Ansible Ad-hoc,命令执行模块

    目录 Ad-hoc Ad-hoc简介 Ad-hoc命令说明 Ad-hoc示例 命令执行模块 1. command模块 2. shell模块 3. raw模块 4. script模块 Ad-hoc Ad ...

  2. 项目实战:医疗流式细胞术数据文件(.fcs)导出excel表工具

    需求    解析医疗实验室数据文件*.fcs.   Demo导出数据   医疗流式细胞术数据文件标准(.fcs)   流式细胞术数据文件标准于1984年发布,以促进流式细胞术数据分析软件与在不同类型的 ...

  3. 如何提高UI自动化稳定性?

    1尽量使用相对路径的xpath表达式定位元素 2查找元素优先使用显示等待方式 3用例与用例之间避免产生依赖,用例可以单独运行 4用例执行结束之后要对测试场景进行还原,避免影响到其他用例的执行 5脚本执 ...

  4. vue3切换theme功能

    切换主题,老生常谈.反正我是第一次弄,还挺巧妙 我的实现方式是通过:root的修改,来一键换色 :root { // 主题色 --ry-primary-color: #ff9c00; // layou ...

  5. Android Studio 有关 setOnClickListener() 方法的总结

    •前言 在 Android Studio 开发中,你会经常和这种代码打交道: 1 package com.example.activitytest; 2 public class FirstActiv ...

  6. 补日志log chrome Sources snippet

    补日志log chrome Sources snippet var addWindows =$("#table1").children(); var temp = addWindo ...

  7. linux-给终端建立快捷键

    在设置里,找到快捷键窗口,自定义快捷键, 名字:终端 命令:gnome-terminal 快捷键:ctrl+alt+t

  8. 流媒体通信中RTP/RTCP在项目中的应用

    一 概述: 本文档描述RTC通信中RTP/RTCP的应用以及当前项目中的使用策略. 二 RTP/RTCP协议简介 2.1 协议标准 RTP 由 IETF(http://www.ietf.org/)定义 ...

  9. ElasticSearch 准实时原理

    Elasticsearch 是一个基于 Lucene 库的搜索引擎.它提供了一个准实时的.分布式.支持多租户的全文搜索引擎. ----维基百科 那么问题来了,为啥 Elasticsearch 不是实时 ...

  10. C#实时监测文件夹变化

    在开发各种应用程序时,我们经常需要对文件系统中的文件或文件夹进行实时监测,以便在文件内容改变.文件被创建或删除时能够及时做出反应.在 C# 中,System.IO.FileSystemWatcher ...