标签:n+1 表示 题意 stream 活动 tor 介绍 位置 std
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
const int maxm=1100;
int n,cnt;
struct node
{
int l,r;
bool operator < (const node&s) const
{
return r<s.r;
}
}a[maxm];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
}
sort(a+1,a+n+1);
int tail=0;
for(int i=1;i<=n;i++)
{
if(a[i].l>=tail)
{
tail=a[i].r;
cnt++;
}
}
printf("%d\n",cnt);
return 0;
}
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
int n,m;
struct node
{
int l,r,t;
bool operator < (const node &s) const
{
return r<s.r;
}
}a[5100];
bool flag[30007];
int cnt;
int main()
{
scanf("%d",&n);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].t);
}
sort(a+1,a+m+1);
for(int i=1;i<=m;i++)
{
int k=0;
for(int j=a[i].l;j<=a[i].r;j++)
{
if(flag[j])
{
k++;
}
}
if(k>=a[i].t) continue;
for(int j=a[i].r;j>=a[i].l;j--)
{
if(!flag[j])
{
cnt++;
k++;
flag[j]=1;
}
if(k==a[i].t)
break;
}
}
printf("%d\n",cnt);
return 0;
}
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstdio>
#include<queue>
using namespace std;
const int maxm=15007;
int t,n;
double l,w,head,tail;
struct node
{
double l,r;
}a[maxm];
int tot;
bool cmp(node a,node b)
{
return a.l<b.l;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%lf%lf",&n,&l,&w);
tot=0;
for(int i=1;i<=n;i++)
{
double x,y;
scanf("%lf%lf",&x,&y);
if(y<=w*0.5) continue;
double len=sqrt(y*y-(w*0.5)*(w*0.5));
a[++tot].l=x-len;
if(a[tot].l<(double)0) a[tot].l=0;
a[tot].r=x+len;
}
sort(a+1,a+tot+1,cmp);
if(a[1].l>(double)0)
{
printf("-1\n");
continue;
}
head=1;
tail=(double)0;
bool flag=1;
int cnt=1,ans=0;
for(int i=2;i<=tot;i++)
{
if(a[i].l>tail)
{
for(int j=head;j<=head+cnt-1;j++)
{
tail=max(a[j].r,tail);
}
if(tail<a[i].l)
{
flag=0;
printf("-1\n");
break;
}
head=i;
ans++;
if(tail>=l)
{
flag=0;
printf("%d\n",ans);
break;
}
cnt=1;
}
else if(a[i].l<=tail)
{
cnt++;
}
}
for(int j=head;j<=head+cnt-1;j++)
{
tail=max(a[j].r,tail);
}
ans++;
if(!flag) continue;
if(tail<l){
printf("-1\n");
continue;
}
printf("%d\n",ans);
}
return 0;
}
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
const int maxm=1100;
int n;
struct node
{
int t1,t2;
int id,m;
}a[maxm];
bool cmp(node a,node b)
{
return a.m<b.m;
}
int q[maxm],l,r;
int A[maxm],B[maxm];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i].t1),A[i]=a[i].t1;
for(int i=1;i<=n;i++)
scanf("%d",&a[i].t2),B[i]=a[i].t2;
for(int i=1;i<=n;i++)
{
a[i].id=i;
a[i].m=min(a[i].t1,a[i].t2);
}
sort(a+1,a+n+1,cmp);
l=0;
r=n+1;
for(int i=1;i<=n;i++)
{
if(a[i].m==a[i].t1)
{
q[++l]=a[i].id;
}
else
{
q[--r]=a[i].id;
}
}
int ans1=0,ans2=0;
for(int i=1;i<=n;i++)
{
ans1+=A[q[i]];
if(ans2<ans1) ans2=ans1;
ans2+=B[q[i]];
}
printf("%d\n",ans2);
for(int i=1;i<=n;i++)
{
if(i!=n)
printf("%d ",q[i]);
else
printf("%d",q[i]);
}
return 0;
}
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
const int maxm=510;
int m,n;
struct node
{
int w,t;
bool operator <(const node &s) const
{
return w>s.w;
}
}a[maxm];
bool flag[maxm];
int main()
{
scanf("%d",&m);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i].t);
for(int i=1;i<=n;i++)
scanf("%d",&a[i].w);
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
bool mon=1;
for(int j=a[i].t;j>=1;j--)
{
if(flag[j]) continue;
flag[j]=1;
mon=0;
break;
}
if(mon)
{
for(int j=n;j>=1;j--)
{
if(flag[j]) continue;
flag[j]=1;
m-=a[i].w;
break;
}
}
}
printf("%d\n",m);
return 0;
}
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
const int maxm=1e6+7;
int n;
ll sum[maxm],a[maxm],ave;
ll ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",a+i),ave+=a[i];
ave/=n;
for(int i=1;i<=n;i++)
{
a[i]-=ave;
sum[i]=sum[i-1]+a[i];
}
sort(sum+1,sum+n+1);
int id=(n+1)/2;
for(int i=1;i<=n;i++)
{
ans+=abs(sum[i]-sum[id]);
}
printf("%lld\n",ans);
return 0;
}
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cmath>
#include <queue>
using namespace std;
const int maxm=110;
int n,h,ans;
struct node
{
int start,cos;
int t;
}a[maxm];
int b[maxm];
int t[maxm];//记录路程
int t1,sum;
int find(int x)
{
int id,maxx=-1;
for(int i=1;i<=x;i++)
{
if(maxx<b[i])
maxx=b[i],id=i;
}
return id;
}
int main()
{
scanf("%d",&n);
scanf("%d",&h);
h*=60;
for(int i=1;i<=n;i++)
scanf("%d",&a[i].start);
for(int i=1;i<=n;i++)
scanf("%d",&a[i].cos);
for(int i=1;i<=n-1;i++)
scanf("%d",&a[i].t);
for(int i=1;i<=n;i++)
t[i]=t[i-1]+a[i-1].t*5;
for(int i=1;i<=n;i++)//枚举以i为终点
{
t1=t[i];
sum=0;
for(int j=1;j<=n;j++)
b[j]=a[j].start;
for(int j=i;;)
{
int bj=find(j);
if(b[bj]<=0) break;
sum+=b[bj];
b[bj]-=a[bj].cos;
t1+=5;
if(t1+5>h) break;
}
ans=max(ans,sum);
}
printf("%d\n",ans);
return 0;
}
标签:n+1 表示 题意 stream 活动 tor 介绍 位置 std
原文地址:https://www.cnblogs.com/lihan123/p/11663479.html