歡樂紀中某B組賽【2018.12.22】
阿新 • • 發佈:2019-01-05
前言
全暴力第9瞭解一下,
成績
是有算別人的
正題
數字【數論 】
數論神題
部落格連結:
https://blog.csdn.net/Mr_wuyongcong/article/details/85207199
的蛋糕【狀態壓縮 】
狀壓神題
部落格連結:
https://blog.csdn.net/Mr_wuyongcong/article/details/85207614
靈能矩陣【 樹形 】
怎麼這麼多LCM
部落格連結:
https://blog.csdn.net/Mr_wuyongcong/article/details/85208305
T1 36.4分code
#include<cstdio>
using namespace std;
int n,f[1000000];
int D(int x)
{
if(x<10) return x;
int sum=0;
while(x) sum+=x%10,x/=10;
return D(sum);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=1000000;i++)
{
for(int j=1;j<=9;j++)
if(D(i/j)==j&&i%j==0){
f[i]=1;
break;
}
f[i]+=f[i-1];
}
while(n--)
{
int l,r;
scanf("%d%d",&l,&r);
printf("%d\n",f[r]-f[l-1]);
}
}
T2 30分code
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#define N 75
#define MS 138
using namespace std;
int a[N][N],ans,n,m;
bool check()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]&&(a[i+1][j]||a[i][j+1])) return false;
return true;
}
void dfs(int x,int y,int c)
{
int mx,my;
if(c==ans) return;
if(x==n&&y==m&&check())
{
ans=c;
return;
}
else if(x==n&&y==m) return;
if(x==n) mx=1,my=y+1;
else mx=x+1,my=y;
dfs(mx,my,c);
if(!a[x][y])
return;
if(a[x+1][y]){
a[x+1][y]=0;
a[x][y]=0;
dfs(mx,my,c+1);
a[x+1][y]=1;
a[x][y]=1;
}
if(a[x][y+1]){
a[x][y+1]=0;
a[x][y]=0;
dfs(mx,my,c+1);
a[x][y+1]=1;
a[x][y]=1;
}
}
int main()
{
freopen("cake.in","r",stdin);
freopen("cake.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
char c;
cin>>