zoukankan      html  css  js  c++  java
  • 7.31

    索引

    题单

    • P1094 纪念品分组【贪心】
    • P1181 数列分段Section I【贪心 过水】
    • P1803 凌乱的yyy / 线段覆盖
    • P1538 迎春舞会之数字舞蹈【恶心模拟】

    • P1134 阶乘问题【数论】

    noip原题

    - P1134 阶乘问题【数论】

    /*
    translation:
    	
    solution:
    	分析:N!的末尾只会是2,4,6,8(在此题中没有0).又[2,4,6,8]中任意一个数乘6,末尾仍是本身.2 * 6 = 12,末尾为2, 4 * 6 =24,
    	末尾为4, 6 * 6=36,末尾为6,8 * 6 =48,末尾为8.又末尾数字只受末尾数字影响,如4. 4 * 6得到的末尾数字与4 * 16的末尾数
    	字一样.又4 * 10=40,末尾数字为4(此题不要末尾0).则4 * 2 *8==4 * 2 *5(意思是得到的末尾数字是一样的).故所有乘5的时
    	候都可以换为乘8.又多次乘8末尾是有规律的.找出规律即可.
    trigger:
    	
    note:
    	*
    date:
    	2019.07.31
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define rep(i,a,b) for(ll i=a;i<=b;++i)
    #define dwn(i,a,b) for(ll i=a;i>=b;--i) 
    template <typename T> inline void rd(T &x){x=0;char c=getchar();int f=0;while(!isdigit(c)){f|=c=='-';c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}x=f?-x:x;} 
    #define mem(a,b) memset(a,b,sizeof(a))
    
    #define N 
    
    int n,ans=1;
    int a[4]={6,8,4,2};
    int main(){
    	#ifdef WIN32
    	freopen("","r",stdin);
    	#endif
    	rd(n);
    	while(n){
    		rep(i,1,n%10)//除了5之外,其他数字原样乘.
            //n%10 的原因:答案只受末尾数字影响 
    			if(i!=5)
    				ans=ans*i%10;//跳过乘5(此时可以放心%10) 
    		n/=5;//n/5即少乘了多少次5
            //即乘8的次数 
    		ans=ans*a[n%4]%10;//四次一循环(此时可以放心%10) 
    	}
    	printf("%d",ans);
    	return 0;
    }
    

    P1803 凌乱的yyy / 线段覆盖

    在一个数轴上有n条线段,现要选取其中k条线段使得这k条线段两两没有重合部分,问最大的k为多少。
    最左边的线段放什么最好?
    显然放右端点最靠左的线段最好,从左向右放,右端点越小妨碍越少
    其他线段放置按右端点排序,贪心放置线段,即能放就放
    

    - P1094 纪念品分组

    /*
    translation:
    	他要把购来的纪念品根据价格进行分组,
    	但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。
    solution:
    	第一次交RE了,因为循环结束有两种情况:
    		- 情况1:刚好取完最后两个
    		- 情况2:取完最后一个,ans++ 
    trigger:
    	
    note:
    	*贪心,排序 
    date:
    	2019.07.31
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define rep(i,a,b) for(ll i=a;i<=b;++i)
    #define dwn(i,a,b) for(ll i=a;i>=b;--i) 
    template <typename T> inline void rd(T &x){x=0;char c=getchar();int f=0;while(!isdigit(c)){f|=c=='-';c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}x=f?-x:x;} 
    #define mem(a,b) memset(a,b,sizeof(a))
    
    #define N 30010
    
    ll w,ans,n;
    ll a[N];
    
    int main(){
    	#ifdef WIN32
    	freopen("fenzu.txt","r",stdin);
    	#endif
    	rd(w);
    	rd(n);
    	rep(i,1,n)rd(a[i]);
    	sort(a+1,a+n+1);
    	ll i=1;
    	ll j=n;
    	while(1){
    		if(a[i]+a[j]<=w){
    			ans++;
    			a[i]=INT_MAX,a[j]=INT_MAX;
    			i++,j--;
    		}
    		else{
    			ans++;
    			a[j]=INT_MAX;
    			j--;
    		}
    		if(i==j+1)break;//////////////不要忘了处理情况1 
    		if(i==j){//情况2 
    			ans++;
    			break;
    		}
    	}
    	printf("%lld",ans);
    	return 0;
    }
    /*
    100 
    9 
    90 
    20 
    20 
    30 
    50 
    60 
    70 
    80 
    90
    */
    //6 
    

    P1538 迎春舞会之数字舞蹈

    /*
    translation:
    	
    solution:
    
    trigger:
    	
    note:
    	*
    date:
    	2019.07.31
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define rep(i,a,b) for(ll i=a;i<=b;++i)
    #define dwn(i,a,b) for(ll i=a;i>=b;--i) 
    template <typename T> inline void rd(T &x){x=0;char c=getchar();int f=0;while(!isdigit(c)){f|=c=='-';c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}x=f?-x:x;} 
    #define mem(a,b) memset(a,b,sizeof(a))
    using namespace std;
    
    int k,h,w,r;
    char bj[64][8670];
    bool a[10][7]={                    
                    {1,1,1,1,1,1,0},
                    {0,1,1,0,0,0,0},
                    {1,1,0,1,1,0,1},
                    {1,1,1,1,0,0,1},
                    {0,1,1,0,0,1,1},
                    {1,0,1,1,0,1,1},
                    {1,0,1,1,1,1,1},
                    {1,1,1,0,0,0,0},
                    {1,1,1,1,1,1,1},
                    {1,1,1,1,0,1,1}
                };
    
    void find(char c){
        if(a[c-'0'][0]) for(int i=r+1;i<r+w-2;i++) bj[0][i]='-';
        if(a[c-'0'][1]) for(int i=1;i<=k;i++) bj[i][r+w-2]='|';
        if(a[c-'0'][2]) for(int i=k+2;i<h-1;i++) bj[i][r+w-2]='|';
        if(a[c-'0'][3]) for(int i=r+1;i<r+w-2;i++) bj[k+k+2][i]='-';
        if(a[c-'0'][4]) for(int i=k+2;i<h-1;i++) bj[i][r]='|';
        if(a[c-'0'][5]) for(int i=1;i<=k;i++) bj[i][r]='|';
        if(a[c-'0'][6]) for(int i=r+1;i<r+w-2;i++) bj[k+1][i]='-';
    }
    
    int main() {
        string s;
        rd(k);
        cin>>s;
        h=k*2+3;   
        w=k+3;//每个数字的宽度(包含一个空格)
        for(int i=0;i<s.length();i++){
            find(s[i]);
            r+=w;
        }
        for(int i=0;i<h;i++){
            for(int j=0;j<r;j++){
                if(bj[i][j]) putchar(bj[i][j]);
                else putchar(' ');
            }
            putchar('
    ');
        }
        return 0;
    }
    
  • 相关阅读:
    JavaScript之arguments对象讲解
    JavaScript之工厂方式 构造函数方式 原型方式讲解
    JavaScript之常用方法讲解
    JavaScript之引用类型讲解
    JavaScript之数据类型讲解
    JavaScript之Cookie讲解
    __cdecl __stdcall __fastcall之函数调用约定讲解
    xp/2003开关3389指令
    php源码安装常用配置参数和说明
    用yum查询想安装的软件
  • 原文地址:https://www.cnblogs.com/sjsjsj-minus-Si/p/11635459.html
Copyright © 2011-2022 走看看