hihocoder #1114

题目链接:http://hihocoder.com/problemset/problem/1114

终于开始刷hihocoder了~

 1 /*
 2  * Problem: hihocoder #1114
 3  * Author:  SHJWUDP
 4  * Created Time:  2015/4/2 星期四 14:29:53
 5  * File Name: 233.cpp
 6  * State: Accepted
 7  * Memo: function
 8  */
 9 #include <iostream>
10 #include <cstdio>
11 #include <cstring>
12 #include <algorithm>
13
14 using namespace std;
15
16 const int MaxA=1e5+7;
17
18 int N;
19 int arr[MaxA];
20 int bomb[2][MaxA];
21 int opA[MaxA], opB[MaxA], la, lb;
22 bool func(int *b) {
23     for(int i=1; i<N; i++) {
24         b[i+1]=arr[i]-(b[i]+b[i-1]);
25         if(!(0<=b[i+1] && b[i+1]<=1)) return false;
26     }
27     return b[N]+b[N-1]==arr[N];
28 }
29 void solve() {
30     bomb[0][0]=bomb[1][0]=0;
31     bomb[0][1]=0;
32     bool flag1=func(bomb[0]);
33     bomb[1][1]=1;
34     bool flag2=func(bomb[1]);
35     la=0; lb=0;
36     if(flag1 && flag2) {
37         for(int i=1; i<=N; i++) {
38             if(bomb[0][i] == bomb[1][i]) {
39                 if(bomb[0][i]) opA[la++]=i;
40                 else opB[lb++]=i;
41             }
42         }
43     } else if(flag1 || flag2){
44         int *b=flag1?bomb[0]:bomb[1];
45         for(int i=1; i<=N; i++) {
46             if(b[i]) opA[la++]=i;
47             else opB[lb++]=i;
48         }
49     }
50 }
51 int main() {
52 #ifndef ONLINE_JUDGE
53     freopen("in", "r", stdin);
54     //freopen("out", "w", stdout);
55 #endif
56     int T;
57     scanf("%d", &T);
58     while(T--) {
59         scanf("%d", &N);
60         for(int i=1; i<=N; i++) {
61             scanf("%d", &arr[i]);
62         }
63
64         solve();
65         printf("%d", la);
66         for(int i=0; i<la; i++)
67             printf(" %d", opA[i]);
68         printf("\n%d", lb);
69         for(int i=0; i<lb; i++)
70             printf(" %d", opB[i]);
71         printf("\n");
72     }
73     return 0;
74 }
时间: 2024-10-16 01:58:46

hihocoder #1114的相关文章

hihoCoder#1114 小Hi小Ho的惊天大作战:扫雷&#183;一

原题地址 回溯+搜索 枚举每个位置上能否放地雷,当第i个位置枚举完成后,第i-1个位置的情况就确定了,此时,检查第i-1个位置是否满足要求,即左右间隔为1的范围内地雷数是否等于申明数字,如果满足条件,那么继续搜索下去,如果不满足条件,抛弃这个搜索分支. 搜索完成后,将所有可行解按位置“与”一下 ,找到那些一定为地雷或一定为空的格子. 最后输出即可. 代码: 1 #include <iostream> 2 #include <cstring> 3 4 using namespace

[hihoCoder#1381]Little Y&#39;s Tree

[hihoCoder#1381]Little Y's Tree 试题描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每次小J会删掉这个树中的k条边,这棵树被分成k+1个连通块.小J想知道每个连通块中最远点对距离的和. 这里的询问是互相独立的,即每次都是在小Y的原树上进行操作. 输入 第一行一个整数n,接下来n-1行每行三个整数u,v,w,其中第i行表示第i条边边权为wi,连接了ui,vi两点. 接下来一行一个整数q,表示有q组询问. 对于每组询问,第一行一个正整数k,接下来一

hihoCoder 1175:拓扑排序二

题目链接: http://hihocoder.com/problemset/problem/1175 题目难度:一星级(简单题) 今天闲来无事,决定刷一道水题.结果发现这道水题居然把我卡了将近一个钟头. 最后终于调通了.总结起来,原因只有一个:不够仔细. 思路不用细说了,就是拓扑排序的简单应用.然而,一些不起眼的细节才是让你掉坑里的真正原因. 猜猜哪儿可能出bug? // A simple problem, but you can't be too careful with it. #inclu

HDU 1114 (dp 完全背包)

鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 Problem Description Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The i

hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)

题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x值是多少.这里还要再辅助一个val[k]表示处理到当前情况只错了k次的最小值是多少因为改变的不止是和弦还有初始值,可以看一下代码理解一下. #include <iostream> #include <cstring> #include <cstdio> #include &

hihocoder #1190 : 连通性&#183;四 点双联通分量

http://hihocoder.com/problemset/problem/1190?sid=1051696 先抄袭一下 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho从约翰家回到学校时,网络所的老师又找到了小Hi和小Ho. 老师告诉小Hi和小Ho:之前的分组出了点问题,当服务器(上次是连接)发生宕机的时候,在同一组的服务器有可能连接不上,所以他们希望重新进行一次分组.这一次老师希望对连接进行分组,并把一个组内的所有连接关联的服务器也视为这个组内

Hihocoder 太阁最新面经算法竞赛18

Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus 描述 Given an NxN 01 matrix, find the biggest plus (+) consisting of 1s in the matrix. size 1 plus size 2 plus size 3 plus size 4 plus 1 1 1 1 111 1 1

hihoCoder 1393 网络流三&#183;二分图多重匹配(Dinic求二分图最大多重匹配)

#1393 : 网络流三·二分图多重匹配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 学校的秋季运动会即将开始,为了决定参赛人员,各个班又开始忙碌起来. 小Hi和小Ho作为班上的班干部,统计分配比赛选手的重任也自然交到了他们手上. 已知小Hi和小Ho所在的班级一共有N名学生(包含小Hi和小Ho),编号依次为1..N. 运动会一共有M项不同的比赛,编号为1..M.第i项比赛每个班需要派出m[i]名选手参加. 根据小Hi和小Ho的统计,编号为i的学生表示最多同时参加

hihoCoder 1430 : A Boring Problem(一琐繁题)

hihoCoder #1430 : A Boring Problem(一琐繁题) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 As a student of the school of electronics engineering and computer science in Peking University, Kyle took the course named Advanced Algebra in his freshma