DAY 7

摘要:
预期得分:40+80+0100+100+10实际得分:40+60+0100+100+10早上很无聊。完成第一和第二个问题O后,我们拍了一对照片。然后我们发现T2RE不存在了,然后我们尝试了大样本,但结果是错误的。然后我们将其调整到考试快结束时。最后,我们尝试输出字符串的长度,发现长度不对,是吗???然后我把文件读进读出,然后我发现我一直都是对的……我无法读取控制台中的所有字符串……然后我没有得到写第一个问题的快速nlogn算法。虽然我的multiset的复杂性是正确的,但它将成为一个死胡同,因为STL常量超时太大。我知道老调T2会结束

预计得分:40+80+0 100+100+10
实际得分:40+60+0 100+100+10

上午很杯具,一二题O(nlogn)写完就对拍一下,然后发现T2RE了,然后不RE了之后试试大样例
然后不对,然后调到几乎考试结束,最后试着输出字符串的长度,发现长度不对,诶???
然后用文件读入输出,然后才发现我一直是对的……在控制台中字符串会读不完……
然后就没来得的写第一题的比较快的nlogn算法,我用的multiset,虽然复杂度正确
但是会因为STL巨大的常数超时成煞笔,早知道不老调T2了……
其实T1和T2都因为STL巨大的常数TLE
但是第二题不用的话我就得手写树状数组或者平衡树了,不如写STL吧
T2用hash二分排序不会MLE

下午还好,T1T2都很简单
所以水水就过去了
但是T2的eps改了5次,从1e-5到1e-9幸好有对拍
本来写的N^4,担心会超时所以预处理一下优化掉几乎所有的时间开销
其实多此一举了,本来就是正解

上午和下午的T3都是状压dp,并不是很想做而且不是很会做所以都没做

困呢……
上午T2

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<vector>
#include<cctype>
#include<cstdio>
#include<string>
#include<cstdio>
#include<ctime>
#define N 50005
using namespace std;
 
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(!isdigit(ch))    
        ch=getchar();
    while(isdigit(ch))
        x=x*10+ch-'0',ch=getchar();
    return x*f;
}
 
vector<string>a[27];
void insert(string x,int i){
    a[i].insert(upper_bound(a[i].begin(),a[i].end(),x),x);
    return;
}
int find(string x,int i){
    return upper_bound(a[i].begin(),a[i].end(),x)-a[i].begin()+1;
}

int ans;
int n,m;
string str;
int sum[N];

int main(){
    freopen("sort_big.in","r",stdin);
   freopen("sort.out","w",stdout);
   int t=clock();
  for(int i=0;i<26;++i)
       a[i].reserve(500005*m);
    n=read(),m=read();
    cin>>str;
    string now;
    int len=str.size();
    for(int i=0;i<len;++i){
        if(i+m-1>len-1)
            now=str.substr(i,len-i);
        else now=str.substr(i,m);
        int shou=now[0]-'a';
        for(int j=shou;j<26;++j)ans+=sum[j];
        ans-=find(now,shou);
        insert(now,shou);
        sum[shou]++;
    }
    printf("%d
",ans);    printf("%lf",1.*(clock()-t)/CLOCKS_PER_SEC);   
    return 0;
}

下午T2

#include<iostream>
#include<cstdio>
#define eps 1e-9
#define N 105
using namespace std;

void read(int &s){
    char ch=getchar();
    for(;!isdigit(ch);ch=getchar());
    for(s=0;isdigit(ch);s=s*10+ch-'0',ch=getchar());
}

double abs(double s){
    return s>=0?s:-1.0*s;
}

bool d(double a,double b){
    if(abs(a-b)<=eps)return true;
    else return false;
}

double ran;
int l,r;
int n,c,k;
double s[N][N];
double f[N];
int cha[N];
int si[N];

int main(){
    freopen("paint.in","r",stdin);
    freopen("paint.out","w",stdout);
    read(n);
    read(c);
    read(k);
    s[0][1]=1.00;
    for(int i=1;i<=k;++i){
        read(l),read(r);
        cha[l]++;
        cha[r+1]--;
    }
    ran=(double)1.0/c;
    double ans=0.00;
    for(int i=1;i<=n;++i)
        si[i]=cha[i]+si[i-1];
    for(int p=1;p<=100;++p){
        for(int j=0;j<c;++j)f[j]=0.0;
        for(int j=0;j<c;++j){
            if(!d(s[p-1][j],0)){
                for(int k=0;k<c;++k){
                    f[(k*j)%c]+=s[p-1][j]*0.50*ran;
                }
            }
        }
        for(int j=0;j<c;++j)
            s[p][j]=s[p-1][j]*0.5+f[j];
    }    
    for(int i=1;i<=n;++i){
        for(int j=0;j<c;++j)
            ans+=s[si[i]][j]*j;
    }
    printf("%.3llf",ans);
    return 0;
}

免责声明:文章转载自《DAY 7》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(转载).net 缓存处理tomcat报错catalina.sh: line 401: /usr/java/jdk1.7.52/bin/java: No such file or directory(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

websphere application server (was) 安装8.5.5.18

目录环境准备所需的软件或系统版本安装包目录结构安装步骤安装was8.5.0.0升级到8.5.5.18打开浏览器以访问控制台环境准备如果系统主机名不是localhost,您需要将所需的软件或系统版本jdk1.8centos7.5WAS提前添加到/etc/hosts/文件中_ ND_V8.5_1_OF_3.zipWAS_ ND_V3.5_2_OF_3.zip代理...

linux下ifconfig, DNS以及route配置

Linux基本网络配置命令1.ifconfig查看网络接口信息。普通用户使用的ifconfig的完整路径:/sbin/ifconfigifconfig网络接口名称:显示指定接口的详细信息。...

传奇服务端各文件用途说明

传奇外传服务端├数据库服务器│├联系│├美国联邦储备银行│├日志│├! ID列表。txt(付款帐户列表,在Setup.exe中ServiceMode=TRUE时有效)!服务器信息.txt│├DBServer.exe│└DBSrc.ini├登录门│├登录网关.exe│└配置ini├登录服务器│├Chr日志│├ConLog公司│├计数日志│├国际数据库││├ID...

可爱猫+python——定制化微信机器人

框架是模拟真实用户操作,只要不违法乱纪,是不用担心账号冻结问题的。...

electron用默认浏览器打开链接的3种实现方式

在使用Electron开发桌面程序的过程中,我们可能经常需要使Electron程序中包含的链接在单击后直接调用系统的默认浏览器打开。仔细阅读文档后,我们都知道它的核心原理是调用系统的默认浏览器,通过Electron shell模块中的openExternal方法打开链接。然而,它的实现有不同的方法,彻底接管和选择性接管。介绍第3章中的有效方法。以上三种方法都...

Google Drive 里的文件下载的方法

Google Drive不提供创建直接下载链接的选项,但您可以通过更改链接形式在本地保存共享内容。例如,通过Google Drive共享的文件链接是:https://drive.google.com/file/d/FILE_ID/edit?usp=sharing如果您将其更改为以下修改版本,然后通过浏览器打开,则将直接下载该文件:https://drive....