平时十二测

题解:

第一题:简单模拟:

#include<bits/stdc++.h>
using namespace std;

const int M = 500000;// up;
char s[M], ans[M];

int main(){
    freopen("expression.in","r",stdin);
    freopen("expression.out","w",stdout);
    int tot = -1;
    scanf("%s", s);
    int len = strlen(s);
    for(int i = 0; i < len;){
        if(s[i] == ‘+‘){
            ans[++tot]=‘+‘;i++;
            while(i<len&&s[i]>=‘0‘&&s[i]<=‘9‘)ans[++tot]=s[i++];
        }
        if(i==len)break;
        if(s[i] == ‘-‘){
            ans[++tot]=‘-‘;
            i++;
            int t=i;
            if(s[i]==‘0‘){ans[++tot]=‘0‘;i++;continue;}
            if(s[i]!=‘0‘){
                ans[++tot]=s[i++];
                if(i==len)break;
                int t=i;
                while(i<len&&s[i]==‘0‘){
                    ans[++tot]=‘+‘;
                    ans[++tot]=‘0‘;
                    i++;
                }
                if(i==len)break;
                if(s[i]==‘+‘||s[i]==‘-‘)continue;
                else {
                    ans[++tot]=‘+‘;
                    while(i<len&&s[i]>=‘0‘&&s[i]<=‘9‘){
                        ans[++tot]=s[i++];
                    }
                }
                if(i==len)break;
            }

        }
        if(s[i]<=‘9‘&&s[i]>=‘0‘&&i==0){
            while(i<len&&s[i]<=‘9‘&&s[i]>=‘0‘)
                ans[++tot]=s[i++];
        }
    }
    printf("%s", ans);
}

第二题:

#include<bits/stdc++.h>
using namespace std;

const int M = 400005, N = 100005;
int h[N], fa[N], tot = 1, dep[N], cnto, cnte, even[N], odd[N];
bool vis[M];
struct edge{int v, nxt;}G[M];
struct node{int u, v, id;}g[M];
void add(int u, int v){
    G[++tot].v =v, G[tot].nxt = h[u], h[u] = tot;
}
int dfs1(int u, int f){
    dep[u] = dep[f] + 1;
    for(int i = h[u]; i; i = G[i].nxt){
        if(vis[i])continue;
        int v = G[i].v;
        vis[i] = vis[i^1] = 1;
        if(dep[v]){
            if((dep[v]&1) == (dep[u]&1)){
                odd[u]++,odd[v]--,cnto++;
            }
            else even[u]++, even[v]--,cnte++;
        }
        else {
            fa[v] = i;
            dfs1(v, u);
        }
    }

}
void dfs2(int u){

    for(int i = h[u]; i; i = G[i].nxt){
        if(i == fa[G[i].v]){
            int v=G[i].v;
            dfs2(v);
            odd[u] += odd[v], even[u] += even[v];
        }
    }
}
int read(){
    int x = 0; int f = 1; char c = getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
    while(c<=‘9‘&&c>=‘0‘){x=x*10+c-‘0‘;c=getchar();}
    return x*=f;
}

int main(){

    freopen("voltage.in","r",stdin);
    freopen("voltage.out","w",stdout);
        int n = read(), m = read();
        int ans = 0;
        for(int i = 1; i <= m; i++){
            int u = read(), v = read();
            add(u, v);
            add(v, u);
        }
        dfs1(1, 0);
        dfs2(1);
        for(int i = 2; i <= n; i++)
            if(!even[i] && odd[i]==cnto) ans++;
        if(cnto == 1) ans++;
        printf("%d\n", ans);
}

第三题:

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std ; 

int L , N , jl[2005] , jr[2005] , rg[2005] , cok[2] , nw , ans , nd1 , nd2 ;
char ty[2005] ;  

void insert ( int l , int r )
{
    while ( rg[l] )
    {
        if ( rg[l] > r ) { int ll = l ; l = r + 1 ; swap ( rg[ll] , r ) ; }
        else if ( rg[l] < r ) l = rg[l] + 1 ;
        if ( rg[l] == r || l >= L ) return ;
    }
    rg[l] = r ;
}

int zh ( char x ) { if ( x == ‘(‘ ) return 0 ; return 1 ; }

void gao ( int l , int r )
{
    int mx = 0 ;
    while ( nw <= r )
    {
        if ( ty[nw] == ‘(‘ ) mx ++ ;
        else if ( ty[nw] == ‘)‘ )
        {
            if ( mx ) mx-- ;
            else { nd1++ ; mx++ ; }
        }
        nw++ ;
        if ( rg[nw] )
        {
            if ( rg[nw] > r && nw <= r )
            {
                insert ( r + 1 , rg[nw] ) ;
                insert ( nw , r ) ;
            }
            gao ( nw , rg[nw] ) ;
        }
    }
    if ( mx % 2 ) ans = -1e9 ;
    nd2 += mx / 2 ;
}

int main ( )
{
    freopen ( "parentheses.in" , "r" , stdin ) ;
    freopen ( "parentheses.out" , "w" , stdout ) ;
    scanf ( "%s" , &ty ) ;
    L = strlen ( ty ) ;
    scanf ( "%d" , &N ) ;
    for ( int i = 1 ; i <= N ; i++ ) scanf ( "%d" , &jl[i] ) ;
    for ( int i = 1 ; i <= N ; i++ ) scanf ( "%d" , &jr[i] ) ;
    for ( int i = 1 ; i <= N ; i++ )
    {
        if ( ( jr[i] - jl[i] + 1 ) % 2 ) { printf ( "-1\n" ) ; return 0 ; }
        insert ( jl[i] , jr[i] ) ;
    }
    while ( nw < L )
    {
        if ( !rg[nw] ) cok[zh ( ty[nw++] )]++ ;
        else gao ( nw , rg[nw] ) ;
    }
    while ( nd1 && nd2 ) ans ++ , nd1 -- , nd2 -- ;
    if ( cok[0] < nd1 || cok[1] < nd2 ) ans = -1e9 ;
    ans += ( nd1 + nd2 ) ;
    ans < 0 ? printf ( "-1\n" ) : printf ( "%d\n" , ans ) ;
}

原文地址:https://www.cnblogs.com/EdSheeran/p/9822131.html

时间: 2024-10-11 00:22:18

平时十二测的相关文章

平时二十二测

第一题水题未放,今天第二题又读入超时2000*2000的读入要快读啊,上次没长教训 第二题: 图论题.二维前缀和的应用. 最重要的: 这就是一棵树啊 标算为:对于不包含环的图,连通块数目=点数-边数,所以利用二维前缀和进行预处理,O(1)求出矩形区域内的边数和点数. #include<bits/stdc++.h> using namespace std; const int maxn = 2005; int sum[maxn][maxn], row[maxn][maxn], line[maxn

暑假第十二测

题解:第一题: 打表找规律,从12以后每次加49,我一直在前十找规律,,找了半天,以后还是多打点,学聪明点 #include <bits/stdc++.h> #define ll long long using namespace std; int zl[4] = {1,5,10,50}; ll ans[] = {0,4,10,20,35,56,83,116,155,198,244,292,341,390,439,488,537,586,635,684,733,782,831,880,929,

天猫技术专家:测试十二年,六道轮回后的初心能否找回

摘要: 本期作者简介:高翔,天猫技术部测试开发专家. 很久没写文章了,之前测试十年,也是在自己有变化的时候 ,强迫自己写了一篇文章,说了自己的困惑和痛苦和思考,也得到一些共鸣.现在测试十二年了,相当于一个轮回,也有一些新的痛苦和感悟,趁还在这个圈子里面,纪念一下,当然了,YY比较多,干货也不多,反正纪念下,或许我是真的不太可能写测试15年的文章了. 本期作者简介:高翔,天猫技术部测试开发专家. 很久没写文章了,之前测试十年,也是在自己有变化的时候 ,强迫自己写了一篇文章,说了自己的困惑和痛苦和思

第四十二章

第四十二章1 道生“肾” 道生一,一生二,二生三,三生万物. 道生出混沌之气,混沌之气分出阴阳,阴阳又交汇出新的物质,从而生出万物. 道在我们身体内体现为“肾精”,要保护好.各位朋友大家好,今天我们接着来聊<道德经>.我们来看看老子带给我们什么样新的人生启发了,每天启发一点,天天进步.今天我们开始学习第四十二章,非常开心.因为我们<道德经>已经学习到一半的位置了,因为整个八十一章,我们学习到第四十二章了,过了一半了,这时间也是飞快的.我之前预计3年,我估计现在2年差不多讲完了.因为

十二年IT职业生涯心得--致我们终将逝去的青春(连载)

章节001最近老婆带儿子回娘家住一段时间,一个人无聊的很,回到家安静的屋子让人很不适应.正好赶上世界杯,到家就把电视开开弄点动静出来,周末赛事熬了几个通宵.也趁着这"自由"的时间给自己写写总结! 话说long long ago专科毕业后雄心勃勃地去了当时业内号称的电脑公司工作,觉得凭自己的能力在电脑城能做出点名堂,而这一做就三年多.做的最多的就是接货送货(各种CRT显示器,各种主板,显卡,机箱,电源),拧螺丝,组装(给网吧装电脑的话一装就百来台,RJ45水晶头熟练到几乎闭着眼都能做),

JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了 一.Map概述 泛型< k,v> 键值对,映射关系 基本特点 该集合存储键值对,是一对一对往里存,而且要保证键的唯一性 1.添加 put(key ,values) putAll() 2.删除 clear() remove(ob

十二、Android UI开发专题(转)

http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=18736&page=1#pid89255Android UI开发专题(一) 之界面设计 近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的.本次专题分10节来讲述,有关OpenGL ES相关的可能将放到以后再透露.本次主要涉及以下四个包的相关内容: android.content.res 资源类 android.gra

【C++探索之旅】第一部分第十二课:指针一出,谁与争锋

内容简介 1.第一部分第十二课:指针一出,谁与争锋 2.第一部分第十三课预告:第一部分小测验 指针一出,谁与争锋 上一课<[C++探索之旅]第一部分第十一课:小练习,猜单词>中,我们用一个小游戏来总结了之前几课学习的知识点. 现在,终于来到第一部分的最后一个知识点了,也是C++的基础部分的最后一个讲题.之后进入第二部分,就会开始面向对象之旅.因此,这一课也注定不平凡.系好安全带吧,因为马力要加足了! 指针这个C系语言的难点(著名的C语言里也有指针),令无数英雄"尽折腰",也

第二十二篇 信念

第二十二篇  信念 "信念"能带给一个人无穷的力量,这些力量可以支撑自己走过漫长的人生.一个人如果没有信念,就很难找到自己的人生方向,所以"信念"也可以理解为希望. 信念可以给到我们希望,也可以给到我们力量,所以一个人的信念会影响到自己的整个人生.当然信念也有好坏之分,好的信念能让自己积极向上.不畏艰难:坏的信念会让我们不思进取.随波逐流.这两种不同的信念会给到我们两种完全不同的人生,就看亲人们如何作出正确的选择. 一个人活在世上,可以选择走正确的人生道路,依靠好的