今天,可太充实了,学习就是王道!
好就没有在周末全勤学习了,梦回高中.
本来早上是在看啊哈算法,前面部分发现好像都学习过就当复习了
但是看到了快排就忍不住想打一下
#include
int a[100];
void quiksort(int x,int y){
if(x>=y)
return ;
int head=a[x];
int j=x;
int k=y;
while(jhead&&k>j)
k--;
while(a[j]
最基础的原版快排
但是会被特殊的数据卡比如全是一样的那样的话就会退化,
正当我要继续研究的时候,同学给我发来了
蓝桥杯的题目,没话说直接开搞哈哈
第一题不想讲,(我题目看错了,刚开始还写错了,其实暴力就可以搞定的拉)
2
#include
#include
double n;
int pan(double sum){
if(abs(sum-n)<0.00001)
return 1;
else{
return 0;
}
}
int main(){
double y;
scanf("%lf",&n);
double sum;
for(y=12305905+7;y<=23333333;y++){
sum=0;
double x=23333333-y;
double l=x/23333333;
double k=y/23333333;
sum=-y*k*log2(k)-x*l*log2(l);
if(pan(sum)){
printf("%lf\n",sum);
break;
}
}
printf("%lf",y);
return 0;
}
12305912
b
Log函數以及暴力枚舉測試
不知道为何,精度不是我想要的0.00001
所以我确定答案的大概范围之后一个数一个数的加
最后找到了
12305912
如果计算式没写错
计算结果与题目基本符合
当然没办法验证正确性
我只是写了我认为正确的答案
ok
下一个
3.
2,反之转化最小的就是,效率最小的
!就是从转化率最大的来!
只要转化率再变小一点点,那么转化的金属就会变多
ok上代码
#include
int a[10020];
int b[10020];
int main(){
int n;
scanf("%d",&n);
for(int j=1;j<=n;j++){
scanf("%d%d",&a[j],&b[j]);
}
float minr=9999999999,max=0;
int mark=1;
int ans;
for(int h=1;h<=n;h++){
if(minr>(a[h]/b[h]))
minr=a[h]/b[h];
if(max
哈哈下一个
#include
int b[11]= {0};
int n,k,l=0;
struct node
{
int s;
int e;
int lo;
} a[11];
void newr()
{
l=0;
for(int j=1; j<=10; j++)
b[j]=0;
}
void dfs(int x,int time)
{
if(x>=k)
{
l=1;
return ;
}
else
{
for(int u=1; u<=k; u++)
{
if(b[u]==0&&a[u].s>=time)//时间够不用在天上盘旋就可以飞
{
int j=a[u].s+a[u].lo;
b[u]=1;
dfs(x+1,j);
b[u]=0;
}
else if(b[u]==0&&a[u].s+a[u].e>=time)//有可能时间不够但是在天上盘旋一会就可以了
{
int j=time+a[u].lo;
b[u]=1;
dfs(x+1,j);
b[u]=0;
}
else
{
return ;
}
}
}
}
int main()
{
scanf("%d",&n);
for(int j=1; j<=n; j++)
{
newr();
scanf("%d",&k);
for(int h=1; h<=k; h++)
scanf("%d%d%d",&a[h].s,&a[h].e,&a[h].lo);
dfs(1,0);
if(l==0)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}
记得回塑
以及地图标记
okoko 再下一个
试题 E: 接龙数列
时间限制: 1.0s
内存限制: 256.0MB
本题总分:15 分
【问题描述】
对于一个长度为 K 的整数数列:A1, A2, . . . , AK,我们称之为接龙数列当且
仅当 Ai 的首位数字恰好等于 Ai−1 的末位数字 (2 ≤ i ≤ K)。
例如 12, 23, 35, 56, 61, 11 是接龙数列;12, 23, 34, 56 不是接龙数列,因为 56
的首位数字不等于 34 的末位数字。所有长度为 1 的整数数列都是接龙数列。
现在给定一个长度为 N 的数列 A1, A2, . . . , AN,请你计算最少从中删除多少
个数,可以使剩下的序列是接龙序列?
【输入格式】
第一行包含一个整数 N。
第二行包含 N 个整数 A1, A2, . . . , AN。
【输出格式】
一个整数代表答案。
【样例输入】
5
11 121 22 12 2023
【样例输出】
1
【样例说明】
删除 22,剩余 11, 121, 12, 2023 是接龙数列。
试题 E: 接龙数列
8第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组
【评测用例规模与约定】
对于 20% 的数据,1 ≤ N ≤ 20。
对于 50% 的数据,1 ≤ N ≤ 10000。
对于 100% 的数据,1 ≤ N ≤ 105,1 ≤ Ai ≤ 109。所有 Ai 保证不包含前导 0。
好家伙我一看原来是dp呀
再看了一会和最大递增子序列好像啊
不能说不不一样,只能说几乎差不多呀,就是把判断的条件变难了那么一点点(可以忽略不计)
废话不讲直接上代码
#include
int a[100050],b[100050];
int c[100050],j=0;
int pan(int x,int y){
while(y>10)
y=y/10;
if(x%10==y)
return 1;
else
return 0;
}
int main(){
int n;
scanf("%d",&n);
for(int g=1;g<=n;g++)
scanf("%d",&a[g]);
for(int j=1;j<=n;j++){
b[j]=1;
c[j]=a[j];
}
for(int kl=2;kl<=n;kl++){
for(int y=kl-1;y>=1;y--){
if(pan(a[y],a[kl])){
if(b[kl]
就保留下最长的满足条件的子序列,其他的都是删除的 (我是不会告诉你我忘了一些,回去看了看我之前写的题目才返回来写的,我是菜狗!!!!!汪汪汪)
后面的改日再战(其实是被暴打了,呜呜呜呜呜呜呜)
ok 今天到这就结束了
撒花谢幕!!!!!