首页 > 其他分享 >『做题记录』[CF1601F]Two Sorts

『做题记录』[CF1601F]Two Sorts

时间:2023-10-29 22:24:32浏览次数:37  
标签:10 MOD1 int sum Two len cnt1 CF1601F Sorts

[CF1601F]Two Sorts

link:https://codeforces.com/problemset/problem/1601/F

Description

  有一个数列 \(\{a_1, a_2, \ldots, a_n\}\) 是一个 \(1 \sim n\) 的排列,且所有的数都按照字典序排序,现在给出整数 \(n(1 \leq n \leq 10^{12})\) ,求 \(\left(\sum_{i=1}^n((i-a_i) \bmod 998244353)\right) \bmod 10^9+7\) ,注意这里 \(x \bmod y\) 的结果为正数。

Solution

  好题!
  我会暴力!爆搜合法字典序最小状态,复杂度 \(\mathcal O(n)\) 。
  \(10^{12}\) 的范围,但看上去不像是能 \(\log\) 时间解决,于是考虑 meet in the middle。
  不难发现字典序相近的数前缀相同,于是暴力预处理出后面 \(6\) 位的数,然后爆搜前面 \(6\) 位即可。

Code

点击查看代码
#include<bits/stdc++.h>
#define LL long long
#define vi vector<int>
#define eb emplace_back
using namespace std;

const int MOD1 = 998244353, MOD2 = 1e9+7, HAL = 1000000;

vi num[7];
LL cnt1, cnt2, sum[7], n, ans, po10[10] = {1, 10, 100, 1000, 10000, 100000, 1000000};
void dfs1(int len, int x) {
	if (len == 7) return ;
	num[len].eb((cnt1-x+MOD1)%MOD1);
	sum[len] += (cnt1-x+MOD1)%MOD1;
	++cnt1;
	for (int i = 0; i <= 9; ++i)
		dfs1(len+1, x*10+i);
}

bool check(int x) {
	return 1ll*x*HAL+HAL-1 <= n && 1ll*x*HAL*10 > n;
}

void dfs2(int len, LL x) {
	if (x > n) return ;
	if (check(x)) {
		for (int i = 0; i <= 6; ++i) {
			LL del = ((cnt2+1-x*po10[i])%MOD1+MOD1)%MOD1;
			LL pos = lower_bound(num[i].begin(), num[i].end(), MOD1-del)-num[i].begin();
			(ans += (sum[i]+del*num[i].size()-MOD1*(num[i].size()-pos))) %= MOD2;
		}
		cnt2 += cnt1;
	} else {
		++cnt2;
		(ans += ((cnt2-x)%MOD1+MOD1)%MOD1) %= MOD2;
		for (int i = (!len); i <= 9; ++i)
			dfs2(len+1, x*10+i);
	}
}

int main() {
	scanf("%lld", &n);
	dfs1(0, 0);
	for (int i = 0; i <= 6; ++i) sort(num[i].begin(), num[i].end());
	cnt2 = -1;
	dfs2(0, 0);
	printf("%lld\n", ans);
	return 0;
}

Summary

  meet in the middle 真滴强!

标签:10,MOD1,int,sum,Two,len,cnt1,CF1601F,Sorts
From: https://www.cnblogs.com/BlackCrow/p/17796653.html

相关文章

  • 华为最高学术成果发表 —— 《Nature》正刊发表论文《Accurate medium-range global w
          论文《Accuratemedium-rangeglobalweatherforecastingwith3Dneuralnetworks》的《Nature》地址:https://www.nature.com/articles/s41586-023-06185-3.pdf   论文的代码地址:https://github.com/198808xc/Pangu-Weather   这篇论文可以......
  • 关于 Chrome 开发者工具 Network 面板里观察到的 net ERR_CERT_AUTHORITY_INVALID 错
    我在Chrome访问一个网站时,在Chrome开发者工具Network面板里观察到的netERR_CERT_AUTHORITY_INVALID错误:net::ERR_CERT_AUTHORITY_INVALID这种错误通常会在你试图访问的网站的SSL证书存在问题时出现。SSL(SecureSocketLayer)证书用于建立用户和网站服务器之间的安......
  • LeetCode 2: Add Two Numbers
    https://leetcode.cn/problems/add-two-numbers/description/FinallyIjoinedaforeigncompany'sChinabranchtolearnEnglishandstartanewjourney.PS:FromnowformeseemsMoreleisurely,elegant,high-tech,andalittlewise(inleadership)compa......
  • 【论文阅读笔记】【OCR-文本识别】 Towards Accurate Scene Text Recognition with Se
    SRNCVPR2020读论文思考的问题论文试图解决什么问题?如何利用文本的上下文语义信息来辅助文本识别任务RNN能部分利用语义信息,但它的利用方式是串行的,极大地限制了语义信息的帮助,会造成错误累积以及效率缓慢等问题文章提出了什么样的解决方法?提出全局语义理解......
  • 【论文阅读笔记】【OCR-文本识别】 From Two to One: A New Scene Text Recognizer wi
    VisionLANICCV2021读论文思考的问题论文试图解决什么问题?使用语言模型对识别的文本的上下文语义信息进行建模时,会有以下问题:引入额外的计算量;识别的视觉和语言特征很难做一个很好的融合、互补能否在不使用语言模型的情况下,直接赋予视觉模型一定的语言建模能力?......
  • Linux (KDE) 中使用Network Settings设置静态ip
    在Linux(KDE)中使用NetworkSettings设置s5静态IP详细教程。首先,打开KDE的设置面板。可以通过点击桌面上的设置图标,或者在开始菜单中搜索“Settings”并打开。在设置面板中,点击“Network”选项。接下来,你会看到一个“NetworkConnections”的窗口。在这个窗口中,你需......
  • [CF251D] Two Sets
    TwoSets因为和最大,从高位向低位考虑,称n个元素的异或和为SUM,若SUM这一位为0,则两堆都分配1一定更优,否则为了第一堆尽量小我们把偶数个1分给第一堆,高斯消元即可,因为是01矩阵用bitset优化一下。其实因为我们是动态列出等式所以处理过程与线性基类似。#include<cstdi......
  • Leecode 1. 两数之和 Two Sum
    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11......
  • How To Use Traceroute and MTR to Diagnose Network Issues
    copyfrom: https://www.digitalocean.com/community/tutorials/how-to-use-traceroute-and-mtr-to-diagnose-network-issuesIntroductionAnimportantpartofadministeringserversismonitoringnetworkconnectivity.Thereareafewtoolsthataresimpletouse,......
  • GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Network
    目录概符号说明GraphPrompt代码LiuZ.,YuX.,FangY.andZhangX.GraphPrompt:Unifyingpre-traininganddownstreamtasksforgraphneuralnetworks.WWW,2023.概统一的图预训练模型+Prompt微调.符号说明\(G=(V,E)\),图;\(\mathbf{X}\in\mathbb{R}^{|......