• 19-10-30-C


    交文件吼啊。

    ZJ一下:

    T1是真·高中数学。

    T2不是很清楚,只得了30。

    T3打了一个欧拉序。

    做的海星的地方:

    • Vim太好用辣,直接按平常打叫上去它就是 freopen 
    • T1仔仔细细的研究了高考数学
    • T1的python写的挺好。

    问题:

    • T2写了一个错解还没发现QAQ。
    • T1可以打表但是没试……

    TJ:

    显然没改完题就来写博客是没脸行为

    T1

    高考数学。

    数学老师告诉我们,遇到比较的问题可以:

    • 比差
    • 比商
    • 乱搞转换

    于是本题可以选下。

    做法0:Python

    T=int(input());
    for i in range(0,T):
    	[a,b]=map(int,input().split());
    	c=1;
    	for j in range(1,b+1):
    		c=c*j;
    	if(a**b <= c): print("Yes");
    	else: print("No");
    

    做法1:比差

    人口普查。

    做法2:比商

    得分$[60,100]$分不等。

    $60$,直接比.

    $90$,发现炸精了,于是先将后面的$[X,Y]$区间全搞上,然后再乘$[1,X)$的,这样在精度要求不高的点上可以得出正确答案。

    $100$,分组。

    做法3:转换

    数学老师告诉我们,遇到指数可以使用$log$。

    于是比较$log(X^Y)$和$log(Y!)$

    继续化:$Ylog(X)$和$sumlimits_{i=1}^{Y} log(i)$

    真好。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    
    int main(){
    #ifndef LOCAL
    	freopen("yuuutsu.in" ,"r",stdin);
    	freopen("yuuutsu.out","w",stdout);
    #endif
    	std::ios_base::sync_with_stdio(false);
    	int T,a,b;
    	std::cin>>T;
    	while(T--){
    		std::cin>>a>>b;
    		double la=b*log(a),lb=0;
    		for(int i=1;i<=b;i++){
    			lb+=log(i);
    		}
    		if(la<=lb)puts("Yes");
    		else      puts("No");
    	}
    }
    

    T2

    仔细想下……

    首先如果要区间修你会想到什么呢?

    线段树,树状数组……

    于是漏了。

    可以用$mathsf{ODT}$(滑稽

    还有什么?

    差分。

    手摸一些样例会发现一个神奇的性质,

    1图有点大,见谅。

    差分上修改区间正好差$k$,于是有什么?

    把差分数组每隔$k$的值加在一起是$0$

    如果不是呢?那就一定非法。

    于是使用$\%$法!

    真巧妙啊……(别问我为什么叫 magic_arr )(译:魔法数组)

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define N 2222222
    #define LL long long
    
    using namespace std;
    
    int pn,k,qn;
    LL pre[N],val[N];
    int not0n=0;
    LL magic_arr[N];
    
    int main(){
    #ifndef LOCAL
    	freopen("august.in" ,"r",stdin);
    	freopen("august.out","w",stdout);
    #endif
    	int a,b;
    	cin.sync_with_stdio(false);
    	cin>>pn>>k>>qn;
    	for(int i=1;i<=pn;i++){
    		cin>>val[i];
    		pre[i]=val[i]-val[i-1];
    		magic_arr[i%k]+=pre[i];
    	}
    	pre[pn+1]=val[pn+1]-val[pn];
    	magic_arr[(pn+1)%k]+=pre[pn+1];
    	for(int i=0;i<k;i++)
    		if(magic_arr[i]!=0)
    			not0n++;
    	if(not0n)puts("No");
    	else     puts("Yes");
    	for(int i=1;i<=qn;i++){
    		cin>>a>>b;
    		int nn=int(magic_arr[a%k]!=0)+int(magic_arr[(a+1)%k]!=0);
    		magic_arr[a%k]+=b;
    		magic_arr[(a+1)%k]-=b;
    		not0n+=int(magic_arr[a%k]!=0)+int(magic_arr[(a+1)%k]!=0)-nn;
    		if(not0n)puts("No");
    		else     puts("Yes");
    	}
    }
    

    T3

    (加载中)

  • 相关阅读:
    学习Bitmap,处理“海量”数据
    学习Trie树,处理“海量”数据
    学习KMP算法
    学习堆与栈内存分配方式
    学习继承和虚析构函数
    学习处理数组子集和的算法
    学习类中的const和static类型
    学习利用动态规划解决若干问题
    【MySQL】MySQL忘记root密码解决方案
    【API】短信通106端口验证短信的实现
  • 原文地址:https://www.cnblogs.com/kalginamiemeng/p/Exam20191030.html
Copyright © 2020-2023  润新知