搜索——P5194 [USACO05DEC]Scales S+P5440 【XR-2】奇迹+P1378 油滴扩展

news/2023/6/6 5:06:45

传送门:[USACO05DEC]Scales S - 洛谷

思路: 题意简化为给出一堆数字,求不超过给定限制C的情况下最大可以拼出的数字,第一眼看过去感觉可以用01背包,但是C的范围太大不行,用搜索的话也没什么特征,只能2^n爆搜,n的范围1000....,这时候根据题目中的一个重要条件,第三项开始每一项大于等于前两项的和,根据斐波那契数列,最多好像到40还是50项就已经超过2^30了,因此题目里面的n的实际范围最多也就到50,根本就没有1000,这时候再给它一点小小的剪枝震撼就能过了

剪枝1:从大到小开始枚举,这样子搜索分支会少很多

剪枝2:利用前缀和的思想,当某个数后面所有数字的和都当前的数字和加起来都已经小于C时就直接可以全部加上了

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int d[50],sum[50];
int n,ans,c;
void dfs(int idx,int x)
{ans=max(ans,x);if(idx>n)return;if(sum[idx]<=c-x){ans=max(sum[idx]+x,ans);return;}if(d[idx]+x<=c)dfs(idx+1,d[idx]+x);dfs(idx+1,x);
}
signed main()
{scanf("%lld%lld",&n,&c);for(int i=n;i>=1;i--){cin>>d[i];sum[i]=sum[i+1]+d[i];}dfs(1,0);cout<<ans<<endl;return 0;
}

传送门:【XR-2】奇迹 - 洛谷 

思路: 题意如题面所示,按照出题人的解法就是将所有符合条件的8位数日期都预处理出来,每输入一个新的不确定日期就遍历所有预处理出来的日期看在相应位置有没有符合条件的。

1.处理出(日:xx)以及(月日:xxxx)是质数的4位数日期

2.再找(年份:xxxx)加上(月日:xxxx)是质数的8位数日期

3.对于闰年的特殊判断因为29和229都是质数,找出所有xxxx0229是质数的日期

4.对输入进行一一比对

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int p[]={0,3,5,7,11,13,17,19,23,29,31,9999};
map<int,int>mp;
int ans[N],cnt;
int b[200],cnt1;
char s[10];
bool is_primes(int x)
{for(int i=2;i*i<=x;i++){if(x%i==0)return false;}return true;
}
signed main()
{for(int i=1;i<=12;i++){for(int j=3;j<=d[i];j++)if(is_primes(j)&&is_primes(i*100+j))b[++cnt1]=i*100+j;}for(int i=4;i<=9999;i+=4)if((i%100!=0||i%400==0)&&is_primes(i*10000+229))ans[++cnt]=i*10000+229;for(int i=1;i<=9999;i++)for(int j=1;j<=cnt1;j++)if(is_primes(i*10000+b[j]))ans[++cnt]=i*10000+b[j];int T;scanf("%lld",&T);while(T--){int t=0;scanf("%s",s+1);for(int i=1;i<=cnt;i++){int k=ans[i];int flag=1;for(int j=8;flag&&j>=1;j--,k/=10)if(s[j]!='-'&&s[j]-'0'!=k%10)flag=0;t+=flag;}cout<<t<<endl;}return 0;
}

传送门:油滴扩展 - 洛谷

思路: n个数全排列的时间复杂度,从一个点扩展时要看点到四个墙壁的最短距离以及另一些油滴圈的最短距离

有一个注意的要点就是:如果当前要扩展的点已经在别的油滴圈内则不能再扩展了

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const double PI=3.1415926535;
const int N=1e6+10;
int n;
struct{double r;double x,y;bool in;
}a[10];
bool st[10];
double x,y,x1,y11;
double ans;
double cal(int i)
{double s=min(abs(a[i].x-x),abs(a[i].x-x1));s=min(s,min(abs(a[i].y-y),abs(a[i].y-y11)));for(int j=1;j<=n;j++)if(i!=j&&st[j]){double d=sqrt(pow(a[i].x-a[j].x,2)+pow(a[i].y-a[j].y,2));s=min(s,max(0.0,d-a[j].r));}return s;
}
void dfs(int t,double sum)
{if(t>n){ans=max(ans,sum);}for(int i=1;i<=n;i++){if(!st[i]){a[i].r=cal(i);st[i]=true;dfs(t+1,sum+a[i].r*a[i].r*PI);st[i]=false;}}
}
signed main()
{scanf("%lld",&n);cin>>x>>y>>x1>>y11;for(int i=1;i<=n;i++){scanf("%lf%lf",&a[i].x,&a[i].y);}dfs(1,0);double sum=abs(x1-x)*abs(y11-y);cout<<(int)(sum-ans+0.5)<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4554327.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

每个初恋女子都是相似的

心理导读&#xff1a;每一个初恋女子总是那么相似。在刚刚遭遇爱情的时候&#xff0c;我们可以没有技巧&#xff0c;没有底线&#xff0c;没有顾虑&#xff0c;没有衡量。仅凭着一腔热情&#xff0c;去闯荡&#xff0c;去付出。 ——www.xinli001.com 我的一个发小终于恋爱了。…

很遗憾未能成功连接服务器神武,神武暗恋这件小事:很遗憾没有成为你的英雄_ 叶子猪神武...

神武暗恋这件小事&#xff0c;很遗憾没有成为你的英雄&#xff0c;大家快来围观吧。相关新闻&#xff1a;不知道大家是否还记得之前有篇关于暗恋的故事&#xff0c;一位玩家因为之前经常一起组队&#xff0c;活动&#xff0c;而日久生情的慢慢暗恋上了一位女大唐&#xff0c;渐…

激活层是每一层都有吗_每一个人的青春里,都有一段刻骨铭心的初恋,你还记得她吗?...

1.热饮店门口&#xff0c;在冬天最受欢迎。有时候下课走在校道&#xff0c;天已经黑了&#xff0c;远远的就能看见它亮着灯。冬日里六七点的天又冷又暗&#xff0c;但总能看见有人哈着冷气往店里走&#xff0c;或者捧着一只冒着热气的杯走出来&#xff0c;手臂上还挂着一袋吃的…

死党暗恋校花失败,我爬了这个网站发给他分分钟治愈,男人的快乐往往很简单(每天一遍,忘却初恋)

死党一直暗恋校花&#xff0c;但是校花对他印象也不差&#xff0c;就是死党一直太怂了&#xff0c;不敢去找校花&#xff0c;直到昨天看到校花登上了校董儿子的豪车&#xff0c;死党终于彻底死心&#xff0c;大醉一场&#xff0c;作为他的兄弟&#xff0c;我怎么能看他郁郁不振…

【Linux】基于 Pintos 实现新的用户级程序的系统调用 | 冯诺依曼架构

&#x1f4ad; 写在前面&#xff1a;本章我们首先会明确冯诺依曼体系结构的概念&#xff0c;旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统&#xff0c;这个在之前的章节已经有所铺垫&#xff0c;当时我们只讲解了操作系统是什么&a…

【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(18):方阵的幂级数

目录前言往期文章5.3 方阵的幂级数5.3.1 方阵级数收敛定义及判断定义5.7定义5.8方阵级数的收敛、绝对收敛的性质5.3.2 方阵幂级数收敛定义及判断定义&#xff1a;方阵幂级数定理5.3.1定理5.3.2结语前言 Hello&#xff01;小伙伴&#xff01; 非常感谢您阅读海轰的文章&#xff…

vue3学习笔记(总)——ts+组合式API(setup语法糖)

文章目录1. ref全家桶1.1 ref()1.2 isRef()以及isProxy()1.3 shallowRef()1.4 triggerRef()1.5 customRef()1.6 unref()2. reactive全家桶2.1 reactive()2.2 readonly()2.3 shallowReactive() 和 shallowReadonly()3. to系列全家桶3.1 toRef()3.2 toRefs()3.3 toRaw()4. comput…

[leetcode]刷题--关于位运算的几道题

&#xff08;1&#xff09;位运算的本质&#xff0c;其实是对二进制补码储存形式的修改。 位运算常见的运算符为 <<左移n个位置&#xff08;算数移位&#xff0c;符号位不变&#xff09; >>右移动n个位置&#xff08;采用直接丢弃末尾数字的方法&#xff0c;符号…