首页 > 其他分享 >CSP vp 记录

CSP vp 记录

时间:2024-09-07 19:24:30浏览次数:10  
标签:记录 int sum times vp ans sb sa CSP

CSP-S2019 JX

注:使用了 IOI 赛制。

赛时:\(100+70+64+0+0=234\),目测上了 JX 1=

补题:\(100+100+100+0+100=400\)。

T1

分数变动:\(73 \to 64 \to 73 \to 73 \to 100\)。

首先判定月份是否合法,若不合法则可以 保留个位 或者 把十位变成 \(1\)(\(73\) 分寄因:未考虑后者情况)。

如果合法,则保留原来的月份(\(64\) 分寄因:合法时没有保留原来月份)。

然后判断日期是否在上述两种情况其中一种的月份区间之内,若是则不用改日期,否则保留个位就行。

code
#include<bits/stdc++.h>
using namespace std;

int m,d;
int m1,m2;
const int q[12][2]={{1,31},{1,28},{1,31},{1,30},{1,31},{1,30},{1,31},{1,31},{1,30},{1,31},{1,30},{1,31}};
char op;

int main(){
	cin>>m>>op>>d;
	int ans=0;
	if(m<1||m>12){
		ans++;
		m1=m%10;
		m2=10+m%10;
	}
    else
        m1=m2=m;
	if((d<q[m1-1][0]||d>q[m1-1][1])&&(d<q[m2-1][0]||d>q[m2-1][1]))
		ans++;
	cout<<ans;
	return 0;
}

总结:想题时,一定要将所有情况列出在草稿纸上,并多问自己是否全想到了。

涉及的知识点:分类讨论,模拟。

T2

分数变动:\(70\)。

\(70\) 分做法:令 \(sa_i=\sum_{j=1}^i a_j,sb_i=\sum_{j=1}^i b_j\),枚举每对 \((l,r)\),令 \(ans \leftarrow ans+(sa_r-sa_{l-1}) \times (sb_r-sb_{l-1})\) 即可。

考虑枚举其中右端点 \(r\),令 \(ans_r\) 表示以 \(r\) 为右端点的区间的贡献之和,则答案为 \(\sum_{i=1}^n ans_i\)。

接着推式子:

\[ans_r=\sum_{l=1}^r (sa_r-sa_{l-1}) \times (sb_r-sb_{l-1}) \\ =\sum_{l=1}^r sa_r \times sb_r-sa_r \times sb_{l-1}-sa_{l-1} \times sb_r+sa_{l-1} \times sb_{l-1} \\ =r \times sa_r \times sb_r-r \times sa_r \times \sum_{l=0}^{r-1} sb_l-r \times sb_r \times \sum_{l=0}^{r-1} sa_l+\sum_{l=0}^{r-1} sa_l \times sb_l \]

于是,我们在计算每个 \(ans_r\) 之后顺便维护 \(\sum_{l=0}^{r-1} sa_l,\sum_{l=0}^{r-1} sb_l,\sum_{l=0}^{r-1} sa_l \times sb_l\) 即可 \(O(1)\) 计算,总时间复杂度 \(O(n)\)。

code
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=5e5+5;
int n;
int ans[N];
int a[N],b[N];
int sa[N],sb[N];
const int MOD=1e9+7;

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n;
	int ans1=0,ans2=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
        sa[i]=(sa[i-1]+a[i])%MOD;
    }
    for(int i=1;i<=n;i++){
        cin>>b[i];
        sb[i]=(sb[i-1]+b[i])%MOD;
    }
	int ssa=0,ssb=0,ssasb=0;
    for(int r=1;r<=n;r++){
    	ans[r]=(((r%MOD*sa[r]%MOD*sb[r]%MOD-sa[r]%MOD*ssb%MOD+MOD)%MOD-sb[r]%MOD*ssa%MOD+MOD)%MOD+ssasb)%MOD;
    	ssa=(ssa+sa[r])%MOD;
    	ssb=(ssb+sb[r])%MOD;
    	ssasb=(ssasb+sa[r]%MOD*sb[r]%MOD)%MOD;
    } 
	int Ans=0;
	for(int i=1;i<=n;i++)
		Ans=(Ans+ans[i])%MOD;
	cout<<Ans;
	return 0;
}

总结:看到这种式子比较多的题,考虑推式子,推到将每个部分都可以直接计算或维护了为止。

涉及的知识点:数学。

T3

标签:记录,int,sum,times,vp,ans,sb,sa,CSP
From: https://www.cnblogs.com/XOF-0-0/p/18402049

相关文章

  • 打靶记录16——Momentum
    靶机:https://download.vulnhub.com/momentum/Momentum.ova下载后使用VirtualBox打开难度:中目标:取得root权限+2Flag攻击方法:主机发现端口扫描信息收集Web路径爆破XSS漏洞JS脚本分析AES解密Redis认证漏洞主机发现sudoarp-scan-l端口扫描和服务发现......
  • [csp-s 模拟2] 线段树
    记搜是真叽霸快啊#include<bits/stdc++.h>#definelcs(rt<<1)#definercs(rt<<1|1)#defineaxer-l+1usingnamespacestd;usingll=longlong;constintmod=1e9+7;llT,n,x,y;map<ll,ll>k,b;voiddfs(lln){ if(k[n])return; lln1=ceil(1.0......
  • CSP模拟2
    A.不相邻集合考虑值域上连续的段,可以发现连续的长度为\(x\)的段的贡献必定为\(\lceil{\frac{x}{2}}\rceil\)考虑并查集维护值域连续的段的大小,每次询问求出全部连续段的\(\lceil{\frac{size}{2}}\rceil\)之和即为答案合并操作:在值域上加入\(x\),尝试合并\(x-1\)与\(x+1......
  • INSERT ... ON DUPLICATE KEY UPDATE 问题记录
    起因:需要新增复制数据并更新原数据状态,故采用INSERT...ONDUPLICATEKEYUPDATE的方式来插入和更新数据问题:数据插入及更新异常环境:MySQL5.7.32数据表结构:点击查看代码CREATETABLE`example_table`(`col_a`varchar(255)NOTNULL,`col_b`varchar(255)NOTN......
  • 会议《测试团队过程改进实践分享》记录
    文章目录前言一、前期问题思考二、如何识别团队问题(发现问题)1.访谈2.问卷调查表3.价值流分析法4.过程跟踪三、质量过程改进案例(3-4个月)四、过程改进的结果度量五、能力迁移与更多的应用前言今天晚上参加了CKL老师分享的会议《团队过程改进实践分享》,感觉收益颇丰,......
  • 记录Java秋招面经(网上找的)
    1.Mysql的存储机制,怎么落到库里面的?当数据插入MySQL时,首先数据修改会在内存中的BufferPool中完成,同时记录写入RedoLog以保证事务的持久性。事务提交时,日志会被刷入磁盘,确保数据可以恢复。修改后的数据页暂时不会立即写入磁盘,而是由后台线程异步将内存中的脏页(已修......
  • Codeforces Round 941 (Div. 1) VP记录
    CodeforcesRound941(Div.1)VP记录我了个掉分场啊。没场切C导致看起来会-50。A排序后差分。它毕竟还是个公平组合游戏,所以如果Alice在一次操作中能够控制能把后手扔给自己还是对面就赢了。然后我们发现如果一个差分值\(x\ge2\)就是必胜的吧。先手可以自己取完......
  • DNS胶水记录和DNS查询
    DNS胶水记录和DNS查询DNS胶水记录DNS系统胶水记录(GlueRecords)过程抓包完整解析过程解释其他DNS系统了解过DNS的都知道,DNS是一个层状系统,域名的格式是使用.分割,比如:#最后一个'.'代表根www.example.com.一个终端想要访问域名为www.example.com的web页面,先......
  • 【CSP】 202209-2 何以包邮?
    试题编号:202209-2试题名称:何以包邮?时间限制:1.0s内存限制:512.0MB70分DFS解法:#include<bits/stdc++.h>//包含所有标准库#defineN1000//定义常量N为1000#definelllonglong//定义ll为longlong类型的别名usingnamespacestd;llans=0x3f3f......
  • CSP 模拟 28
    T1喜剧的迷人之处在于将\(a\)分解质因数,容易找到满足\(ab\)为平方数的最小\(b\),然后需要让\(b\)乘上一个平方数后在\([L,R]\)中,二分找即可。T2镜中的野兽\[\begin{aligned}&f(x)=\sum\cdots\sum[\gcd=1,\text{lcm}=x]\\&g(x)=\sum\cdots\sum[\gcd\midx,\text{lcm......