OI队内测试——石门一

T1:

  题目大意:

      给你一个立方体,每个面上有些数字,给你一个数字K,你可以玩K轮游戏,

      每轮你会将每个面上的数均分为4份,分给相邻的面,求K轮游戏后,上面的数字是

      依次给你前、后、上、下、左、右的起始数字大小!

  题解:因为轮数最大只有45,所以直接暴力模拟即可,但是可能是数据水,在通分的时候不会爆炸,也可能是我太垃圾不会算最坏情况!

     总之非高精度可以A

T2:

  题目大意: 

    给你一串由小写字母组成的字符串,希望你把它划分成一些小段,使得每一小段字符串
    中的字母都不相同,并且希望分的段数尽量少。

    字符串"nnsmpmn",最少分成 3 小段:"n","nsmp","mn"。 排序后输出:mn n nsmp

    可能有多组解,求最小字典序的答案并输出

  题解:DP,设F[i]表示到第i段截至的struct 存下段数,每段的字符组成即可!

T3:

  题目大意:

    你和朋友 Shary 玩一个游戏:在一个无环的、无向的图中,每个节点可以放一些糖果。

    每次 Shary 可以从糖果数不少于 2 的节点上拿 2 个糖果,吃掉 1 个,并把另一个糖果放到相 邻的某个节点去。

    如果在某个时候,目标节点 T 上有了糖果,游戏结束,Shary 赢。

    如果你设计的初始状态,无论如何 Shary 都赢不了,则 Shary 输。 给定一个图,你能赢的方案中可以放的最多糖果数是多少?如果答案数超过     2*10^9, 只要输出-1 即可

  题解:贪心即可,考虑它一定是一棵树,于是以这个节点T为根,先考虑一条链,我们可以证明在深度最大的放2*size+1个,其余点不放是最优的

     因为链与树无本质上的区别,所以重复上述操作即可!

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#define ll long long
using namespace std;
ll read()
{
    ll x=0,f=1; char ch;
    while (ch=getchar(),ch<‘0‘||ch>‘9‘) if (ch==‘-‘) f=-1;
    while (x=x*10+ch-‘0‘,ch=getchar(),ch>=‘0‘&&ch<=‘9‘);
    return x*f;
}
ll gcd(ll a,ll b){if (!b) return a; return gcd(b,a%b);
}
struct point{
    ll x,y;
    friend point operator / (point a,ll x){
        if ((a.x%x)==0) {a.x/=x; return a;}
        else{
            a.y*=x;
            ll tmp=gcd(a.x,a.y);
            a.x/=tmp; a.y/=tmp; return a;
        }
    }
    friend point operator + (point a,point b){
        if (a.x==0) return b;
        if (b.x==0) return a;
        ll tmp=gcd(b.y,a.y); tmp=a.y/tmp*b.y;
        a.x*=(tmp/a.y); b.x*=(tmp/b.y); a.y=b.y=tmp;
        point c; c.x=a.x+b.x; c.y=1;
        return (c/tmp);
    }
}a[7],b[7];
int main()
{
    freopen("cube.in","r",stdin);
    freopen("cube.out","w",stdout);
    point x,y;
    x.x=1; x.y=4;
    y.x=1; y.y=3;
    for (int i=1; i<=6; i++) a[i].x=read(),a[i].y=1;
    int k=read();
    //if (k==0) {cout<<a[3].x<<endl; return;}
    for (int i=1; i<=k; i++)
    {
        b[1]=b[2]=(a[5]+a[6]+a[3]+a[4])/4;
        b[3]=b[4]=(a[1]+a[2]+a[5]+a[6])/4;
        b[5]=b[6]=(a[1]+a[2]+a[3]+a[4])/4;
        for (int j=1; j<=6; j++) a[j]=b[j];
    }
    if (a[3].x==0) cout<<0<<endl;
    else if (a[3].x%a[3].y==0) cout<<a[3].x/a[3].y<<endl;
    else cout<<a[3].x<<"/"<<a[3].y<<endl;
    return 0;
}
/*
0 0 4 0 0 0
2

0 0 4 0 0 0
3

1 2 3 4 5 6
45
*/

T1

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#define N 55
using namespace std;
struct Str{int x; char s[N];};
struct P{int cnt; Str s[N];}F[N];
bool vis[N];
int n;
char s[N];
bool operator <(Str a,Str b)
{
    for (int i=1; i<=min(a.x,b.x); i++)
    {
        if (a.s[i]==b.s[i]) continue;
        if (a.s[i]<b.s[i]) return 1; else return 0;
    }
    return a.x<b.x?1:0;
}
bool operator <(P a, P b){
    if (a.cnt<b.cnt) return 1;
    if (a.cnt>b.cnt) return 0;
    for (int i=1; i<=a.cnt; i++)
    {
        if (a.s[i]<b.s[i]) return 1;
        if (b.s[i]<a.s[i]) return 0;
    }
}
int read()
{
    int x=0,f=1; char ch;
    while (ch=getchar(),ch<‘0‘||ch>‘9‘) if (ch==‘-‘) f=-1;
    while (x=x*10+ch-‘0‘,ch=getchar(),ch>=‘0‘&&ch<=‘9‘);
    return x*f;
}
int main()
{
    freopen("string.in","r",stdin);
    freopen("string.out","w",stdout);
    int T=read();
    while (T--)
    {
        scanf("%s",s+1); n=strlen(s+1);
        for (int i=1; i<=n; i++) F[i].cnt=n+1;
        for (int i=1; i<=n; i++)
        {
            memset(vis,0,sizeof(vis));
            for (int j=i-1; j>=0; j--)
            {
                if (vis[s[j+1]-‘a‘]) break; vis[s[j+1]-‘a‘]=1;
                P X; X=F[j]; X.cnt++;
                for (int k=j+1; k<=i; k++) X.s[X.cnt].x++,X.s[X.cnt].s[k-j]=s[k];
                sort(X.s+1,X.s+1+X.cnt);
                if (X<F[i]) F[i]=X;
            }
        }
    //    cout<<" "<<F[n].cnt<<" "<<F[n].s[]endl;
        for (int i=1; i<=F[n].cnt; i++)
        {
            for (int j=1; j<=F[n].s[i].x; j++)
            {
                cout<<F[n].s[i].s[j];
            }
            cout<<" ";
        }
        cout<<endl;
    }
    return 0;
}
/*
2
facetiously
aaaaa

2
aba
babb
*/

T2

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#define inf 2e9
#define ll long long
#define N 100
using namespace std;
char ch[N];
int pre[N*N],now[N],v[N*N],tot;
int size[N],hson[N];
bool vis[N];
int n;
ll ans;
int read()
{
    int x=0,f=1; char ch;
    while (ch=getchar(),ch<‘0‘||ch>‘9‘) if (ch==‘-‘) f=-1;
    while (x=x*10+ch-‘0‘,ch=getchar(),ch>=‘0‘&&ch<=‘9‘);
    return x*f;
}
void ins(int a,int b){++tot; pre[tot]=now[a]; now[a]=tot; v[tot]=b;
}
void dfs(int x,int fa)
{
    vis[x]=1; size[x]=1;
    for (int p=now[x]; p; p=pre[p])
    {
        int son=v[p]; if (son==fa) continue;
        dfs(son,x); size[x]=max(size[x],size[son]+1);
        if (size[son]>size[hson[x]] || hson[x]==0) hson[x]=son;
    }
}
void get(int x,int fa,ll sum)
{
    //cout<<" "<<x<<" "<<fa<<" "<<sum<<endl;
    if (ans==-1 || sum==-1) {ans=-1; return ;}
    if (!hson[x]) {ans+=sum; ans=ans>inf?-1:ans; return;}
    for (int p=now[x]; p; p=pre[p])
    {
        int son=v[p]; if (son==fa) continue;
        if (son==hson[x]) get(son,x,sum*2+1>inf?-1:sum*2+1);
        else get(son,x,1);
    }
}
int main()
{
    freopen("candy.in","r",stdin);
    freopen("candy.out","w",stdout);
    int T=read();
    while (T--)
    {
        tot=0; memset(now,0,sizeof(now));
        n=read(); int s=read(); s++;
        for (int i=1; i<=n; i++)
        {
            scanf("%s",ch+1); for (int j=1; j<=n; j++) if (ch[j]==‘Y‘) ins(i,j);
        }
        memset(vis,0,sizeof(vis));
        memset(hson,0,sizeof(hson));
        dfs(s,0); bool bo=true; for (int i=1; i<=n; i++) if (!vis[i]) bo=false;
        if (!bo) {cout<<-1<<endl; continue;}
        ans=0; get(s,0,0); printf("%lld\n",ans);
    }
    return 0;
}
/*
3
3 2
NYN
YNY
NYN
4 1
NYYY
YNNN
YNNN
YNNN
7 0
NYNNNYN
YNYNYNN
NYNYNNN
NNYNNNN
NYNNNNN
YNNNNNY
NNNNNYN

*/

T3

时间: 2024-10-03 13:40:11

OI队内测试——石门一的相关文章

OI队内测试一【数论概率期望】

版权声明:未经本人允许,擅自转载,一旦发现将严肃处理,情节严重者,将追究法律责任! 测试分数:110 本应分数:160 改完分数:200 T1: 题解:推出了一个初始式子但是n的4分之3次方 忘了合并[实际上是没发现]本来应有60分的,但是忘记开long long 只有30分 因为一些公式不好写出来就直接截图题解吧! T2: 题解:很简单的概率期望,算出每个点被选的概率,然后在上树状数组或者线段树求逆序队,但是我只有80分,为什么解法不行?NO NO 你还是太年轻我只是线段树数据范围开小了!![

第一次冲刺阶段 队内总结

第一次冲刺阶段结束了,大家都在尽力的为团队贡献自己的力量. 这篇文章就总结一下大家对团队的贡献 吴强负责把人工语言转换到C#语言中,吸取大家的建议,并改正程序 周泊辰负责提出假想,上网查询资料,思考我们软件的需要,以及各种控件的属性编辑 杨子浩查询控件作用以及改进建议,根据软件的需要来告诉我们需要用到哪些东西 佟天宇负责调试程序,提出问题供大家解决,根据每一步的成果和错误,站在用户的角度提出建设性意见. 综上,队内协商评分如下: 吴强 95 周泊辰 94 杨子浩 93 佟天宇 92 原文地址:h

测试周期内测试进度报告规范

在以往的项目测试经历中,经常会遇到如下问题,导致测试进度不能很好的把控,项目上线延期: 1. 已经到了提测时间,或者已经到了上在线确认环境和在线环境的时间,但是测试环境,在线确认环境,在线环境都没有搭建好,导致测试计划不能按期开始: 2. 提测之后,每天QA会提交很多的bug,开发同学可能已经进入其他需求的开发,不可能时刻盯着已提测需求的bug,对于哪些bug是block的问题,急需解决,开发同学也没有时间去及时跟进,导致一天过去了,很多bug还是未解决状态,block的bug影响测试继续进行:

队内任务分配

haze 图论 swt0_0 数学 博弈论 dp 期望 Platypus 字符串 kmp AC自动机 后缀数组 回文树 后缀自动机 待定 计算几何

队内ACM赛

T1 心灵终结 打表找规律... 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 7 long long T,n,m; 8 9 long long solve(long long x){ 10 if(x%4==0)return x; 11 if(x%4==1)return x+1; 12 if(

程序猿常识--OJ系统和ACM测试考试大全

OJ它是Online Judge缩写系统,来在线检測程序源码的正确性. 著名的OJ有RQNOJ.URAL等. 国内著名的题库有北京大学题库.浙江大学题库等. 国外的题库包含乌拉尔大学.瓦拉杜利德大学题库等. 简单介绍: Online Judge系统(简称OJ)是一个在线的判题系统.用户能够在线提交程序多种程序(如C.C++)源码,系统对源码进行编译和运行,并通过预先设计的測试数据来检验程序源码的正确性. 程序: 一个用户提交的程序在Online Judge系统下运行时将受到比較严格的限制,包含运

Hadoop集群内lzo的安装与配置

LZO压缩,可分块并行处理,解压缩的效率也是可以的. 为了配合部门hadoop平台测试,作者详细的介绍了如何在Hadoop平台下安装lzo所需要软件包:gcc.ant.lzo.lzo编码/解码器并配置lzo的文件:core-site.xml.mapred-site.xml.希望对大家有所帮助.以下是正文: 最近我们部门在测试云计算平台hadoop,我被lzo折腾了三四天,累了个够呛.在此总结一下,也给大家做个参考. 操作系统:CentOS 5.5,Hadoop版本:hadoop-0.20.2-C

测试管理工具列表大全

ID Name Notes 1 TestDirector/Quality Center 业界第一个基于Web的测试管理系统,它可以在您公司组织内进行全球范围内测试的协调.通过在一个整体的应用系统中提供并且集成了测试需求管理,测试计划,测试日程控制以及测试执行和错误跟踪等功能,TestDirector极大地加速测试过程.8.0后改称QC. 由于HP QC可以单独使用Defect模块,也可单独申请Defect模块的License,它也是名副其实的缺陷管理工具. 网址:http://www.mercu

[掌眼]微信支付测试返回:access_control:not_allow或system:access_denied

转自:http://mp.weixin.qq.com/qa/index.php?qa=11634&qa_1=%E6%94%AF%E4%BB%98%E8%BF%94%E5%9B%9E%EF%BC%9Aaccess_control-not_allow&show=16550 感谢:乐游旅游 比如我的测试js支付的页面是 http://10.10.x.y/test/wxpay .首先要将"商户功能"->支付测试 下的"支付测试目录"改成  http:/