第四周训练总结(二)

周六的北京赛区的比赛,是这几场比赛中出题最少的一场。

首先第一题,题意说的很复杂,出去旅游N天,其中去北京玩M天,去的第一天和另外一天要去北大参观,其中有几使天北京交通受限,游玩受阻,但是可以延长在北京的时间。要找出北大游客数最少的两天。只要把题意理解透彻,代码就比较容易了,可以直接暴力枚举。

  1. #include<iostream>  
  2. #include<stdio.h>  
  3. #include<math.h>   
  4. #include<stdio.h>  
  5. #define ll long long  
  6. #define INF 10086111  
  7. #define M (t[k].l+t[k].r)/2  
  8. #define lson k*2  
  9. #define rson k*2+1  
  10. using namespace std;  
  11. int a[1005];  
  12. int vis[1005];  
  13. int main()  
  14. {  
  15.     int i,j,k,n,m,x,d,maxx,minn,ans,d1,d2,t,s;  
  16.     while(scanf("%d%d",&n,&m)!=EOF)  
  17.     {  
  18.         for(i=0;i<n;i++)  
  19.         {  
  20.             vis[i]=0;  
  21.             scanf("%d",&a[i]);  
  22.         }  
  23.         scanf("%d",&x);  
  24.         for(i=0;i<x;i++)  
  25.         {  
  26.             scanf("%d",&d);  
  27.             vis[d]=1;  
  28.         }  
  29.         minn=INF;  
  30.         for(i=0;i<n-m+1;i++)  
  31.         {  
  32.             if(vis[i])  
  33.                 continue;  
  34.             if(a[i]>=minn)  
  35.                 continue;  
  36.             ans=1;  
  37.             t=INF;  
  38.             for(j=i+1;j<n;j++)  
  39.             {  
  40.                 if(vis[j])  
  41.                     continue;  
  42.                 if(t>a[j])  
  43.                 {  
  44.                     t=a[j];  
  45.                     s=j;  
  46.                 }  
  47.                 ans++;  
  48.                 if(ans==m)  
  49.                 {  
  50.                     if(minn>a[i]+t)  
  51.                     {  
  52.                         minn=a[i]+t;  
  53.                         d1=i;  
  54.                         d2=s;  
  55.                     }  
  56.                     break;  
  57.                 }  
  58.             }  
  59.         }  
  60.         printf("%d %d\n",d1,d2);  
  61.     }  
  62.     return 0;  
  63. }  
还有感觉比较有意思的就是G题,找规律。刚开始没有意识到是找规律,以为是用搜索做,后来找不到思路,又想了很久,才意识到找规律。但是推了一个多小时也没找出来,后来找了题解才发现,一开始的方向就错了。

今天下午南宁的比赛只看了B题,就去准备二级了。B题可以直接开一个数组,每次在s,k段上加上K,最后再扫一遍数组求最大值。

这周训练状态不好,光想着准备二级,虽然最后也考得很不好。还是自己对ACM不够上心,自己也反省,通过这几次网络赛,和别的队伍的差距真的很大,这样下去确实很危险。二级现在也结束了,下周要收心好好补线段树,快点出题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值