首页 > 其他分享 >23.5.2 NOIP2011 Day1提高游记

23.5.2 NOIP2011 Day1提高游记

时间:2023-05-02 15:33:58浏览次数:46  
标签:ch NOIP2011 while long Day1 23.5 ans isdigit getchar

今天做的比较得愉快快呢,除了第三题hh


1.铺地毯

这题我不做太多评价,纯纯的一道大水题。

注意遍历数据的时候倒着遍历,还有就是不能用二维数组,会MLE。

code:

 1 #include<bits/stdc++.h>
 2 #define N 10005
 3 using namespace std;
 4 int a[N],b[N],g[N],k[N];
 5 inline long long read(){
 6     long long ans=0,f=1;
 7     char ch=getchar();
 8     if(ch=='-'){
 9         f=-1;
10     }
11     while(!isdigit(ch)){
12         ch=getchar();
13     }
14     while(isdigit(ch)){
15         ans=((ans<<1)+(ans<<3)+(ch^48));
16         ch=getchar();
17     }
18     return ans*f;
19 }
20 int main(){
21     int n=read();
22     for(int i=1;i<=n;i++){
23         a[i]=read(),b[i]=read(),g[i]=read(),k[i]=read();
24     }
25     int x=read(),y=read(),ans=0;
26     for(int i=n;i>=1;i--){
27         if(a[i]<=x&&a[i]+g[i]>=x&&b[i]<=y&&b[i]+k[i]>=y){
28             ans=i;
29             break;
30         }
31     }
32     if(ans){
33         cout<<ans;
34     }
35     else{
36         cout<<-1;
37     } 
38     return 0;
39 }

2.选择客栈这一题拿到手先想到的是暴力的算法,首先去枚举每一个方块,在[a,b]的区间内是否有<=p,同时判断a==b?,所以用暴力的时间复杂度则为O(n^2);

但是我们可以记录下颜色后再进行遍历,只要在任意同种颜色的区间内扫到了,那么其他的格子自动叠加答案,这样就可以做到O(k*n)

code:

 1 #include<bits/stdc++.h>
 2 #define N 200009
 3 #define M 101
 4 using namespace std;
 5 inline long long read(){
 6     long long ans=0,f=1;
 7     char ch=getchar();
 8     if(ch=='-'){
 9         f=-1;
10     }
11     while(!isdigit(ch)){
12         ch=getchar();
13     }
14     while(isdigit(ch)){
15         ans=((ans<<1)+(ans<<3)+(ch^48));
16         ch=getchar();
17     }
18     return ans*f;
19 }
20 int main(){
21     int n=read(),k=read(),p=read(),color[N],num[M],t,ans=0,price;
22     for(int i=1;i<=n;i++){
23         color[i]=read(),price=read();
24         if(price<=p){
25             for(int j=i;j>t;j--){
26                 num[color[j]]++;
27             }
28             t=i,ans+=num[color[i]]-1;
29         }
30         else{
31             ans+=num[color[i]];
32         }
33     }
34     cout<<ans;
35     return 0;
36 }

 

标签:ch,NOIP2011,while,long,Day1,23.5,ans,isdigit,getchar
From: https://www.cnblogs.com/dabianche2008/p/17367755.html

相关文章

  • 2023.5.1 总结
    CF选做。CF1820E/CF1819C首先,若树是一个链,那么就直接这样:考虑在链上挂一些支链。若支链长度仅为1,那么很可做。如果支链长度大于1,无解。手玩一下即可。......
  • 蓝桥杯题单day1
    蓝桥杯题单day1(按顺序)bfs+dfshttps://www.luogu.com.cn/problem/P1162https://www.luogu.com.cn/problem/P1378https://www.luogu.com.cn/problem/P8644https://www.lanqiao.cn/problems/280/learning/二分https://www.luogu.com.cn/problem/P8647https://www.luogu.co......
  • P4870 [BalticOI 2009 Day1]甲虫
    题意:有一只甲虫处于一根水平的树枝。因为他沉迷数学无法自拔,所以他觉得很像是在\(x\)轴上。在同一根树枝上,还有\(n\)滴露水。每滴露水占用\(m\)个单位的水分。相对于甲虫的位置,他们的坐标分别是\(x_1,x_2,\dots,x_n\)。显然,这一天将会骄阳似火。每过一个时间单位,就会有......
  • qbxt day1
    数学知识现有奇数个人,两两间可能认识或不认识,请证明永远存在一个认识偶数个人的人。将其转化成更强的问题:给定一张奇数个点的图\(G\),证明度数为偶数的点的个数为奇数。继续考虑它的相反的问题:给定一张奇数个点的图\(G\),证明度数为奇数的结点的个数为偶数考虑所有点......
  • JOISC 2014 Day1
    T1巴士走读考虑在每个节点\(u\)维护\(f_u(x)\)表示在时刻\(x\)到达节点\(u\)时的最晚出发时间,显然这个函数单调递增。考虑进行转移,将所有巴士按照\(Y\)进行排序,依次枚举每辆巴士,设巴士出发节点为\(A\),终止节点为\(B\),发车时间为\(X\),到达时间为\(Y\),由于我们......
  • 完整实现React day10
    update流程与mount流程的区别。对于beginWork:需要处理ChildDeletion的情况需要处理节点移动的情况(abc->bca)对于completeWork:需要处理HostText内容更新的情况需要处理HostComponent属性变化的情况对于commitWork:对于ChildDeletion,需要遍历被删除的子树对于Update,需......
  • Day14
      3.代码示例#include<iostream>usingnamespacestd;intmain(){inta,b,num=0;cout<<""<<"白球"<<""<<"红球"<<""<<"黑球"<<endl;......
  • 大华面试java 2023.5
    一张表随着业务递增,如何对一个字段进行快速查询。比如对身高字段查询,要求查询是10的倍数的。考虑分库分表,或者提前计算设置标志位加索引OOM的场景有哪些,分别是什么情况下会出现这样的问题项目中的复杂设计开发流程springcloud动态更新class的原理,类加载机制,java中类加载......
  • Day13
      3.代码示例#include<iostream>usingnamespacestd;intjudge(int*c){inti,s=0;for(i=2;i<11;i++){if(c[1]!=c[i])s=1;}returns;}intmain(){intsweet[12]={20,10,2,8,22,16,4,10,6,14,20,0};inti,j=1;......
  • Day11
     2.代码示例#include<iostream>usingnamespacestd;intmain(){intn;doubles=0;cout<<"请输入您的个人收入:";cin>>n;cout<<"应缴纳税额为:";if(n<3500){s=0;}elseif(n<5000){......