感觉、、我比去年还菜
/*2019-3-28成绩出来了、省二,
和去年一样,去年是差点省一,今年差点省三。。。
数的分解10分,迷宫15分,这样丢了25分
完全二叉树的权值20分的题,当成满二叉树做的,按丢5分算(其实觉的丢的分不止这些)
这样丢了30分。。。妈耶,我想一巴掌呼死自己
等会、、等差数列还有20分呢、、、、mdlx
ps 学校的机房还是不能用longlong,又浪费好长时间调bug,醉了
*/
没啥想法的第一题,瞪眼瞪出的490
手算的第二题BYQ
拆2019的,我好像少读了个条件、、(还是说那个特殊数的和来着,忘了、、)
迷宫的手动模拟了下dfs,mdzz,眼都花了,最后写了个dfs
等差数列智障写了个最小的差分、、应该求gcd+特判gcd==0的
完全二叉树不是,满二叉树、、gg
倒数第二题,sort直接写的,据说,不对,要考虑括号、、、(我寻思着题目里也没说啊)
最后一题太麻烦,直接输出随机数了
凉了、、、这么一算我,分都没了、、
C
#include
using namespace std;
typedef unsigned long long ll;
const int maxn = 1e5+7,mod = 1e9+7;
int dp[20190324+10] = {0,1,1,1};
int main(){
for(int i=4;i<=20190324;i++)
dp[i] = (dp[i-1]+dp[i-2]+dp[i-3])%10000;
printf("%d\n",dp[20190324]);
return 0;
}
// 4659
D
wsl,少看了个条件,不能有 2 或 4
#include
using namespace std;
typedef unsigned long long ll;
const int maxn = 1e5+7,mod = 1e9+7;
bool jude(int x){
while(x){
if(x%10 == 2 || x%10 == 4)
return true;
x /= 10;
}
return false;
}
int main(){
ll ans = 0;
for(int i=1;i<=2019;i++){
if(jude(i))continue;
for(int j=i+1;j<=2019 && 2019-(i+j)>j;j++){
if(jude(j) || jude(2019-(i+j)))continue;
ans++;
}
}
printf("%lld\n",ans);
return 0;
}
// 40785
迷宫,bfs+dfs
当时写错了qwq
咱这个代码可以看下是怎么走哒,笑
*1 1 1 1 1 11 1 1 1 11 1 11 1 1****1 1 1 1
* 1 1 1 1 1 1 1 1**11* 11 1 1 1
*1111 11 1 1 1 11 1 1 111***11 ******1
*1******* 1 1 1 11 1 1 1 ***1 1 1 1 11* 1 11
***11111***** 1 1 1 1 1 1*1 1 11 ***
11 1 11 1*1 1 1 11 11 1**11 1 1 1 1111*111
11 11 1 1*1 1 1 1 1 1* 1 1 111****
1 1 1 1** 1 11 1 1 1 11111 *11 1 *111 1
111 1*1 1 11 1 1***1 1 11 ***1 1
11 11 1 **111 1 1 1 1 1 1 1*1 1 1 11*1
1 1 1* 1 1 1 1 1 111 1 * 1 1 1 1 **1 1
111 1 1 1 *1 1 1 1 1 1 1*1 1 1 1*1
1 * 1 1 11 1111 1 11 ****1 1 1 1** 11
1 1 1 1 111* 1 11 1 11 1111*11 1 *1
1 1 1 1 1 *11 1 1 1 1 1 1 1*****111 111*1 1
1 1 11* 1 1 11 1 11 1 *1 111 *** 1
1 1 1 1 * 1 1 1 1 1 * 1 1111*1 1 1
1 1 1 1 1*11 1 1 1 1 11 1 1*11 111****11 1 1
11 1 1 1* 11 1 1 1 1 *** 1 **111 1
1 11 * 11 1 11 1 1 1 1**1 *1 111 1
1 1 1 1 1*1 *** 111 11 1 11 1*11*1 1 1 1
1 1 1 **11 1*1*1 1 1 1 *1** 1 1 1 1
1 1 1 11* 1***1* 1 1 1 1 1 1*1*11111 1 1
1 1 1 ****11 *1 1 1 1 1 *1**********1
11 1 1 111 111**1 1 111 1 *1 11 111 1*
11 1 1 1 1*******1*** 111*1 11 *11
1 1 1 1 1 1 1 11111***1*1 1**1 1 1*
1 1 1 1 1 1 1 11 1 *1 1*1 1 111 1*
1111 1 1 11 111 ***** 1 1*11
1 11 111 1 111 1 1 11 111 1 1 11 1111***
DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUUL
LLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR
186
Process returned 0 (0x0) execution time : 1.883 s
Press any key to continue.
#include
#include
using namespace std;
typedef unsigned long long ll;
const int maxn = 1e5+7,mod = 1e9+7;
char s[100][100],ans[1000],t[5] = "DLRU",out[1000];
int cnt = 1e9;
int dx[4] = {1,0,0,-1};
int dy[4] = {0,-1,1,0};
bool vis[100][100];
int mmp[100][100],flag;
void Setout(int x,int y){
COORD coord;
coord.X = x; //第3行
coord.Y = y; //第3列
//获取控制台缓冲区句柄
HANDLE ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
//设置光标位置
SetConsoleCursorPosition(ConsoleHandle, coord);
}
void dfs(int x,int y,int deep){
if(flag)return;
if(x == 30 && y == 50){
if(cnt>deep){
cnt = deep;
for(int i=0;i0&&ty>0&&tx<=30&&ty<=50&& s[tx][ty]=='0' && !vis[tx][ty] && mmp[tx][ty]>mmp[x][y]){
ans[deep] = t[i];
vis[tx][ty] = 1;
Setout(ty-1,tx-1);
printf("*");
dfs(tx,ty,deep+1);
if(flag)return;
vis[tx][ty] = 0;
Setout(ty-1,tx-1);
printf(" ");
}
}
}
struct node{int x,y,id;};
void bfs(){
queue Q;
mmp[1][1] = 0;
Q.push(node{1,1,0});
while(!Q.empty()){
node top = Q.front();
Q.pop();
for(int i=0;i<4;i++){
node t = {top.x+dx[i],top.y+dy[i],top.id+1};
if(t.x>0&&t.y>0&&t.x<=30&&t.y<=50 && s[t.x][t.y] == '0' && mmp[t.x][t.y]>t.id){
mmp[t.x][t.y] = t.id;
Q.push(t);
}
}
}
}
int main(){
memset(mmp,0x3f,sizeof mmp);
for(int i=1;i<=30;i++)
scanf("%s",s[i]+1);
bfs();
system("cls");
for(int i=1;i<=30;i++){
for(int j=1;j<=50;j++)//printf("%c",s[i][j]=='0'?mmp[i][j]%2+'0':'#');
printf("%c",s[i][j]=='0'?' ':'1');
puts("");
}
//printf("%d\n",mmp[30][50]);
vis[1][1] = 1;
Setout(0,0);printf("*");
dfs(1,1,0);
Setout(0,31);
for(int i=0;i