首页 > 其他分享 >SXYZ-7.3训练赛

SXYZ-7.3训练赛

时间:2023-07-03 21:11:53浏览次数:42  
标签:10 return 25 int LL SXYZ 7.3 训练赛 dp

image

T1

啥啥啥,T1又又又爆了,整个人精神状态 良好

解题思路

考虑数据保证任意两个房子不重合
建一个结构体存两边
最后判断一下

\(>t\) 加两个
\(==t\) 加一个

== 但是!!!!,没有排序!!喜提5分 ==

/*
刚刚写思路咋卡退了?? 
考虑数据保证任意两个房子不重合
建一个结构体存两边
最后判断一下
>t加两个
==t加一个 
*/
#include<bits/stdc++.h>
using namespace std;
#define N 300000
int x[N],a[N],n,t;
struct nod{
	double l,r;
}f[N];
bool cmp(nod a,nod b){
	return a.l<b.l;
}
int main(){
	freopen("house.in","r",stdin);
	freopen("house.out","w",stdout);
	scanf("%d%d",&n,&t);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&x[i],&a[i]);
	}
	for(int i=1;i<=n;i++){
		f[i].l=x[i]-(a[i]/2.0);
		f[i].r=x[i]+a[i]/2.0; 
	}
	sort(f+1,f+1+n,cmp);
	int ans=2;
	for(int i=1;i<n;i++){
		if((f[i+1].l-f[i].r)>t) ans+=2;
		if((f[i+1].l-f[i].r)==t) ans++; 
	}
	printf("%d",ans);
	return 0;
}

T2

考虑暴力时间复杂度 \(O(n^2k)\) ,

由于是环,于是破环为链。

从头到尾扫一遍。、

6 4
2 2 1 3 3 1
3 2 4 11

很遗憾没有想出 \(O(nk)\) 的正解,因为我状态转移不了。

写了个模拟退火,感觉跑的还挺快

喜提25分

又细想了一下双指针做法,但是感觉实现起来很困难。

T4

看到题目暴力就有了,写一个 get 函数,然后从1枚举到 R,看是否符合条件。

ULL get(ULL m){
	ULL sum=0;
	while(m!=0){
		sum+=m%10;
		m=m/10;
	}
	return sum;
}

比赛时捞了45分。

然后尝试打表暴力优化,然而好像极限是55分,\(1e18\) 过于强悍。

for(int i=0;i<=1e6;i++){
		if(i%10==0)
		biao[i]=get(i);
		else biao[i]=biao[i-1]+1;
	}
	for(int i=1;i<=R;i++){
		if(i*k<=1e6){
			if(biao[i]==biao[i*k]) ans++;
		}
		else{
			if((biao[i/1000000]+biao[i%1000000])==(biao[i*k/1000000]+biao[(i*k)%1000000])) ans++;
		}
	}

思考正解数位 DP,

设 \(dp[i][0/1][j][p][t]\) 表示填到了第 i 位,卡不卡上界,\(f(x)=j\) ,\(f(k×x)=p\) (不计算最高位),需要向最高位进 t 的 x 有多少个。

所以这个 0/1 就表示后面的 i 为和 R 后 i 位的大小关系,如果填的数大于 R 后 i 为,那么这个状态就是1;否则就是0

至于转移,就比较简单,我们枚举这一位上填什么数y,那么对于x,数位和增加了y,对于 \(k×x\),这一位上直接来一个乘法是 \(k×y\),还有之前的进位 t,于是就是 \((k×y+t)%10\),新的进位就是 \((k×y+t)/10\)。

最后的答案就是 \(∑idp[lgR][0][i][i][0]\),我们把 \(j−p\) 看成一维状态就好了

AC代码:

#include<bits/stdc++.h>
#define re register
#define LL long long
LL dp[25][2][1000][500];
int m,w,a[25],M=250;LL n;
inline void split(LL x) {
	while(x) a[++w]=(x%10),x/=10;
}
int main() {
	freopen("number.in","r",stdin);
	freopen("number.out","w",stdout);
	scanf("%lld%d",&n,&m);
	dp[0][0][0][M]=1;
	split(n);
	for(re int i=0;i<w+3;i++)
		for(re int j=0;j<2;++j)
			for(re int k=0;k<1000;++k)
				for(re int p=M-2*i*9;p<=M+2*i*9;++p) {
					if(!dp[i][j][k][p]) continue;
					for(re int t=0;t<10;++t)
						dp[i+1][t==a[i+1]?j:t>a[i+1]][(k+t*m)/10][p+t-(k+t*m)%10]+=dp[i][j][k][p];
				} 
	printf("%lld\n",dp[w+3][0][0][M]-1);
	return 0;
}

标签:10,return,25,int,LL,SXYZ,7.3,训练赛,dp
From: https://www.cnblogs.com/alloverzyt/p/17524049.html

相关文章

  • 7.3日总结
    一、完成了pta实验报告1000+积分。二、考驾照科一刷题。三、复习了图论的dijlstra算法 #include<iostream>#include<cstring>#include<algorithm>#include<queue>usingnamespacestd;typedefpair<int,int>p;constintN=100010;intn,m;intd[N];boolst[......
  • 7.3总结
    今天白天出门晚上回家学习字符和字符串的+操作,+连接两个不同的字符串。自增自减运算符,赋值运算符,关系运算符,用于用来比较判断两个变量或常量的大小等。晚上睡觉前会读会书,还有写写PTA上的习题明天计划继续学习各种运算符的操作......
  • 7.3
    昨天打工上午,开始搬床一共13张床两人一张夸夸往上搬从二楼走楼梯跑到四楼,还算算可以人家还知道跟着我们班然后去买了一些冰棍和水.下午就轻松多了铺了半天床垫子,一百多张然后就歇了半天,当时还有床要拼装但是鉴于工具有限去的人多了也没啥用,去了四个人,我就没去,跟其他的哥们......
  • 2023.7.3
    早上一如既往地起来打了会儿游戏,然后出门和球友吃了早饭便去打了一会儿篮球,中午吃完饭看了一会儿java的习题,又买了一本JAVA的教材看了看上面的题,花了3个小时解决了一些简单的题后又出门打了会儿球,回家爽爽地洗了个澡,明天打算看看课外书。......
  • 2023年暑假集训总结/7.3
    2023年暑假集训总结/7.3预估成绩:100+50+40+20=210实际成绩:100+25+24+25=174T1房题意:有n个已知中心和长度且互不重合的区间,问有多少个长度为t的区间恰好与其中一个区间的一个端点相等,且不与所有区间重合思路&做法:签到题,注意到答案上界为2n,只需要依次枚举接在每个区间左右......
  • 暑假周记(7.3)
    今日周一,又是新的一周、新的一天,昨天那么多愁善感那是我么?当然是,但是那又有什么关系,负面情绪就是要那样发泄出来,今天的我又是新的我。七月三号了,距离去补习班上班还有不到一周,去教四五年级的小朋友们英语,正好上这个班又可以让我的作息更加规律有效帮助我大二的作息,只要回学校的时......
  • 7.3总结
    上午起床之后送妹妹上学,回来后在床上躺了会,然后做pta,现在对于20分的题做起来很吃力,但是要是把题一点一点看明白,还是能够做得出来,中午闲着在床上看了几页的《大道至简》,感觉很有意思,但是电子版看起来不是很舒服,然后就睡了一会,下午就开始慢慢把做过的pta整理到报告中,先扩充了目录,让......
  • 2023.7.3
    ##输入带空格的字符串~~~c++1.#include<string.h>strings;getline(cin,s);2.#include<cstring>#include<stdio.h>chara[1024];gets(a);intlen=strlen(a);//得到数组的实际长度~~~##填充输入~~~javasetw(intn)//用来控制输出间隔//例:cout<<'s&......
  • day81(2023.7.3)
    1.依赖冲突调解_最短路径优先原则 2.依赖冲突调解_最先声明原则3.依赖冲突调解_排除依赖、锁定版本 4.Maven聚合开发_聚合关系 5.Maven聚合开发_继承关系6.Maven聚合案例_搭建父工程7.Maven聚合案例_搭建dao模块8.Mave......
  • C++面试记录——2023.7.3
    1、什么是虚函数?(基础反而卡住了,往多态方面说了)  2、虚函数实现原理?(不知道) 3、什么是完美转发?(没学深,浅浅说了跟右值引用相关) 4、构造函数有哪些?(默认、带参、拷贝、移动) 5、现有一个右值变量,如何调用移动构造函数?(麻了,不会) 6、知道lambda表达式吗?(C++11特性,匿......