首页 > 其他分享 >YL 模拟赛总结 7

YL 模拟赛总结 7

时间:2024-03-02 17:22:23浏览次数:26  
标签:总结 10 YL 格子 int sum times 一层 模拟

Problem


T1

预处理出前 \(10^4\) 个格子需要填什么数,然后输出即可。

具体地,我们记录 \(e\) 为当前层数,\(o\) 为上一层的最后一个的位置,\(last\) 为上一个填的格子的位置。

我们知道,一个格子要么在一层的起点,要么在一层的中间,要么在一层的末尾。

枚举 \(1 \sim 5\) 分别对这三种情形进行判断,在符合上述三种情形之一的数中取编号最小且出现次数最小的填入当前各自即可。

然后,因为每一层都有 \((e-1) \times 6\) 个格子,因此当 \((i-o)=(e-1) \times 6\)(\(i\) 为当前填的格子)时,更新 \(e \gets e+1,o \gets i\)。

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

int t,n;
int a[10031],vis[10031];

int main(){
	for(int i=1,e=1,o=1,last=1;i<=(int)(1e4);i++){
		int cnt=1e9,now=0;
		for(int j=1;j<=5;j++){
			if((j!=a[i-1]&&j!=a[last]&&((e!=1&&(i-o)%(e-1)==0&&(i-o)/(e-1)==6&&j!=a[last+1])||(e==1||((i-o)%(e-1)==0&&(i-o)/(e-1)!=6)||j!=a[last+1])))||(i-o==1&&j!=a[i-1]&&j!=a[last+1]))
				if(vis[j]<cnt)
					cnt=vis[j],now=j;
		}
		if(e!=1&&(i-o)%(e-1)!=0) last++;
		a[i]=now,vis[now]++;
		if((i-o)==(e-1)*6) e++,o=i;
	}
	for(cin>>t;t;t--) cin>>n,cout<<a[n]<<'\n';
	return 0;
}

T2

首先,求出数列的前缀和数组 \(\bmod \ k\) 的值,即为 \(sum_i\)。

若一个 \([l,r]\) 的区间和能被 \(k\) 整除,则根据同余的性质可得 \(sum_r=sum_{l-1}\)。

于是我们使用一个桶记录每个 \(sum_i\) 的出现次数,每个 \(sum_i\) 对于答案的贡献即为 \(\dfrac{cnt_{sum_i} \times (cnt_{sum_i}-1)}{2}\),累加入答案输出即可。

T3

咕咕咕。。。

T4

模拟游戏过程进行 dfs 即可,需要进行记忆化。

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

int num[10][5];
double ans[5][5][5][5][5][5][5][5][5];
bool vis[5][5][5][5][5][5][5][5][5];

double dfs(int *xx){
	int x[10],tot=0;
	for(int i=1;i<=9;i++) x[i]=xx[i],tot+=x[i];
	if(!tot) return 1.0;
	if(vis[x[1]][x[2]][x[3]][x[4]][x[5]][x[6]][x[7]][x[8]][x[9]]) 
		return ans[x[1]][x[2]][x[3]][x[4]][x[5]][x[6]][x[7]][x[8]][x[9]];
	vis[x[1]][x[2]][x[3]][x[4]][x[5]][x[6]][x[7]][x[8]][x[9]]=1;
	tot=0;
	for(int i=1;i<=9;i++)
		if(x[i]!=0)
			for(int j=i+1;j<=9;j++)
				if(num[i][x[i]]==num[j][x[j]]) tot++;
	double cc=1.00/tot,ttot=0.0;
	for(int i=1;i<=9;i++)
		if(x[i]!=0)
			for(int j=i+1;j<=9;j++)
				if(num[i][x[i]]==num[j][x[j]]){
					x[i]--,x[j]--;
					ttot+=dfs(x)*cc;
					x[i]++,x[j]++;					
				}
	ans[x[1]][x[2]][x[3]][x[4]][x[5]][x[6]][x[7]][x[8]][x[9]]=ttot;
	return ttot;
}

int main(){
	for(int i=1;i<=9;i++){
		for(int j=1;j<=4;j++){
			string s; cin>>s;
			num[i][j]=(int)(s[0]);
		}
	}
	int x[10];
	for(int i=1;i<=9;i++) x[i]=4;
	dfs(x);
	cout<<setprecision(6)<<fixed<<ans[4][4][4][4][4][4][4][4][4];
	return 0;
}

标签:总结,10,YL,格子,int,sum,times,一层,模拟
From: https://www.cnblogs.com/XOF-0-0/p/18048930

相关文章

  • 点分治杂题总结
    前言由于已经点明是点分治,所以我们在文章中约定,题解只叙述:求经过当前递归到的\(x\)对于答案的贡献,用以减少文章冗余程度。如有错误,欢迎指出。\(\texttt{1.[BJOI2017]树的难题}\)其实还是比较简单一题,做多了自然就会。首先我们先\(\texttt{dfs}\),在\(x\)的子树上处理一......
  • YL 模拟赛总结 11
    ProblemT1略。T2略。T3结论题。令所有牛的最终饥饿值为\(x\),则分别对于每一头牛进行考虑:对于第一头牛,它需要的最少玉米袋数为\(h_1-x\);对于第二头牛,它单独需要的最少玉米袋数为\(h_2-x\),而第一头牛已经用了\(h_1-x\)袋玉米,因此它需要的最少玉米袋数为\(h_2-x-......
  • 3.2每日总结
    石家庄铁道大学2024年春季  2022级课堂测试试卷—数据同步练习课程名称:大数据库技术与应用 任课教师:王建民  考试时间:120分钟  一、    数据结构分析:(1)京津冀三省的2015年度的科技成果数据原始表,为Access数据库,; (2)要求将三省的科技成果数据汇总到同一表中(要......
  • Living-Dream 周考总结 第3期
    Link,第四场没打。T1\(100\),没挂分。\(\operatorname{lcm}(x,y)=\dfrac{x}{\gcd(x,y)}\timesy\)#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ //freopen("as01.in","r",stdin); //freopen("as0......
  • Living-Dream 周考总结 第4期
    Link。T1\(100\),没挂分。依题计算即可。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ //freopen("as01.in","r",stdin); //freopen("as01.out","w",stdout); ios::sync_with_stdio(0); ......
  • Living-Dream 周考总结 第1期
    Link。T1依题计算即可,\(O(1)\)。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ ios::sync_with_stdio(0); doublen;cin>>n,n=ceil(n/5.0); cout<<setprecision(2)<<fixed; if(n<=100)cout<<0.58......
  • Living-Dream 周考总结 第2期
    Link,第二场没打。T1\(100\),没挂分。依题计算即可,\(O(1)\)。#include<bits/stdc++.h>usingnamespacestd;doublen,a,b;intmain(){ //freopen("as01.in","r",stdin); //freopen("as01.out","w",stdout); cin>>n>&......
  • 解决Puppeteersharp 被检测到的方法, 顺带学习了js如何实现 模拟点击拖动事件
    varlaunchOptions=newLaunchOptions{Headless=false,DefaultViewport=null,IgnoreHTTPSErrors=true,ExecutablePath=path+"\\.local-chromium\\chrome-win\\chr......
  • 苍穹外卖总结(未完结)
    1.如果套餐库存为0或者套餐下架业务逻辑是什么样呢?套餐库存为0的业务逻辑:下单失败:当用户下单时,系统可以检查套餐的库存,如果库存为0,则拒绝生成订单,返回给用户相应的提示,如“库存不足”或“该套餐已售罄”。套餐下架的业务逻辑:阻止下单:当套餐下架时,用户下单时不会查询到已......
  • WOC总结
    WOC总结有感1.总结一下WOC以及我的分工​ 这个项目主要是完成对SastWiki这个网站的模拟编写,通过前后端分离的方式搓出这个网站​ 我是Web组的,负责用户管理的要求,包括登录,注册,用户相关的数据库管理,权限的管理2.讲讲自己学到了什么​ 1.刚学C#,算是对这门语言更加深入了(包括Lin......