zoukankan      html  css  js  c++  java
  • 19-10-30-Night-V

    看到$ ext{V}$就想到了V神。

    快快放假....

    $ ext{Vicetone}$最新单曲$ ext{Aftermath}$大家听了嘛……

    (真不是学数论之后的意思啊,译为‘后果’,显然是不好的……)


    害怕联赛不明不白退役……

    不开$ ext{C++11}$挂$75$分=。=

    所以一定要看编译选项啊……

    结果:

    我觉得是(OJ上也是):

    4
    Miemeng 100
    03:29:05
    75
    03:29:05
    30
    03:29:05
    205
    03:29:05

    事实上……

    23 Miemeng 100 0 30 130

    好死了……为啥不开$ ext{C++11}$

    ZJ一下:

    题不算难。

    T1打表找规律成功!

    T2码了一个$30$分暴力,后来为了要$20$分的特殊性质写了一个神奇$ ext{C++11}$

    然后就0了。

    T3暴力还挺稳。

    TJ时间:

    T1

    打表找到规律。

    只想说一句话:爆龙龙就去化一波柿子。

    化柿子的过程:

    给的是这个:

    $$sum limits_{i=0}^{p} left lfloor frac{iq}{p} ight floor$$

    化下:

    $$ Large
    egin{array}{rl}
    = & sum limits_{i=0}^{p}  frac{iq-iq\%p }{p} \
    = & sum limits_{i=0}^{p} iq-sum limits_{i=0}^{p} iq\%p over p \
    = & frac{pq(p+1)}{2} - sum limits_{i=0}^{p} iq\%p over p
    end{array}
    $$

    但是有个$sum$化不掉,此时就需要更加神奇的化柿子方法。

    只考虑:

    $$ sum limits_{i=0}^{p} iq\%p$$

    设$r=gcd(p,q)$

    于是可打表得:

    $$ Large
    egin{array}{rl}
       & sum limits_{i=0}^{p} iq\%p\
    = & (p-r) imes(p/r) imes r over 2\
    = & (p-r) imes p over 2
    end{array}
    $$

    最后柿子长这样:

    $$ Large
    egin{array}{rl}
       & frac{pq(p+1)}{2} - frac{p imes (p-r)}{2} over p \
    = & frac{q(p+1)- p+r}{2}
    end{array}
    $$

    如果不化简会爆龙龙……

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define LL long long
    
    using namespace std;
    
    LL gcd(LL a,LL b){
    	return b==0?a:gcd(b,a%b);
    }
    int main(){
    #ifndef LOCAL 
    	freopen("simplecalc.in" ,"r",stdin);
    	freopen("simplecalc.out","w",stdout);
    #endif
    	LL T,q,p;
    	cin>>T;
    	while(T--){
    		cin>>p>>q;
    		LL gcn=gcd(p,q);
    		cout<<((p+1)*q-(p-gcn))/2<<endl;
    	}
    }
    

    T2

    分收益和损失两部分。

    收益的我们要尽量花费少,所以按花费排序。

    损失的我们可以按照X国的军队做,按损失后剩下的排序。

    记住:这两个题的输入不一样!

    对于损失部分

    $k$指投入,$t$指产出。

    X国的军队:输入$k, Delta$

    本题:输入$k,t$

    于是有$Delta=k-t Rightarrow t=k-Delta$

    所以是一致的,都是按产出从大到小排序从而减少浪费。

    而且我们一定要先收益再损失。

    写个厉害的比较函数……

    #include <algorithm>
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define LL long long
    #define N 1111111
    
    using namespace std;
    
    int check(LL a,LL b){
    	if(a*b<=0)return 0;
    	if(a<0 && b<0)
    		return 2;
    	if(a>0 && b>0)
    		return 1;
    }
    struct YB{
    	LL bef,aft;
    	friend bool operator < (const YB &a,const YB &b){
    		LL dela=a.aft-a.bef,
    		   delb=b.aft-b.bef,
    		   cek=check(dela,delb);
    		if(cek==0)
    			return dela>delb;
    		else if(cek==1)
    			return a.bef<b.bef;
    		else return a.aft>b.aft;
    	}
    }bs[N];
    LL bn;
    
    int main(){
    #ifndef LOCAL 
    	freopen("reformat.in" ,"r",stdin);
    	freopen("reformat.out","w",stdout);
    #endif
    	cin.sync_with_stdio(false);
    	cin>>bn;
    	for(int i=1;i<=bn;i++)
    		cin>>bs[i].bef>>bs[i].aft;
    	sort(bs+1,bs+bn+1);
    //	for(int i=1;i<=bn;i++)cout<<bs[i].bef<<" "<<bs[i].aft<<endl;
    	LL lft=0,ans=0;
    	for(int i=1;i<=bn;i++){
    		if(lft<bs[i].bef){
    			ans+=bs[i].bef-lft;
    			lft=bs[i].aft;
    		}
    		else{
    			lft-=bs[i].bef;
    			lft+=bs[i].aft;
    		}
    	}
    	cout<<ans<<endl;
    }
    

    T3

    我太弱了。

  • 相关阅读:
    python制作一个塔防射箭游戏
    有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同 学号的那些结点。
    python实现一个简单的21点游戏
    C语音,函数padd的功能是调整pa指向的链表中结点的位置,使得所有x值为偶数的结点出现在链表的前半部,所有x值为奇数的结点出现在链表的后半部。
    scratch绘制特殊图形1
    验证哥德巴赫猜想,输出6-100之间的偶数等于两个质数之和
    写一函数check检测字符串中的左右括号数是否匹配
    C语言文件操作题,将整数1-10及其算术平方根存入文件,再读取出来显示在屏幕上
    湖南2020对口计算机32题第1、2、3小题
    基础
  • 原文地址:https://www.cnblogs.com/kalginamiemeng/p/Exam20191030-Night.html
Copyright © 2011-2022 走看看