A、试题类型:
数据模型。
B、算法模型:
数组。
C、试题说明:
数据范围案例。
#include<iostream>
using namespace std;
int main()
{
int n,a[10001],b[10001],x[10001],y[10001],xi,yi;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>x[i]>>y[i];
}
cin>>xi>>yi;
for(int i=n;i>0;i--)
{
if(a[i]<=xi&&a[i]+x[i]>=xi&&b[i]<=yi&&b[i]+y[i]>=yi)
{
cout<<i;return 0;
}
}
cout<<-1;
return 0;
}
A、试题类型:
基本算法。
B、算法模型:
stl算法。
C、试题说明:
时间复杂度选择。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<cctype>
#include<iomanip>
#include<queue>
#include<set>
using namespace std;
int getint()
{
int f=1,sum=0;
char ch;
for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar());
if(ch=='-')
{
f=-1;
ch=getchar();
}
for(;ch>='0'&&ch<='9';ch=getchar())
sum=(sum<<3)+(sum<<1)+ch-48;
return sum*f;
}
const int maxn=2e5+10;
int n,p,k,x,y,sum[maxn],color[maxn],ans;
int main()
{
freopen("lx.in","r",stdin);
freopen("lx.out","w",stdout);
n=getint();k=getint();p=getint();
for(int i=1;i<=n;++i)
{
x=getint();y=getint();
color[x]++;
if(y<=p)
{
for(int j=0;j<=k-1;++j)
{
sum[j]+=color[j];
color[j]=0;
}
ans-=1;
}
ans+=sum[x];
}
cout<<ans<<endl;
return 0;
}
A、试题类型:
基本算法。
B、算法模型:
搜索 + 剪枝。
C、试题说明:
无。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int map[99][99],ans[99][10],lazy[99][99];
int yuan[11][11][11];
int n,flag1;
void copy(int x)
{
for(int i=1;i<=5;i++)
for(int j=1;j<=7;j++)
yuan[x][i][j]=map[i][j];
}
void change()
{
for(int i=1;i<=5;i++)
{
int sum=0;
for(int j=1;j<=7;j++)
if(map[i][j]==0)
sum++;
else
{
if(!sum)
continue;
map[i][j-sum]=map[i][j];
map[i][j]=0;
}
}
}
int Move()
{
int flag=0;
for(int i=1;i<=5;i++)
for(int j=1;j<=7;j++)
{
if(i-1>=1&&i+1<=5&&map[i][j]==map[i+1][j]&&map[i][j]==map[i-1][j]&&map[i][j]!=0)
lazy[i][j]=lazy[i-1][j]=lazy[i+1][j]=1,flag=1;
if(j-1>=1&&j+1<=7&&map[i][j]==map[i][j+1]&&map[i][j]==map[i][j-1]&&map[i][j]!=0)
lazy[i][j]=lazy[i][j-1]=lazy[i][j+1]=1,flag=1;
}
if(flag==0)
return 0;
for(int i=1;i<=5;i++)
for(int j=1;j<=7;j++)
if(lazy[i][j]!=0)
{
map[i][j]=0;
lazy[i][j]=0;
}
return 1;
}
void move(int i,int j,int x)
{
int a=map[i][j];
map[i][j]=map[i+x][j];
map[i+x][j]=a;
change();
while(Move()==1)change();
}
bool check()
{
for(int i=1;i<=5;i++)
if(map[i][1])
return 0;
return 1;
}
void dfs(int x)
{
if(check()==1)
{
for(int i=1;i<=n;i++)
cout<<ans[i][1]<<" "<<ans[i][2]<<" "<<ans[i][3]<<endl;
flag1=1;exit(0);
}
if(x==n+1)return;
copy(x);
for(int i=1;i<=5;i++)
for(int j=1;j<=7;j++)
{
if(map[i][j]){
if(i+1<=5&&map[i][j]!=map[i+1][j])
{
move(i,j,1);
ans[x][1]=i-1;ans[x][2]=j-1;ans[x][3]=1;
dfs(x+1);
for(int i=1;i<=5;i++)
for(int j=1;j<=7;j++)
map[i][j]=yuan[x][i][j];
ans[x][1]=-1;ans[x][2]=-1;ans[x][3]=-1;
}
if(i-1>=1&&map[i-1][j]==0)
{
move(i,j,-1);
ans[x][1]=i-1;ans[x][2]=j-1;ans[x][3]=-1;
dfs(x+1);
for(int i=1;i<=5;i++)
for(int j=1;j<=7;j++)
map[i][j]=yuan[x][i][j];
ans[x][1]=-1;ans[x][2]=-1;ans[x][3]=-1;
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=5;i++)
for(int j=1;j<=8;j++)
{
int x;cin>>x;
if(x==0)
break;
map[i][j]=x;
}
memset(ans,-1,sizeof(ans));
dfs(1);
if(flag1!=1)
cout<<-1;
return 0;
}
A、试题类型:
数学问题与典型算法。
B、算法模型:
组合数+二项式定理。
C、试题说明:
无。
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int mod=10007;
ll a,b,k,n,m;
ll ksm(ll q,ll w)
{
ll h=1;
while(w)
{
if(w&1)
h=h*q%mod;
q=q*q%mod;
w>>=1;
}
return h;
}
ll jc[10000];
void calc()
{
jc[1]=1;
for(int i=2;i<=1100;++i)
jc[i]=(jc[i-1]%mod*i)%mod;
}
ll inv(ll a)
{
return ksm(a,mod-2);
}
ll c(ll m,ll k)
{
ll x=jc[k]*inv(jc[m])%mod;
ll xx=inv(jc[k-m])%mod;
return (x*xx)%mod;
}
int main()
{
cin>>a>>b>>k>>n>>m;
calc();
ll ans=1;
ans=(ans*c(m,k))%mod;
ans=(ans*ksm(a,n))%mod;
ans=(ans*ksm(b,m))%mod;
cout<<ans%mod;
return 0;
}
A、试题类型:
基本算法。
B、算法模型:
二分法。
C、试题说明:
循环用二分法求p-y最小时W(也就是重量标准)。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long n,m;
long long s;
long long av[200010],an[200010];
struct st//存石头数据
{
long long w,v;
}stone[200010];
struct ra//存范围数据
{
long long l,r;
}range[200010];
int main()
{
cin>>n>>m>>s;
long long right=-1;
for(long long i=1;i<=n;i++)
{
cin>>stone[i].w>>stone[i].v;
right=stone[i].w>right?stone[i].w:right;//求出石头最大重量作为 第一次二分的上限
}
for(long long i=1;i<=m;i++)
cin>>range[i].l>>range[i].r;
long long left=0;
long long minn=-1,p;
while(left<=right)//开始循环
{
long long mid=(left+right)/2;//二分可行域
av[0]=0,an[0]=0;
for(long long i=1;i<=n;i++)
{
if(stone[i].w>=mid)
{
av[i]=av[i-1]+stone[i].v;//前缀和数组
an[i]=an[i-1]+1;
}
else
{
av[i]=av[i-1];an[i]=an[i-1];
}
}
long long p=0;
for(long long i=1;i<=m;i++)
{
p+=(av[range[i].r]-av[range[i].l-1])*(an[range[i].r]-an[range[i].l-1]);
}
if(minn==-1 || minn>abs(p-s))
minn=abs(p-s);
if(p<s)
right=mid-1;//准备下一次二分的上限或下限
else left=mid+1;
}
cout<<minn;
return 0;
}
A、试题类型:
基本推导。
B、算法模型:
贪心应用。
C、试题说明:
数据范围认真观察,它能一步一步引向正解。
#include <bits/stdc++.h>
using namespace std;
const int Max=1005;
int n,m,k,ans,x;
int fa[Max*10],s[Max*10],t[Max*10],d[Max],f[Max],sum[Max],T[Max],last[Max];
//s起点t终点fa到达时间
//d原时间i~i+1时间
//f出发能影响到最远的点
//sum前i个位置下车总人数
//last在i上车的最大时间
//T到i的最短时间
inline void solve()
{
for(int i=2;i<=n;i++)
T[i]=max(T[i-1],last[i-1])+d[i-1];
for(int i=2;i<=n;i++)
sum[i]+=sum[i-1];
for(int i=1;i<=m;i++)
ans+=T[t[i]]-fa[i];
while(k--)
{
f[n]=f[n-1]=n;
for(int i=n-2;i>=1;i--)
{
if(T[i+1]>last[i+1])
f[i]=f[i+1];
else
f[i]=i+1;
}
int maxx=0,pos=0;
for(int i=1;i<=n;i++)
if(maxx<sum[f[i]]-sum[i]&&d[i])
maxx=sum[f[i]]-sum[i],pos=i;
if(!pos)
break;
ans-=maxx,d[pos]--;
for(int i=pos;i<=n;i++)
T[i]=max(T[i-1],last[i-1])+d[i-1];
}
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<n;i++)
scanf("%d",&d[i]);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&fa[i],&s[i],&t[i]);
last[s[i]]=max(last[s[i]],fa[i]),sum[t[i]]++;
}
solve();
cout<<ans;
return 0;
}
IT航班提供:教辅资料、课程视频、课程书籍、竞赛辅导、少儿编程指导、课程采购、加盟、少儿编程资料、少儿编程课程、保送生、特长生、加分、中小学计算机教育、中小学信息学、竞赛、中小学信息学课程、人工智能、中小学编程加盟、少儿编程加盟、品牌加盟、技术加盟、技术指导、课程加盟、师资培训、中小学编程教辅资料、中小学编程教师培训、少儿编程教学书籍、少儿编程视频、教学书籍、教师培训、教学视频、CSP-J/S、中小学信息学课程服务、竞赛指导、课程提供、国内外计算机中小学计算机竞赛、信息学竞赛、信息学课程提供商、信息学奥林匹克。
IT航班支持----中小学编程比赛汇总:
第一部分:国内比赛(IT航班支持)
1、软件能力认证(CSP-JS)
2、全国青少年信息学奥林匹克联赛(NOIP)
3、全国青少年信息学奥林匹克竞赛(NOI)
4、中国青少年………………………
5、………………………创新挑战赛
6、全国青少年………………………
7、………………………
8、 恩欧希教育信息化发明创新奖
9、世界机器人大赛(WRC)
10、………………………大赛
11、少………………………智能教育成果展示大赛
12、“明天小小科学家”奖励活动
13、………………………
14、………………………
15、国际信息学………………………
16、………………………
第二部分:国际比赛(IT航班支持)
17、………………………
18、国际………………………
19、………………………
20、美国信息学………………………
21、加拿大………………………
22、官方邀请赛 (CCO)
23、国际计算思维………………………
24、美国计算机………………………
25、澳大利亚………………………
第三部分:企业比赛(IT航班支持)
26、微软MTA
27、………………………挑战赛
28、………………………科学奖
29、………………………学奖
30、………………………创新挑战赛
31、………………………挑战赛
32、………………………芯计算机表演赛
33、………………………大赛
第四部分:Scratch相关竞赛(IT航班支持)
34、全国中小学生电脑制作大赛
35、………………………
36、………………………
37、………………………
第五部分:其它(IT航班支持)
38、NOI夏令营
39、NOI冬令营(NOIWC)
40、全国青少年………………………
41、国际青少年………………………
联系方式:
A、官方网址:
B、微信公众号:
添加微信,获取资料。
关注公众号,获取动态。