首页 > 其他分享 >ACM预备队-week11(综合)

ACM预备队-week11(综合)

时间:2023-01-16 21:00:44浏览次数:62  
标签:week11 int LL cin ACM ans tie 预备队 105

1.汤姆斯的天堂梦

题目链接:P1796 汤姆斯的天堂梦 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

此题类似于数字三角形,要求从顶点到三角形最后一行的最大距离和,dp

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=105;
 4 int n,k,f[N][N];
 5 signed main()
 6 {
 7     ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
 8     cin>>n;
 9     memset(f,0x3f,sizeof f);
10     f[0][1]=0;
11     for(int i=1;i<=n;i++)
12     {
13         cin>>k;
14         for(int j=1;j<=k;j++)
15         {
16             int a,b;
17             cin>>a;
18             while(a!=0)
19             {
20                 cin>>b;
21                 f[i][j]=min(f[i][j],f[i-1][a]+b);
22                 cin>>a;
23             }
24         }
25     }
26     int ans=0x3f3f3f3f;
27     for(int i=1;i<=k;i++)
28     {
29         ans=min(ans,f[n][i]);
30     }
31     cout<<ans<<endl;
32     return 0;
33 }

2.跑步

题目链接:P1806 跑步 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

本题类似于01背包,可以从将数组从二维优化成一维

 1 #include <bits/stdc++.h>
 2 #define int long long
 3 using namespace std;
 4 const int N=510;
 5 int ans;
 6 int f[N][N];//f[i][j]表示总共跑i圈,最后一圈跑了j圈的方案数 
 7 //感觉就是01背包了
 8 signed main()
 9 {
10     ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
11     int n;
12     cin>>n;
13     for(int i=1;i<=n;i++)f[i][i]=1;
14     for(int i=1;i<=n;i++)
15          for(int j=1;j<i;j++)
16              for(int k=1;k<j&&k+j<=i;k++)
17                 f[i][j]=f[i][j]+f[i-j][k];
18     for(int i=1;i<n;i++) ans+=f[n][i];
19     cout<<ans;
20     return 0;
21 }

3.砝码称重

题目链接:P8742 [蓝桥杯 2021 省 AB] 砝码称重 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

f[i][j]表示从前i个砝码选,总重量是j的bool值

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 const int N=110,M=2e5+10,B=M/2;//f[i][j]表示从前i个砝码选,总重量是j的bool值 
 6 
 7 int n,m;//m表示所有方法的总重量 
 8 int w[N];
 9 bool f[N][M];
10 
11 signed main()
12 {
13     ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
14     cin>>n;
15     for(int i=1;i<=n;i++)cin>>w[i],m+=w[i];
16     f[0][B]=true;
17     for(int i=1;i<=n;i++)
18         for(int j=-m;j<=m;j++)
19         {
20             f[i][j+B]=f[i-1][j+B];
21             if(j-w[i]>=-m)f[i][j+B]|=f[i-1][j-w[i]+B];
22             if(j+w[i]<=m)f[i][j+B]|=f[i-1][j+w[i]+B];
23         }
24     int res=0;
25     for(int j=1;j<=m;j++)
26         if(f[n][j+B])res++;
27     
28     cout<<res<<endl;
29     return 0;
30 }

4.遗址

题目链接:P1959 遗址 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

如果枚举四个点,三个点,都会TLE,可以降到N^2的复杂度,我们可以从其中的两个点,推测中其中另外两个点

#include<bits/stdc++.h>
using namespace std;
int vis[5005][5005];
int x[3005];
int y[3005];
int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> x[i] >> y[i];
		vis[x[i]][y[i]] = 1;
	}
	int ans = 0;
	for (int i = 1; i <= n; i++)
	{
		for (int j = i+1; j <= n; j++)
		{
			int x1 = x[i] - x[j];
			int y1 = y[i] - y[j];
			int x2 = x[i] + y1;
			int y2 = y[i] - x1;
			int x3 = x[j] + y1;
			int y3 = y[j] - x1;
			if (x2 < 1 || x2>5000 || y2 < 1 || y2>5000 || x3 < 1 || x3>5000 || y3 < 1 || y3>5000) continue;
			if (vis[x2][y2] == 1 && vis[x3][y3] == 1)
			{
				ans = max(ans, x1 * x1 + y1 * y1);
			}
		}
	}
	cout << ans;
	return 0;
}

5.环境治理

题目链接:P8794 [蓝桥杯 2022 国 A] 环境治理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

Floyd和二分的综合题目

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 LL  temp,n, Q;
 5 LL f[105][105],min_f[105][105],cut[105],dis[105][105];//cut为减少多少,dis表示减少后的
 6 bool check(LL day)
 7 {
 8     temp = 0;//赋初值
 9     LL times = day / n;
10     LL now = day%n;
11     for (int i = 1; i <= n; i++)
12     {
13         if (i <= now)cut[i] = times + 1;
14         else cut[i] = times;
15     }
16     /*for (int i = 1; i <= n; i++)
17         dis[i][i] = 0;*/
18     for (int i = 1; i <= n; i++)
19     {
20         for (int j = 1; j <= n; j++)
21         {
22             dis[i][j] = max(f[i][j] - cut[i] - cut[j], min_f[i][j]);
23         }
24     }
25     for (int k = 1; k <= n; k++)//Floyd模板
26         for (int i = 1; i <= n; i++)
27             for (int j = 1; j <= n; j++)
28                 dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
29  
30     for (int i = 1; i <= n; i++)
31     {
32         for (int j = 1; j <= n; j++)
33         {
34             temp += dis[i][j];
35         }
36     }
37     if (temp <= Q)return true;
38     else return false;
39 }
40 int main()
41 {
42     cin >> n>>Q;
43     for (int i = 1; i <= n; i++)
44     {
45         for (int j = 1; j <= n; j++)
46         {
47             cin >> f[i][j];
48         }
49     }
50     for (int i = 1; i <= n; i++)
51     {
52         for (int j = 1; j <= n; j++)
53         {
54             cin >> min_f[i][j];
55         }
56     }
57     LL left = 0, right = 1e9,mid/*,ans=1e9*/;
58     while (left<right)
59     {
60         mid = (left + right) / 2;
61         if (check(mid))/*ans=min(ans,mid),*/ right = mid;
62         else left = mid + 1;
63     }
64     if (left == 1e9)cout << "-1" << endl;
65     else cout << left << endl;
66     return 0;
67 }

 

标签:week11,int,LL,cin,ACM,ans,tie,预备队,105
From: https://www.cnblogs.com/Zac-saodiseng/p/17056281.html

相关文章

  • 2020-2021 ACM-ICPC Latin American Regional
    K-Keylogger就是你可以显然的发现一个\(O(n^3)\)级别的动态规划。设\(dp_{i,j}\)表示第\(i\)位密码,现在按的键是\(j\)的答案。然后发现矩阵的每一行是单调递......
  • ACM入坑小作文
       今日份开通博客,希望在博客可以完整记录自己的ACM进阶之路吧。   先来补一篇入坑小作文,刚刚步入大一,在某种机缘巧合之下,就看到了学校ACM算法协会的宣传。一向对......
  • SYUCT acm第八次限时训练题解
    SYUCTacm第八次限时训练题解MakeitBeautiful题目大意code#include<bits/stdc++.h>usingnamespacestd;constintN=100;inta[N];intb[N];voidsolve()......
  • 又一创新!阿里云 Serverless 调度论文被云计算顶会 ACM SoCC 收录
    关注阿里巴巴中间件公众号,后台回复关键词【FC】查看ACMSoCC录用论文!近日,阿里云函数计算产品团队撰写的关于Serverless调度的创新性论文被ACMSoCC国际会议长文录用......
  • ## SZTUACM周报(2023.1.2 ~ 2023.1.8)
    图论刷题昂贵的聘礼(单源最短路,图论建模)思路:将每个物品看作一个点,到达这个点表示获得该物品,获取该物品的代价就是边权,用0号点表示初始状态(不拥有任何物品),......
  • ACM预备队-week10(图论3)
    1.Einstin学画画:题目链接:P1636Einstein学画画-洛谷|计算机科学教育新生态(luogu.com.cn)1#include<bits/stdc++.h>2usingnamespacestd;3intvis[1005];......
  • ACM&OI 多项式算法专题
    ACM&OI基础数学算法专题一、FFT基础拉格朗日插值复数的运算性质和几何性质单位根和单位根反演快速傅里叶变换(FFT)的分治实现快速傅里叶逆变换(IFFT)快速傅里叶变换的......
  • 2022ACM寒假第一周训练部分题目代码
    在比赛结束后可以查看其他人的代码,这样的是可以查看,若非绿色则对方没公开。1周一1.1A链表应用#include<iostream>#include<list>usingnamespacestd;/*......
  • #ACM2021_23. 摘柿子 and#ACM2021_34. 幸运数字
    #ACM2021_23.摘柿子:一道很简单的排序题,估计是送分题(俺的做法:#include<stdio.h>#include<stdlib.h>#defineN100#defineM100intmain(){intn;//n为柿子个......
  • #ACM2021_25. 有关2022
    今天整了个小题,但可惜超时了(悲我之前的做法(暴力枚举,但超时)#include<stdio.h>#include<string.h>intmain(intargc,constchar*argv[]){inta,b,c,d,e,sum......