首页 > 其他分享 >「Log」2023.8.11 小记

「Log」2023.8.11 小记

时间:2023-08-11 13:56:06浏览次数:50  
标签:11 now ch Log int 割点 long 2023.8 getchar

间幕 \(1\)

从今天开始记小记。
七点到校了,先小摆一会,然后整理博客。
听 MITiS 的电音,开始写题。

\(\color{blueviolet}{P1829\ [国家集训队]\ Crash的数字表格\ /\ JZPTAB}\)

莫反练习题,式子并不难推,两个整除分块解决。
八点整打完,开始调。
忘记初始化了。
筛质数 pri[++pcnt]=true;,不知道自己在写什么。
没给 \(\mu(1)\) 赋值,忘写 ==0,等差数列求和忘除以 \(2\),不知道自己在些什么。
不小心又炸 int 了,讨厌取模。
总计浪费 \(20min\) 调弱智错误。
\(\text{code:}\)

#include<bits/stdc++.h>
#define LL long long
#define UN unsigned
using namespace std;
//--------------------//
//IO
inline int rd()
{
	int ret=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
	while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();
	return ret*f;
}
//--------------------//
const int N=1e7+5;

LL n,m;
//--------------------//
//Mob
const int Mod=20101009;

LL mob[N],ms[N];
int pcnt,pri[N];
bool v[N];
void init()
{
	mob[1]=1;
	for(int i=2;i<=min(n,m);i++)
	{
		if(!v[i])
			mob[i]=-1,pri[++pcnt]=i;
		for(int j=1;j<=pcnt&&i*pri[j]<=min(n,m);j++)
		{
			v[i*pri[j]]=true;
			if(i%pri[j]==0)
			{
				mob[i*pri[j]]=0;
				break;
			}
			mob[i*pri[j]]=-mob[i];
		}
	}
	for(int i=1;i<=min(n,m);i++)
		ms[i]=((ms[i-1]+(mob[i]+Mod)*(1LL*i*i%Mod))%Mod)%Mod;//printf("%lld\n",ms[i]);
	return;
}

LL f1(LL x,LL y){return (x*(x+1)/2%Mod)*(y*(y+1)/2%Mod)%Mod;}
LL f2(LL x,LL y)
{
	LL ans=0;
	for(int ed,st=1;st<=min(x,y);st=ed+1)
	{
		ed=min(x/(x/st),y/(y/st));
		ans=(ans+(ms[ed]-ms[st-1]+Mod)*f1(x/st,y/st)%Mod+Mod)%Mod;
	}
	return ans;
}
//--------------------//
int main()
{
	scanf("%lld%lld",&n,&m);
	init();
	LL ans=0;
	for(int ed,st=1;st<=min(n,m);st=ed+1)
	{
		ed=min(n/(n/st),m/(m/st));
		ans=(ans+1LL*(st+ed)*(ed-st+1)/2%Mod*f2(n/st,m/st)%Mod+Mod)%Mod;
	}
	printf("%lld",ans);
    return 0;
}

间幕 \(2\)

开始学杜教筛,没学完,开始听课。
图论会不了一点。
学长请我们喝水。
复习了点双边双,点完外卖开始做题。
外卖到了,正好敲完一遍割点板子,发现以前写的板子有冗余部分。
打完一道题调不出来,开摆,学习打块。
午休结束,开调。

\(\color{royalblue}{P3469\ [POI2008]\ BLO-Blockade}\)

考虑分类讨论:

  • 若节点 \(i\) 不是割点,则 \(ans_i=2(n-1)\)。
  • 若节点 \(i\) 是割点,则用组合数计算贡献即可。

具体地,因为点对有向,所以对于每一联通块计算以其为起点的点对。
代码里计算割点答案时把所有子节点全算上了,错误的,应该记录子节点 \(low\) 比当前节点 \(dfn\) 大的贡献。
细微重构,开 long long,A 掉。

#include<bits/stdc++.h>
#define LL long long
#define UN unsigned
using namespace std;
//--------------------//
//IO
inline int rd()
{
	int ret=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
	while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();
	return ret*f;
}
//--------------------//
const int N=1e5+5;

int n,m;
//--------------------//
const int M=1e6+5;

struct Edge
{
	int to,nex;
}edge[M];
int tot,head[N];
void add(int from,int to)
{
	edge[++tot]={to,head[from]};
	head[from]=tot;
	return;
}
int dcnt,dfn[N],low[N];
bool v[N],ansv[N];
LL siz[N],ans[N];

void Tarjan(int now,int fa)
{
	v[now]=true,dfn[now]=low[now]=++dcnt,siz[now]=1;
	LL scnt=0;
	LL sum=0;
	for(int to,i=head[now];i;i=edge[i].nex)
	{
		to=edge[i].to;
		if(!v[to])
		{
			Tarjan(to,now);
			siz[now]+=siz[to];
			scnt++;
			low[now]=min(low[now],low[to]);
			if(now==fa||low[to]>=dfn[now])
			{
				ansv[now]=true;
				ans[now]+=siz[to]*(n-siz[to]);
				sum+=siz[to];
			}
		}
		else
			low[now]=min(low[now],dfn[to]);
	}
	if(now==fa&&scnt>1)
		ansv[now]=true;
	if(ansv[now])
		ans[now]+=n-1+(sum+1)*(n-sum-1);
	else
		ans[now]=2*(n-1);
	return;
}
//--------------------//
int main()
{
	scanf("%d%d",&n,&m);
	for(int from,to,i=1;i<=m;i++)
	{
		scanf("%d%d",&from,&to);
		if(from!=to)
			add(from,to),add(to,from);
	}
	Tarjan(1,1);
	for(int i=1;i<=n;i++)
		printf("%lld\n",ans[i]);
    return 0;
}

标签:11,now,ch,Log,int,割点,long,2023.8,getchar
From: https://www.cnblogs.com/Eon-Sky/p/17622073.html

相关文章

  • logback
    Logback、Log4J、JUL都是日志框架,而SLF4J、commons-logging(日志门面)可以认为是这些日志框架的统一接口。想要通过日志门面调用日志框架,就需要使用桥接器:使用日志门面导入依赖:<!--logback-classic就是桥接器,这个包会自动引入slf4j-api包--><!--https://mvnrepositor......
  • FTData063468_000001升级脚本出错,错误信息:SQL 脚本: 18.000.000.0048 DATA_DSTR_EAP_M
    一、问题:cjt15.0版本升级到18.0提示SQL脚本:18.000.000.0048DATA_DSTR_EAP_Mix_NL-11001出错:已在列上绑定了DEFAULT023-08-1019:46:39开始升级....2023-08-1019:46:39正在校验系统信息,请稍候...2023-08-1019:46:39[(000001)****]:开始升级2023-08-1019:46:39[(......
  • MySQL 1130错误原因及解决方案
    错误:ERROR1130:Host‘http://xxx.xxx.xxx.xxx’isnotallowedtoconnecttothisMySQLserve错误1130:主机xxx.xxx.xxx.xxx”不允许连接到thismysql服务原因分析被连接的数据不允许使用主机http://xxx.xxx.xxx.xxx访问,系统数据库mysql中user表中的host是localhost,只允许......
  • C/C++住院病人管理系统[2023-08-11]
    C/C++住院病人管理系统[2023-08-11]22、住院病人管理系统(难度等级8)使用C或C++,选择一种计算机编程软件和数据库管理系统来实现一个住院病人管理系统。系统需要实现的功能如下:(1)添加、删除和修改病人信息:向系统中添加、删除和修改仓库信息,信息包括(住院号、姓名、年龄、住院时间、......
  • 使用awk分析nginx访问日志access.log
    1.awk简介awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数......
  • 利用Spring boot+LogBack+MDC实现链路追踪
    这篇文章主要介绍了利用Spring boot+LogBack+MDC实现链路追踪,MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对,下文详细介绍需要的小伙伴可以参考一下  MDC介绍API说明MDC使用1.拦截器2.工具类MDC存在的问题子线程日志打印丢失traceIdHTTP调用丢......
  • P1137 旅行计划
    \(P1137\)旅行计划这个题,我们根据题意是不是知道这个是一个\(DAG\),我们需要计算的是以城市\(i\)为终点最多能够游览多少个城市;这个是不是也是在一个拓扑序上做一个简单的\(dp\)就行了,我们记录一下最大值即可;#include<bits/stdc++.h>usingnamespacestd;constintN=1......
  • Arduino analogRead() 读取模拟引脚数据
    analogRead()用于从Arduino的模拟输入引脚读取数值。在ArduinoUNO上,除了14个数字输入/输出引脚,还带有6个模拟引脚,即板上编号带A的引脚。引脚A0到A5被用来获取模拟信号的输入值,这些引脚有一个预装的ADC(Analog-to-DigitalConverter,模数转换器),它将模拟信号转换为......
  • Yuno loves sqrt technology III
    YunolovessqrttechnologyIII题意区间询问众数,强制在线。题解经典分块题,记一下。对于序列分块,记\(f_{i,j}\)代表第\(i\)个块到第\(j\)个块的众数出现次数。考虑询问的时候怎么做,我们只需要考虑散块。对于散块的元素\(a_i\)查找其在询问区间\([l,r]\)的个数,与......
  • 2023.8.10
    今天上午继续看科四的题,看着看着困得要死,于是直接昏睡过去,但是却做了一个很emo的梦,让我直接变得心累(可能也是最近太过于喜欢猜疑)(或者说原来本来就不相信)然后中午又开始乱猜,憋了半天还是把自己的真实想法隐晦地表达出来,好吧其实也都得到了一个很合理的解释下午继续看题,尝试了一下......