A:直接判断前三项是否相等

 int main()
{
//FIN;
//CHEAT;
int n;
cin>>n;
getchar();
char a[];
gets(a);
int len = strlen(a);
int cnt = ;
for(int i = ; i < len ; i++)
{
if(i % n == && i != )
{
if(a[i-] == a[i-] && a[i-] == a[i-])
cnt++;
}
}
cout<<cnt<<endl;
return ;
}

B:

求一遍前缀和O(n).... 用前缀和求一遍所有长度为k的区间和O(n)....

再从后往前找一遍这些区间的最大值O(n)...并记下从该点到最后的区间最大值...

然后就从前向后遍历一遍,每次找从i开始的区间和从点i+k之后的最大区间 ,求一次MAX即可 O(n)

总共还是O(n)...用线段树什么的就别逗了

 LL a[];
LL sum[];
LL sum1[];
LL max2[];
LL maxe[];
int main()
{
//FIN;
//CHEAT;
int n,k;
cin>>n>>k;
for(int i = ; i <= n ; i++)
{
cin>>a[i];
sum[i] = sum[i-] + a[i];
}
int cnt = ;
for(int i = ; i <= n-k+ ; i++)
{
sum1[cnt++] = sum[i+k-] - sum[i-];
}
int back = cnt-;
LL M = -INF;
for(int i = cnt- ; i >= ; i--)
{
if(sum1[i] >= M)
{
max2[i] = sum1[i];
maxe[i] = i;
M = sum1[i];
}else
{
max2[i] = M;
maxe[i] = maxe[i+];
}
}
M = -INF;
int s1=,s2=;
for(int i = ; i <= n ; i++)
{
if(max2[i+k] + sum1[i] > M)
{
M = max2[i+k] + sum1[i];
s1 = i;
s2 = maxe[i+k];
}
}
cout<<s1<<" "<<s2<<endl;
return ;
}

C:

先贪心找 b最小a最大的 这是有可能取的任务

再贪心找 a最大b最大的 这是一定取的k个任务,并求出最小值

再贪心从剩下的点中 找出b小于最小值的点 ,再贪心找取p-k个b最大a最小的点...

排三遍序就行了...挺麻烦而且我感觉数据弱了...

 struct point
{
int id ;
int s,v;
}x[MAXN],q[MAXN];
int cmp(point a,point b)
{
if(a.v != b.v)
return a.v < b.v;
else return a.s > b.s;
}
int cmp1(point a,point b)
{
if(a.s != b.s)
return a.s > b.s;
else return a.v > b.v;
}
int cmp2(point a,point b)
{
if(a.v != b.v)
return a.v > b.v;
else return a.s < b.s;
}
int main()
{
//FIN;
//CHEAT;
int n,p,k;
cin>>n>>p>>k;
for(int i = ; i < n ; i++)
{
cin>>x[i].s>>x[i].v;
x[i].id = i;
}
sort(x,x+n,cmp);
sort(x+(p-k),x+n,cmp1);
// for(int i = 0 ; i < n ; i++)
// cout<<x[i].s<<" "<<x[i].v<<" "<<x[i].id+1<<endl;
// cout<<endl;
int M = INF;
for(int i = p-k ;i < p ; i++)
M = min(M,x[i].v);
int cnt = ;
for(int i = ; i < p - k ; i++)
q[cnt++] = x[i];
for(int i = p- ; i < n ; i++)
if(x[i].v < M )
q[cnt++] = x[i];
sort(q,q+cnt,cmp2); for(int i = p-k ; i < p ; i++)
cout<<x[i].id+<<" ";
for(int i = ; i < p - k ; i++)
cout<<q[i].id+<<" ";
cout<<endl;
return ;
}

都是赛后做的...赛中做的话又要掉rating真是难过...今天多校也爆0...真是弱的不能多说...

最新文章

  1. Win10
  2. 算法入门笔记------------Day3
  3. 开源的即时通讯框架 (endv.cn) (一)
  4. 20.C#LINQ基础和简单使用(十一章11.1-11.2)
  5. poj3259 bellman——ford Wormholes解绝负权问题
  6. 16位的MD5加密和32位MD5加密的区别
  7. Beginning Android 4 Programming Book学习
  8. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.10
  9. 新手入门 acm 输入输出练习
  10. Python3基础 set() 集合 创建集合与特点:自动将重复合并掉 不支持索引
  11. angularjs---服务(service / factory / provider)
  12. Cookie中的HttpOnly详解
  13. 图片懒加载Demo
  14. ZOJ 2002 Copying Books 二分 贪心
  15. C++ 最简单的日志类
  16. Xpath语法详解
  17. json文件解析
  18. CS229 6.5 Neurons Networks Implements of Sparse Autoencoder
  19. JavaScript:Date 对象
  20. 计算GDOP

热门文章

  1. 基于express+redis高速实现实时在线用户数统计
  2. java-proxool 异常
  3. IDEA中如何设置自动导包
  4. 影响FPGA设计中时钟因素的探讨。。。转
  5. 启动springboot
  6. Quart 学习
  7. Web 端 js 导出csv文件
  8. Jesse&#39;s Code
  9. Cisco交换机IOS配置介绍
  10. IDEA 官方教程