首页 > 其他分享 >2023,1 做题笔记

2023,1 做题笔记

时间:2023-01-04 22:11:22浏览次数:81  
标签:return int res 笔记 2f 2023 const define

Hello 2023!

【CF1025G】Company Acquisitions

考虑用势能函数去描述一个状态 \(A=\{a_1,a_2,...,a_n\}\),令 \(w(A)=\sum_{i=1}^n f(a_i)\),其中 \(f(a_i)\) 是一个关于 \(a_i\) 的式子。

假设一次操作选择了两个分别挂了 \(x,y\) 个白点的红点,则有:

\(w(A')-w(A)=\dfrac{1}{2}(-f(x)-f(y)+(x+y)f(0)+f(y+1))+\dfrac{1}{2}(-f(x)-f(y)+(x+y)f(0)+f(x+1))\)

化简可得其等于 \(\dfrac{f(x+1)-2f(x)+f(y+1)-2f(y)}{2}+(x+y)f(0)\)

如果令 \(f(0)=0,f(x+1)-2f(x)=1\),即 \(f(x)=2^x-1\),你会发现一次操作后 \(w(A)\) 期望增大 \(1\),而最终状态的 \(w(A)=2^{n-1}-1\),两者相减即可。

Code
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pii pair<long long,long long>
#define mp make_pair
#define pb push_back
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
const int INF=1e18;
int fpow(int x,int b){
	if(x==0) return 0;
	if(b==0) return 1;
	int res=1;
	while(b>0){
		if(b&1)	res=res*x%mod;
		x=x*x%mod;
		b>>=1;
	}
	return res;
}
int n;
int a[505],cnt[505];
void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]!=-1) cnt[a[i]]++;
	}
	int w=0;
	for(int i=1;i<=n;i++) if(a[i]==-1) w=(w+fpow(2,cnt[i])-1)%mod;
	cout<<((fpow(2,n-1)-1-w)%mod+mod)%mod;
}
signed main()
{
	int _=1;
	//cin>>_;
	while(_--) solve();
	return 0;
}

1.2 模拟 T1

题意:给定序列 \(a,b\),你需要在两个序列中分别选出一个长度相同的区间,且这个区间内对应位置上的数相加形成回文序列,求最大区间长度,\(1 \le n \le 10^5\)。

题解:观察到若能找到一个长度为 \(len\) 的合法区间,那么 \(len-2,len-4,...\) 都能找到,可以奇偶分别二分。

标签:return,int,res,笔记,2f,2023,const,define
From: https://www.cnblogs.com/znstz2018/p/17026139.html

相关文章

  • Hello 2023 D.Boris and His Amazing Haircut
    Problem-D-Codeforces题意:给两个长度为n的数组a,b,再给一个数组长度为m的数组x,表示m次操作每次操作把选择一个区间把a[l~r]中大于x[i]的变为x[j],否则不变问能否在m次......
  • 题解 校内考20230104 T2 旗木双翼
    题目描述菲菲和牛牛在一块\(n\)行\(m\)列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手。棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束。落子......
  • Markdown学习笔记——DAY01
    Markdown学习标题:#+空格学习二级标题:##+空格以此类推字体粗体helloworld两星斜体helloworld一星粗体加斜体helloworld三星划去线helloworld两波浪引用......
  • C语言银行业务模拟系统[2023-01-04]
    C语言银行业务模拟系统[2023-01-04]银行业务模拟系统系统要求使用C语言实现一个银行业务模拟程序,实现存取款等基本业务的模拟。选题者需要首先进行需求调研,了解银行的主......
  • 2023 重新开始
    误入网络安全这个行业有三年多了,这三年主要工作就是等保里面的渗透,基本项目都在重复劳动,三年下来跟刚入行的时候水平差不多,没学到什么技术。浑浑噩噩度过了三年,自......
  • mybaits 笔记2022年8月学习笔记
    mybatis整理前期准备安装必要依赖:idea开发mybatis,如果学习测试,可以在一个直接建一个空白项目,如果是用springboot,则建议用用boot的安装捆绑方式核心依赖org.mybatis......
  • C/C++数学口算比赛系统[2023-01-04]
    C/C++数学口算比赛系统[2023-01-04]题目三数学口算比赛系统设计要求:适用于小学生数学口算比赛的系统。比赛题型分为两种:“四则简单运算”和“四则混合运算”,计算机......
  • C/C++图书管理系统[2023-01-04]
    C/C++图书管理系统[2023-01-04]17、图书管理系统主要包括管理图书的库存信息、每一本书的借阅信息以及每一个人的借书信息。每一种图书的库存信息包括编号、书名、作者、......
  • 2018年笔记,突然看到2018年以前的一些笔记
    看到以前一些笔记,以前怕别人看到的笔记,居然写太认真就删了,苦了此心血,现在越工作了笔记反尔随心,现在自己的笔记除了自己能看懂,别人看到肯会乱自己要反省自己,  纯属回忆......
  • C语言学生成绩管理系统[2023-01-04]
    C语言学生成绩管理系统[2023-01-04]设计题目:《学生成绩管理系统》设计目的利用所学的三种程序基本结构以及数组、用户自定义函数进行一个简单管理系统的设计,进一步理......