zoukankan      html  css  js  c++  java
  • 【比赛】 AtCoder Beginner Contest 174

    题意/题解

    A Air Conditioner

    • 题意:判断输入的整数是否不小于 30
    • 题解:语言基础

    B Distance

    • 题意:一边输入一边算距离然后判断
    • 题解:语言基础

    C Repsept

    • 题意:给你一个 (k) 从他的倍数中找到一个只含 (7) 的输出这个倍数的长度。
    • 题解:感觉需要动脑子,没做出来。

    D Alter Altar

    • 题意:(n) 个石子排成一行,石子分两种,一种为R一种为W,可以进行两种操作:交换任意两个石子、改变一个的类型。问最少几次操作后不存在R石子紧邻的左边为W的情况
    • 题解:感觉需要动脑子,没做出来。

    E Logs

    • 题意:有 (n) 个木头,每个木头有一个自己的长度,你可以切 (k) 次,使得切出来的木头中最长的最短,问最短为多长(小数就四舍五入)。
    • 题解:感觉需要动脑子,没做出来。

    F Range Set Query

    • 题意:一个长为 (n) 的序列,每次询问一个区间 ([L,R]) 中有不同的数有几种
    • 题解:莫队板子。

    代码

    A Air Conditioner

    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <iostream>
    #include <algorithm>
    
    int a;
    
    int main() {
    	std::cin >> a;
    	if (a >= 30) puts("Yes");
    	else puts("No");
    	return 0;
    }
    

    B Distance

    #include <cmath>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <iostream>
    #include <algorithm>
    
    int n, d;
    
    int main() {
    	scanf("%d %d", &n, &d); int ans = 0;
    	for (int i = 1, x, y; i <= n; ++i) {
    		scanf("%d %d", &x, &y);
    		double dis = sqrt(1ll * x * x + 1ll * y * y);
    		if (dis <= d) ++ans;
    	}
    	printf("%d
    ", ans);
    	return 0;
    }
    

    F Range Set Query

    #include <cmath>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <iostream>
    #include <algorithm>
    #define MAXN 500001
    
    int n, m, a[MAXN], ans[MAXN];
    int sqrn, num[MAXN], ba[MAXN];
    struct query {
    	int x, y, id;
    	friend bool operator < (query q1, query q2) {
    		if (num[q1.x] == num[q2.x]) return num[q1.y] < num[q2.y];
    		return num[q1.x] < num[q2.x];
    	}
    }q[MAXN];
    
    int main() {
    	scanf("%d %d", &n, &m), sqrn = sqrt(n);
    	for (int i = 1; i <= n; ++i) {
    		scanf("%d", &a[i]);
    		num[i] = (i - 1) / sqrn + 1;
    	}
    	for (int i = 1; i <= m; ++i) {
    		scanf("%d %d", &q[i].x, &q[i].y);
    		q[i].id = i;
    	}
    	std::sort(q + 1, q + m +1);
    	int l = 1, r = 1, now = 1;
    	ba[a[l]] = 1;
    	for (int i = 1; i <= m; ++i) {
    		while(l > q[i].x) {
    			++ba[a[--l]];
    			if (ba[a[l]] == 1) ++now;
    		}
    		while(r < q[i].y) {
    			++ba[a[++r]];
    			if (ba[a[r]] == 1) ++now;
    		}
    		while(l < q[i].x) {
    			if (ba[a[l]] == 1) --now;
    			--ba[a[l++]];
    		}
    		while(r > q[i].y) {
    			if (ba[a[r]] == 1) --now;
    			--ba[a[r--]];
    		}
    		ans[q[i].id] = now;
    	}
    	for (int i = 1; i <= m; ++i) printf("%d
    ", ans[i]);
    	return 0;
    }
    

    rating

    反思:

    • 太菜了。
    • 做不出 C、D 是没想到的。
    • 做出了 F 更没想到。
    • 由没做出 C、D 但是做出了 F 可得需要多锻炼下思维。。。
  • 相关阅读:
    有序矩阵中的第 k 个最小数组和
    查找和最小的K对数字
    前 K 个高频元素
    621. 任务调度器
    407. 接雨水 II
    c语言表达式求值 中缀表达式转后缀表达式 求值
    42. 接雨水
    MySQL高级特性——绑定变量
    MySQL高级特性之分区表
    MySQL优化特定类型的查询
  • 原文地址:https://www.cnblogs.com/poi-bolg-poi/p/13423425.html
Copyright © 2011-2022 走看看