CCPC2017湘潭 1263 1264 1267 1268

1263

拉升一下就A了

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#define LL long long int
using namespace std;

int main()
{
    cin.sync_with_stdio(false);
    int n,m,a,b;
    while(cin>>n>>m>>a>>b)
    {
        string s[105];
        for(int i=0;i<n;i++)
        {
            cin>>s[i];
        }
        for(int i=0;i<n*a;i++)
        {
            for(int j=0;j<m*b;j++)
            {
                int y=i/a;
                int x=j/b;
                cout<<s[y][x];
            }
            cout<<endl;
        }
    }

    return 0;
}

1264

这题特点是区间端点不可多次选取,然后在此情况下求前k大的区间和(根据C做一下处理就好)

妈蛋XTUOJ把咱代码吞了,反正不长,再敲一遍。

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#define LL long long int
using namespace std;
LL n,m,c;
LL num[1000006];
LL pre[1000006];
int main()
{
    cin.sync_with_stdio(false);
    while(cin>>n>>m>>c)
    {
        for(int i=0;i<n;i++)
        {
            cin>>num[i];
            if(i==0)
                pre[i]=num[i];
            else
                pre[i]=pre[i-1]+num[i];
        }
        pre[n]=0;
        sort(pre,pre+n+1);
        LL ans=0;
        for(int i=0;i<=n&&i<m;i++)
        {
            LL l=i;
            LL r=n-i;
            if(l>r||pre[r]-pre[l]<c)
                break;
            ans+=pre[r]-pre[l]-c;
        }
        cout<<ans<<endl;
    }
    return 0;
}

1267

题意简单来说就是一棵树根据两点之间的路径长度作为建边费用,求最大生成树。

感谢江理小伙伴提供思路,咱是死在赛场上都没想到用直径的特点。

首先已知树最长的边是其直径,前n-1长的边一定和直径的某个点相连。

证明:
设直径左右两点A B
任何点都直接间接连接至A,B
设一个中间点C在AB直径上,对于一个点D,如果它在直径上,则把C当作D,DC=0,否则DC长度为DC本身
假设点D到E的距离大于到A的距离且大于到D的距离,有
DE>=AC+CD//假设
DE>=BC+CD
AB>=AC+CD+DE//AB直径
AB>=BC+CD+DE
==>     AB*2+DE*2>=AB*2+DE*2+CD*4
<==>    0>=CD*4,若CD<0与事实相悖。
假设CD=0,那么D可以当作在直径上
DE>=AC
==> DE>=AD
DE>=BC
==> DE>=BD
不妨设AD>=BD
有DE+AC>=BD+AD
==> AD>=AB,当且仅当AD是多条直径中的一条时成立有AD==AB成立,不然均与结论相悖。
证毕。 

所以前n-1长的边就是直径加上剩余所有点到直径两端点距离最大值的和了。

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#define LL long long int
using namespace std;
struct node
{
    LL p,d;
};
vector<node> g[100005];

LL n,a,b,c;
LL st,en;
bool vis[100005];
LL dis[100005];
node dfs(LL now,LL dis)
{
    node rec;
    rec.p=-1;
    if(vis[now])
    {
         return rec;
    }
    vis[now]=true;

    rec.p=now,rec.d=dis;
    for(int i=0;i<g[now].size();i++)
    {

        node px=dfs(g[now][i].p,dis+g[now][i].d);

        if(px.p==-1) continue;
        else
        {
            if(rec.p==-1) rec=px;
            else if(px.d>rec.d) rec=px;
        }
    }
    return rec;
}
void bfs(LL fr)
{
    queue<node> q;
    q.push((node){fr,0});
    vis[fr]=true;
    while(!q.empty())
    {
        node now=q.front();
        q.pop();
        if(now.d>dis[now.p])
            dis[now.p]=now.d;
        for(int i=0;i<g[now.p].size();i++)
        {
            node nx=g[now.p][i];
            if(vis[nx.p]==false)
            {
                q.push((node){nx.p,now.d+nx.d});
                vis[nx.p]=true;
            }
        }
    }
}

int main()
{
    cin.sync_with_stdio(false);
    while(cin>>n)
    {
        for(int i=1;i<=n;i++) g[i].clear();
        for(int i=0;i<n-1;i++)
        {

            cin>>a>>b>>c;
            g[a].push_back((node){b,c});
            g[b].push_back((node){a,c});
        }

        fill(vis,vis+n+1,false);
        st=dfs(1,0).p;
        fill(vis,vis+n+1,false);
        en=dfs(st,0).p;
        fill(dis,dis+n+1,0);
        fill(vis,vis+n+1,false);
        bfs(st);
        fill(vis,vis+n+1,false);
        bfs(en);
        LL ans=0;
        for(int i=1;i<=n;i++)
        {
            if(i==st) continue;
            ans+=dis[i];
        }
        cout<<ans<<endl;
    }

    return 0;
}

1268

水题

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#define LL long long int
using namespace std;

int main()
{
    cin.sync_with_stdio(false);
    LL a,b;
    while(cin>>a>>b)
    {
        LL x=__gcd(a,b);
        if(x==0) x=min(a,b);
        LL y=2*a*b;
        LL fix=__gcd(x,y);
        x/=fix,y/=fix;
        cout<<x<<‘/‘<<y<<endl;
    }

    return 0;
}
时间: 2024-10-13 11:48:54

CCPC2017湘潭 1263 1264 1267 1268的相关文章

[CCPC2017]湘潭邀请赛

题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/index/p/14/ D.模拟,按照原图每一个字符变成一个a*b的矩阵构造新矩阵. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 111; 5 int n, m, a, b; 6 char G[maxn][maxn]; 7 char GG[maxn][maxn]; 8 9 10 in

angularjs服务json文件实现省市区三级联动

最近刚做完一个项目,其中就有一功能点就是让用户填写信息时下拉选择省市区. 实现这个功能可以选择将全国的省市区数据全部存到数据库中,但是太复杂了,读取速度慢.每次都需要加载且对数据库造成负担,所以较为稳妥且简洁的方式就是将数据放在前端页面中. 其中,可以使用jQuery.angularjs或者将两者结合,本例将采用angularjs读取json文件的方式实现,其中将全部的省市区数据放在json文件中. 由于省市区json文件数据比较多,我们先展示效果,将代码放在后面与大家分享. 在此特别声明, 有

DirectShowNet 使用摄像头录像+录音

http://www.cnblogs.com/endv/p/6052511.html 1 // ------------------------------------------------------------------ 2 // CaptureTest.cs 3 // Sample application to show the DirectX.Capture class library. 4 // 5 // History: 6 // 2003-Jan-25 BL - created

【2016-11-2】【坚持学习】【Day17】【微软 推出的SQLHelper】

从网络上找到 微软原版本的SQLHelper,很多行代码.认真看了,学习了. 代码: 1 using System; 2 using System.Data; 3 using System.Xml; 4 using System.Data.SqlClient; 5 using System.Collections; 6 7 namespace Helper 8 { 9 /// <summary> 10 /// The SqlHelper class is intended to encapsu

hightmaps 按地图显示统计量

从extjs 到 easyui 到html5到hightchars 再到hightmaps.Exjts和easyui很相似,extjs是重量级的,easyui轻量级的,比extjs容易上手,照着demo改就可以开发了,easyui入门demo见:easyui-demo,或者到官网http://www.jeasyui.com/:会了easyui开发,上手html5界面开发也非常的快,大多类似的,到html5-demo界面开发 下载demo 然后把demo放到自己的web项目中或者访问http://

python之旅2

python基础 1整数 查看整数类型的方法 >>> a = 1 >>> dir(a) ['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getn

Java Swing 日期控件(转载)

1 package com.ryd.stocktrader.client.util; 2 3 import java.awt.Color; 4 import java.awt.GridLayout; 5 import java.awt.Label; 6 import java.awt.TextField; 7 import java.awt.event.ActionEvent; 8 import java.awt.event.ActionListener; 9 import java.awt.e

微软原版SQLHelper类

C# Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

axis2生成webservice客户端代码--commond

1. 下载axis2版本http://axis.apache.org/axis2/java/core/download.html 2.下载完成后解压,打开命令行,进入bin目录下,执行命令: ${installdir}>WSDL2Java -uri http://10.176.133.7:9080/zhptkzb/services/CarrySLPOS.jws?wsdl -p com.pcm.framework.utils -d adb -s 生成的代码则存储在bin\src下: Note:生成