[nowcoder5668H]Sort the Strings Revision

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 2000005
4 #define mod 1000000007
5 int t,n,p[N],d[N],st[N],ls[N],rs[N],rk[N];
6 void dfs(int k,int l,int r,int s){
7 if ((p[k]==n)||(l>=r)){
8 for(int i=l;i<=r;i++)rk[i]=s+(i-l);
9 return;
10 }
11 dfs(ls[k],l,k,s+(p[k]%10>d[k])*(r-k));
12 dfs(rs[k],k+1,r,s+(p[k]%10<d[k])*(k-l+1));
13 }
14 int main(){
15 scanf("%d",&t);
16 while (t--){
17 scanf("%d",&n);
18 int p1,p2,p3,p4;
19 scanf("%d%d%d%d",&p1,&p2,&p3,&p4);
20 for(int i=0;i<n;i++)p[i]=i;
21 for(int i=1;i<n;i++){
22 swap(p[p1%(i+1)],p[i]);
23 p1=(1LL*p1*p2+p3)%p4;
24 }
25 int d1,d2,d3,d4;
26 scanf("%d%d%d%d",&d1,&d2,&d3,&d4);
27 for(int i=0;i<n;i++){
28 d[i]=d1%10;
29 d1=(1LL*d1*d2+d3)%d4;
30 if (p[i]%10==d[i])p[i]=n;
31 }
32 st[0]=0;
33 for(int i=0;i<n;i++){
34 int k=st[0];
35 while ((k>0)&&(p[st[k]]>p[i]))k--;
36 if (k)rs[st[k]]=i;
37 if (k<st[0])ls[i]=st[k+1];
38 st[++k]=i;
39 st[0]=k;
40 }
41 dfs(st[1],0,n,0);
42 int s=1,ans=0;
43 for(int i=0;i<=n;i++){
44 ans=(ans+1LL*s*rk[i])%mod;
45 s=s*10000019LL%mod;
46 }
47 printf("%d\n",ans);
48 }
49 }
[nowcoder5668H]Sort the Strings Revision的更多相关文章
- Perl小知识点之排序sort
脚本这种东西,就是要常用,否则一段时间不用就生疏了,因此决定时时记一些小知识点,一来回顾一下,二来需要的时候可以迅速获得提示. Sort by number You could now write a ...
- golang sort
package main import ( "fmt" "strings" "sort" ) type Animals []string f ...
- go排序
补注: 近来又看 go 的排序, 发现以前对 go 的排序理解的有点浅了. go 的排序思路和 c 和 c++ 有些差别. c 默认是对数组进行排序, c++ 是对一个序列进行排序, go 则更宽泛一 ...
- Java学习之字符串练习
1.给定一个字符串数组.按照字典顺序进行从小到大的排序. * 思路: * 1,对数组排序.可以用选择,冒泡都行. * 2,for嵌套和比较以及换位. * 3,问题:以前排的是整数,比较用的比较运算符, ...
- LINQ基础(二)
本文主要介绍LINQ查询操作符 LINQ查询为最常用的操作符定义了一个声明语法.还有许多查询操作符可用于Enumerable类. 下面的例子需要用到LINQ基础(一)(http://www.cnblo ...
- golang 标准库间依赖的可视化展示
简介 国庆看完 << Go 语言圣经 >>,总想做点什么,来加深下印象.以可视化的方式展示 golang 标准库之间的依赖,可能是一个比较好的切入点.做之前,简单搜了下相关的内 ...
- Bandit Wargame Level12 Writeup
Level Goal The password for the next level is stored in the file data.txt, which is a hexdump of a f ...
- float_array.go
) if err != nil { log.Fatalf("Could not parse: %s", s) ret ...
- data.go
{ return ErrList(errs) } return nil }
随机推荐
- OpenGL思维导图
- SpringBoot打包到docker(idea+传统方式)
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 1. 方式1.通过idea 远程发布 1.1 修改docker.service文件 1. 进入服务器 2. 修改ExecStart行为下面内容 ...
- 【数据结构与算法Python版学习笔记】基本数据结构——列表 List,链表实现
无序表链表 定义 一种数据项按照相对位置存放的数据集 抽象数据类型无序列表 UnorderedList 方法 list() 创建一个新的空列表.它不需要参数,而返回一个空列表. add(item) 将 ...
- Git浅析
Git浅析 索引 Git的常用命令 GitHub的使用 Git版本创建和回退 Git的工作区和暂存区 Git分支管理 1-Git的常用命令 01.创建一个版本库--进入相应的目录 git init 可 ...
- 『学了就忘』Linux基础 — 3、CentOS镜像下载
下载CentOS镜像可以从官网下载:https://www.centos.org/download/. 也可以从国内的镜像网站下载. 阿里云:https://mirrors.aliyun.com/ce ...
- 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解
前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...
- Go语言核心36讲(Go语言进阶技术十一)--学习笔记
17 | go语句及其执行规则(下) 知识扩展 问题 1:怎样才能让主 goroutine 等待其他 goroutine? 我刚才说过,一旦主 goroutine 中的代码执行完毕,当前的 Go 程序 ...
- 2021CCPC华为云挑战赛 部分题题解
CDN流量调度问题 题看了没多久就看出来是\(DP\)的题,然后就设了状态\(f[i][j]\)表示到前\(i\)个点时已经用了\(j\)个节点的最小总代价,结果发现转移时\(O(nm^2)\),但这 ...
- C++实现一个SOAP客户端
目录 简介 实现客户端 准备xml文件 引入库文件 构建请求数据的xml 执行Http协议的POST方法 解析响应数据的xml 测试客户端 附件 简介 在C++中,一般使用gSOAP来实现客户端.服务 ...
- SpringBoot之MultipartFile文件上传(6)
1.静态文件 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...