自测题的整理(持续更新)
LITTLESUN昨天找了點模擬和排序的小水怪來了一波惡戰,下面進入戰況回播!
小怪一 鏈接:https://www.luogu.org/problemnew/show/P1426
姓名:洛谷P1426 小魚會有危險嗎??
等級:入門難度(模擬)
這道題的第二個測試點容易出現問題,我們很容易忽略掉如果一開始就在獵人范圍內的情況。所以在最開始要對初始狀態進行分類討論。在進入范圍后的判斷要記得使用*0.98的數值。并且要記得減去范圍內已經走過的范圍。
AC代碼如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
double s,x;
scanf("%lf%lf",&s,&x);
double a=7;
if(x>=s)
{
if(2*x>7)
{
printf("y");
return 0;
}
else
{
printf("n");
return 0;
}
}
else
{
double total=0;
while(a>0)
{
total=total+a;
a=a*0.98;
if(total>=(s-x))
{
if(2*x>(total-s+x+a))
{
printf("y");
return 0;
}
else
{
printf("n");
return 0;
}
}
}
return 0;
}
小怪二 鏈接:https://www.luogu.org/problemnew/show/P1014
姓名:洛谷P1014 Cantor表
等級:普及
AC代碼如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 000
using namespace std;
int A[MAXN][MAXN];
int main()
{
int N;
scanf("%d",&N);
/*for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
A[i][j]=i/j;
}
}
printf("%d",A[4][1]);*/
int total=0;
int p,x,y;
for(int i=1;i<=N;i++)
{
total=total+i;
if(total>=N)
{
total=total-i;
p=N-total;
if(i%2==0)
{
x=1+(p-1);
y=i-(p-1);
}
else
{
y=1+(p-1);
x=i-(p-1);
}
printf("%d/%d",x,y);
return 0;
}
}
return 0;
}
?
?
小怪三? 鏈接:https://www.luogu.org/problemnew/show/P1071
姓名:洛谷P1071 潛伏者
等級:NOIP 2009 提高組 第一題
這個題LITTLESUN本來是90然后一直過不去,后來在測試點的數據里發現了一個大坑,我們不僅要注意不能多對一還要考慮到一對多的情況。我在原代碼的基礎上加了一個map進行標記,但我覺得可能麻煩了,回來有新的想法再補上呢
AC代碼如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
#define MAXN 2000
using namespace std;
char A[MAXN];
char B[MAXN];
int C[MAXN];
char D[MAXN];
char E[MAXN]={'*','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
map<char,bool>m;
int main()
{
scanf("%s",A);
scanf("%s",B);
scanf("%s",D);
for(int i=0;i<100;i++)
{
C[i]=666;
}
for(int i=0;i<strlen(A);i++)
{
if(C[A[i]-'A'+1]==666||C[A[i]-'A'+1]==(B[i]-'A'+1)-(A[i]-'A'+1))
{
C[A[i]-'A'+1]=(B[i]-'A'+1)-(A[i]-'A'+1);
}
else
{
printf("Failed");
return 0;
}
}
int cnt=0;
for(int i=1;i<=26;i++)
{
if(C[i]!=666)cnt++;
else continue;
}
if(cnt==26)
{
for(int i=1;i<=26;i++)
{
E[i]=E[i]+C[E[i]-'A'+1];
if(!m[E[i]]) m[E[i]]=true;
else
{
printf("Failed");
return 0;
}
}
for(int i=0;i<strlen(D);i++)
{
D[i]=D[i]+C[D[i]-'A'+1];
}
}
else
{
printf("Failed");
return 0;
}
//printf("%d",C[6]);
for(int i=0;i<strlen(D);i++)
{
printf("%c",D[i]);
}
return 0;
}
轉載于:https://www.cnblogs.com/LITTLESUNwl/p/10493643.html
總結
以上是生活随笔為你收集整理的自测题的整理(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 持续演进,克服“REST缺乏”
- 下一篇: 开源工作流程引擎ccflow多人待办处理