• 0421 & SX2016


    山西省选...这个省...不算强吧...然而就是这么腊鸡题目还是wa得一无是处...怎么办啊怎么办啊...无处拯救青春和未来啊...

    T1:

      POI2004原题 BZOJ1524

      n<=16.这不是一眼 撞鸭吗...然而我怎么打炸了呢...看了一眼标算跟我枚举的方式有点不一样不过感觉更靠谱的样子...然而第一眼看一句话居然看不懂...

      连枚举子集都忘了QAQ

      for x = S; x ;x = S&(x-1);

    T2:

      打表找规律= =...

      没取模!!!!!!日!!!!!!!!!

      

    /*=================================
    # Created time: 2016-04-21 10:09
    # Filename: sequence.cpp
    # Description: 
    =================================*/
    #define me AcrossTheSky&HalfSummer11  
    #include <cstdio>  
    #include <cmath>  
    #include <ctime>  
    #include <string>  
    #include <cstring>  
    #include <cstdlib>  
    #include <iostream>  
    #include <algorithm>  
      
    #include <set> 
    #include <stack>  
    #include <queue>  
    #include <vector>  
      
    #define lowbit(x) (x)&(-x)  
    #define Abs(x) ((x) > 0 ? (x) : (-(x)))  
    #define FOR(i,a,b) for((i)=(a);(i)<=(b);(i)++)  
    #define FORP(i,a,b) for(int i=(a);i<=(b);i++)  
    #define FORM(i,a,b) for(int i=(a);i>=(b);i--)  
    #define ls(a,b) (((a)+(b)) << 1)  
    #define rs(a,b) (((a)+(b)) >> 1)  
    #define getlc(a) ch[(a)][0]  
    #define getrc(a) ch[(a)][1]  
      
    #define maxn 300005 
    #define maxm 2000005 
    #define INF 1070000000  
    #define mod 1000000007
    using namespace std;  
    typedef long long ll;  
    typedef unsigned long long ull;  
      
    template<class T> inline  
    void read(T& num){  
        num = 0; bool f = true;char ch = getchar();  
        while(ch < '0' || ch > '9') { if(ch == '-') f = false;ch = getchar();}  
        while(ch >= '0' && ch <= '9') {num = num * 10 + ch - '0';ch = getchar();}  
        num = f ? num: -num;  
    } 
    int outs[100]; 
    template<class T> inline 
    void write(T x){ 
    	if (x==0) {putchar('0'); puts(""); return;} 
    	if (x<0) {putchar('-'); x=-x;} 
    	int num=0; 
    	while (x){ outs[num++]=(x%10); x=x/10;} 
    	FORM(i,num-1,0) putchar(outs[i]+'0'); puts(""); 
    } 
    /*==================split line==================*/
    ll n;
    struct Matrix{
    	ll s[2][2];
    	void clear(){memset(s,0,sizeof(s));}
    }f,a;
    Matrix operator *(Matrix a,Matrix b){
        Matrix c;  c.clear();
        for (int i=0;i<2;i++)
            for (int j=0;j<2;j++)
              for (int k=0;k<2;k++)
                  c.s[i][j]+=((a.s[k][j]%mod)*(b.s[i][k]%mod))%mod,c.s[i][j]%=mod;
        return c;
    }
    int main(){
    	freopen("sequence.in","r",stdin);
    	freopen("sequence.out","w",stdout);
    	f.s[0][0]=1,f.s[0][1]=0,f.s[1][0]=0,f.s[1][1]=0;
    	a.s[0][0]=2,a.s[0][1]=1,a.s[1][0]=1,a.s[1][1]=0;
       	read(n);
       	if (n==0){
           	write(0);
         	return 0;
        }
        n--;
        for(;n;n>>=1,a=a*a) if(n&1) f=f*a;
    	write(f.s[0][0]);
    }
    

     T3:

      显然新加串是原串一个前缀,搞一棵Trie,hash一下....然而为什么我BZ上过了考试的时候没过呢...

      

    /*=================================
    # Created time: 2016-04-21 10:09
    # Filename: sequence.cpp
    # Description: 
    =================================*/
    #define me AcrossTheSky&HalfSummer11  
    #include <cstdio>  
    #include <cmath>  
    #include <ctime>  
    #include <string>  
    #include <cstring>  
    #include <cstdlib>  
    #include <iostream>  
    #include <algorithm>  
      
    #include <set> 
    #include <stack>  
    #include <queue>  
    #include <vector>  
      
    #define lowbit(x) (x)&(-x)  
    #define Abs(x) ((x) > 0 ? (x) : (-(x)))  
    #define FOR(i,a,b) for((i)=(a);(i)<=(b);(i)++)  
    #define FORP(i,a,b) for(int i=(a);i<=(b);i++)  
    #define FORM(i,a,b) for(int i=(a);i>=(b);i--)  
    #define pb push_back
    #define ls(a,b) (((a)+(b)) << 1)  
    #define rs(a,b) (((a)+(b)) >> 1)  
    #define getlc(a) ch[(a)][0]  
    #define getrc(a) ch[(a)][1]  
      
    #define maxn 2000005 
    #define maxm 100005
    #define INF 1070000000  
    using namespace std;  
    typedef long long ll;  
    typedef unsigned long long ull;  
      
    template<class T> inline  
    void read(T& num){  
        num = 0; bool f = true;char ch = getchar();  
        while(ch < '0' || ch > '9') { if(ch == '-') f = false;ch = getchar();}  
        while(ch >= '0' && ch <= '9') {num = num * 10 + ch - '0';ch = getchar();}  
        num = f ? num: -num;  
    } 
    int outs[100]; 
    template<class T> inline 
    void write(T x){ 
    	if (x==0) {putchar('0'); puts(""); return;} 
    	if (x<0) {putchar('-'); x=-x;} 
    	int num=0; 
    	while (x){ outs[num++]=(x%10); x=x/10;} 
    	FORM(i,num-1,0) putchar(outs[i]+'0'); puts("");
    } 
    /*==================split line==================*/
    const ll base=17; 
    int n,cnt=1,now; ll tmp;
    int len[maxn],sum[maxn],ord[maxn],ch[maxn][26];
    ull hash[maxn],p[maxn];
    vector<char> s[maxn];
    void insert(int x){
    	if (!ch[now][x]) ch[now][x]=++cnt;
    	now=ch[now][x];
    	tmp=tmp*base+x+1;
    }
    int main(){
    	freopen("string.in","r",stdin);
    	freopen("string.out","w",stdout);
    	p[0]=1; FORP (i,1,2000003) p[i]=p[i-1]*base;//,write(p[i]);
    	read(n);
    	FORP(i,1,n){
    		char c;
    		read(len[i]); 
    		FORP(j,0,len[i]-1) 
    				s[i].pb(getchar());
    		now=1,tmp=0;
    		FORP(j,0,len[i]-1) insert(s[i][j]-'a');
    		sum[now]++;ord[now]=i;hash[i]=tmp;
    	}
    	ll ans=0;
    	FORP(i,1,n){
    		now=1;
    		FORP(j,0,len[i]-1){
    			int x=s[i][j]-'a';
    			now=ch[now][x];
    			if (sum[now] && 
    			hash[ord[now]]*p[len[i]]+hash[i]==
    			hash[i]*p[len[ord[now]]]+hash[ord[now]]) ans+=sum[now];
    		}
    	}
    	ans=ans*2-n;
    	write(ans);
    	return 0;
    }
    

     T4:

      打了个暴力这次暴力居然没出错...正解还没去看挖个坑>_<...Orz分块过的大神犇

  • 相关阅读:
    在Wince下使用钩子函数
    WinCE下钩子应用(一)——WinCE 下实时捕获键盘消息
    记录此刻
    常用数列
    百度之星度度熊拼三角
    笛卡尔定理
    Lucas定理
    简单概念
    Unknown Treasure Lucas+中国剩余定理+快速乘
    2017ccpc杭州站 Problem B. Master of Phi
  • 原文地址:https://www.cnblogs.com/YCuangWhen/p/5418260.html
Copyright © 2020-2023  润新知