首页 > 其他分享 >雅礼集训三十天,day5

雅礼集训三十天,day5

时间:2023-09-22 12:12:10浏览次数:35  
标签:code 三十天 这题 int double 复杂度 day5 long 雅礼

总结

100 + 0 + 0 + 0 = 100分
考的很垃圾(第二题调试删了但没完全删
这一场感觉是纯数学呀

T1

枚举
时间复杂度:\(O(1)\)
空间复杂度:\(O(1)\)
code:

#include<bits/stdc++.h>

using namespace std;

const int N = 15;

long double a[N];

int main(){
  a[0] = 1.0;
  for(int i = 1; i <= 9; i++){
    cin >> a[i];
  }
  a[10] = 10000.0;
  long double maxi = -1e9;
  int p;
  for(int i = 1; i <= 10; i++){
    if(maxi < a[i] * 1.0 / a[i - 1] * 1.0){
      maxi = a[i] * 1.0 / a[i - 1] * 1.0;
      p = i;
    }
  }
  cout << p;
  return 0;
}

T2

我们可已考虑将h作为分界线,分成上下两半(这样情况会少一点)
接下来可以把这题分成四类情况,分别是
1.完全覆盖
image

这只用输出长方形的面积即可
2.\(r <= min(x, y)\)
image
只用输出四分之一圆公式
3.\(r < y\)
image
这样我们可以把它给分割成一个圆环和一个三角形,至于角度,就用三角函数(atan)来求
4.以上三种都不符合
这是最复杂的一种(我就是寄在这里了)
image
我们可以把它分割成一个扇形和两个三角形,角度可以用九十度减去两个角,也可以用大角减小角(我用的是这种),角度还是用(atan)来求

接下来就是代码实现:

这题我为了把3,4融在一起,就将矩阵横着和竖着各考虑一遍,这样代码会简单很多
时间复杂度:\(O(1)\)
空间复杂度:\(O(1)\)
code:

#include <bits/stdc++.h>

using namespace std;

int h, R, W, H;

double sol(double x, double y, double r) {
  if (r <= x) {
    double th = atan(y / x);
    return th * r * r / 2;
  }
  double yy = sqrt(r * r - x * x);
  double th = atan(y / x) - atan(yy / x);
  return th * r * r / 2 + x * yy / 2;
}

double solve(double x, double y, double r) {
  if (r * r >= x * x + y * y) return x * y;
  return sol(x, y, r) + sol(y, x, r);
}

int main() {
  cin >> H >> W >> h >> R;
  cout << fixed << setprecision(4) << 1ll * H * W - (solve(h, W, R) + solve(H - h, W, R));
  return 0;
}

T3

这题我们只要推一推爆炸的规律即可AC(在线膜拜李XX大巨佬)
这题的爆炸规律是这样的:
image
根据规律,我们可以写出如下代码:
时间复杂度:\(O(n)\)
空间复杂度:\(O(1)\)
code:

#include<bits/stdc++.h>

#define int long long

using namespace std;

const int mod = 998244353;

int n, m, k, ans;

signed main() {
  cin >> n >> m >> k;
  int x = (n + 1) / 2, y = (m + 1) / 2;
  for (int i = 1; i <= x; ++i)
    if (k % i == 0 && k / i <= y) {
      int j = k / i, I = 2 * i - 1, J = 2 * j - 1;
      ans = (ans + 1ll * (n + 1 - I) * (m + 1 - J)) % mod;
      ans = (ans + 1ll * (n + 1 - I) * (m - J)) % mod;
      ans = (ans + 1ll * (n - I) * (m + 1 - J)) % mod;
      ans = (ans + 1ll * (n - I) * (m - J)) % mod;
    }
  cout << ans; 
  return 0;
}

T4

在写了

标签:code,三十天,这题,int,double,复杂度,day5,long,雅礼
From: https://www.cnblogs.com/libohan/p/17722015.html

相关文章

  • [代码随想录]Day51-单调栈part02
    题目:503.下一个更大元素II思路:总之就是走两次nums,可以拼接,也可以用下面的取余方式。代码:funcnextGreaterElements(nums[]int)[]int{lens:=len(nums)res:=make([]int,lens)fori:=0;i<lens;i++{res[i]=-1}stack:=make(......
  • [代码随想录]Day50-单调栈part01
    题目:思路:要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了维护一个栈顶->栈底由小到大的栈;这样在之后(右侧)遇到更大的数时,就可以得到所有在他前面并且比他小的数,就能获得结果。初始化默认为0;代码:funcdailyTemperatures(n......
  • 日常记录--day5--2023-9月19日--周一
    日程:今天是满课的一天,7点起床,整理了一下内务,吃了个早饭去上课,早上是工程实训课,课上我造了个小铁篮子,还挺有意思。中午小睡一个小时,下午上Java,Java课上的习题奇奇怪怪,其中的倒计时功能还挺棘手,Java中的倒计时与C++不同,还挺头疼,晚上7-9点继续力扣,学了会Javaweb。学了什么:Javaweb让......
  • 代码随想录算法训练营第三十天| 51. N皇后 37. 解数独 总结
        卡哥建议:今天这三道题都非常难,那么这么难的题,为啥一天做三道? 因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出代码,先大概熟悉一下这些题,二刷的时候,随着对回溯算法的深入理解,再去解决如下三题。 ......
  • 8.21 Day5
    上午讲了严谨的时间复杂度分析理论,不知道有什么用,但是让我更严谨了中午在睡觉下午讲了欧几里得全家桶(一般欧几里得,拓展欧几里得,类欧几里得),黄钰曾评价类欧几里得:800年不考但还是习得了如何用图像法解决一般的类欧几里得问题总结,今天讲的ppt上的内容不多,但是拓展了很多,没有局......
  • LOJ #6039「雅礼集训 2017 Day5」珠宝
    给定\(n\)个物品,第\(i\)个物品有体积\(c_i\),价值\(v_i\)。给定\(K\),对\(1\simK\)的所有\(i\)求大小为\(i\)的背包的最大价值。\(n\leq10^6\),\(K\leq5\times10^4\),\(c_i\leq300\),\(0\leqv_i\leq10^9\),时限\(\text{2.0s}\)。注意到\(c_i\)范......
  • vue--day58---多个元素过度
    1.App.vue<template> <div><Test></Test><Test2></Test2></div>  </template> <script> importTestfrom'./components/Test.vue';importTest2from'./components/Test2.vue';......
  • vue--day55--vue 的$nextTick以及MyItem编辑框
    1.语法this.$nextTick(回调函数)2.作用在下一次DOM更新结束后执行其指定的回调3.什么时间用当改变数据后,要基于更新后新的DOM进行某些操作时,要在nextTick所指定的回调函数中执行。1.App.vue<template><divid="root"><divclass="todo-container"><divclass="to......
  • 二维数组花式遍历(旋转,螺旋) [labuladong-刷题打卡 day5]
    矩阵旋转48.旋转图像难点主要在于:用翻转和镜像处理逆反和旋转,和逆转单词一样“难者不会,会者不难”,思路简单镜像的坐标对应关系处理语言特性的利用,不同语言有不同api,实际代码中会有很大不同,但思想一致如果确定矩阵维数,通过线性代数应该可以直接计算答案...classSolution......
  • vue--day54--todolist 中的MyItem 和App 消息发布实现通信
    1.App.vue<template><divid="root"><divclass="todo-container"><divclass="todo-wrap"><!--@addTodo事件名addTodo回调名--><MyHeader@addTodo="addTodo"/><!--父亲给儿子传数据父亲通过数据绑定......