题目链接:点击查看

题目大意:给出n个点,用n-1条边连接,第i条边连接着点i与点(i+1)%n,也就是首尾相接组成了一个环,现在0表示点i连到点(i+1)%n的一条有向边,1表示点(i+1)%n连到点i的一条有向边,现在问最多可以从n个点中拿出几个点,使得任意两点都是不连通的

题目分析:这个题目完全可以抽象成二分图的模型,一开始建边然后跑匈牙利,可问题就是这个题目的数据范围,n给到了1e6,所以用匈牙利肯定是会超时的,我们再分析一下,这个题目虽然也是给点,给边,组成了有向图,可这个题目的有向图给的是一个环,换句话说我们可以从头遍历一遍,将其变成一个线性的问题,我们再来分析一下哪些情况可以将一个点拿出来加入到答案的集合中呢(当然是看了网上的题解才分析出来的):我们先假设0表示的是-->这个方向的边,1表示的是<--这个方向的边

  1. 若相同方向的边相邻的个数大于等于两个,我们就可以从中取出一个满足条件的点加入答案集合中,比如:

    1. a-->b-->c,这个时候就可以将点b取出
    2. a<--b<--c,同上
  2. 若相同方向的边交替出现大于等于两次,我们就可以选出一个点加入到答案集合中,比如:
    1. a-->b<--c-->d<--e,这时点c一定是满足条件的
    2. a<--b-->c<--d-->e,同上

这样线性遍历一遍就可以直接求出答案了,虽然不太会证明为什么是贪心,但看上去有点贪心的意思吧。。

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=210;int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);string s;cin>>s;int n=s.size();int ans=0;for(int i=0;i<n;i++){if(s[i]!=s[(i+1)%n])//首先满足相邻的边方向不同{if(s[i]!=s[(i+2)%n])//若后面集合中的边大于等于两条(上述情况1)ans++;else if(s[i]!=s[(i+3)%n])//若后面的集合交替出现大于等于两次(上述情况2)ans++,i++;}}printf("%d\n",ans);return 0;
}

CodeForces - 353E Antichain(贪心+思维)相关推荐

  1. Dreamoon Likes Coloring CodeForces - 1330C(贪心+思维)

    Dreamoon likes coloring cells very much. There is a row of n cells. Initially, all cells are empty ( ...

  2. 1450F The Struggling Contestant(贪心+思维)

    1450F The Struggling Contestant(贪心+思维) Codeforces Global Round 12 F. The Struggling Contestant 题面:Th ...

  3. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 1 /* 2 题意:n个头,m个士兵,问能否砍掉n个头 3 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 4 */ 5 #include <cstdio> 6 #i ...

  4. cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】

    分析 给出一堆数 可以通过相加或除2让它们全部变成奇数 如果全奇数返回0 由于奇数 + 偶数 = 奇数 所以只要有一个奇数就能把偶数和它相加不停的变成奇数 所以只要存在奇数,就可以返回偶数的个数 否则 ...

  5. 《C语言程序设计实践》————如何买玫瑰?(贪心思维)

    <C语言程序设计实践>----如何买玫瑰?(贪心思维) 要求:小慧过生日,小明要买玫瑰送她.每枝红玫瑰5元,满5支送1枝,满20枝送5枝.小明一共有n(n>10)元钱,最多能买到多少 ...

  6. CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)

    ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...

  7. codeforces数学1600day4[贪心数学公式推导CodeForces - 1151D ,思维CodeForces - 1085C,数论同余+组合计数 CodeForces - 1056B]

    A - Stas and the Queue at the Buffet CodeForces - 1151D 题目大意:就是给你n个人在排队,每个人都有一个ai值和bi值,每个人的不满意度就是f(i ...

  8. CodeForces - 1339C Powered Addition(思维+贪心)

    题目链接:点击查看 题目大意:给出一个由 n 个数组成的数列 a,选择一个最小的 k ,代表可以进行 k 次操作,对于第 t 次操作可以选择任意个位置使得 a[ i ] = a[ i ] + 2^( ...

  9. Codeforces 893 D Credit Card 贪心 思维

    题目链接: http://codeforces.com/contest/893/problem/D 题目描述: 每天晚上一个数值a,如果a>0表示今天收入a元,<0表示亏损a元,=0表示去 ...

最新文章

  1. 在Win 2003中配置ASP.net环境
  2. java 不知道类名_Java 中获取类名的三种方法,你知道几种?
  3. Spanner——Google的全球化分布式数据库
  4. Ajax — 第一天
  5. 用计算机怎么弹离人愁数字,拇指琴新手入门曲谱——离人愁
  6. 5G网络什么时候普及,5G手机可以用4G的手机卡吗,5G和4G什么区别
  7. 一行代码指定python下载源为清华源【只需修改一次】
  8. 服务器端 viewstate
  9. 【Power Query】使用Excel抓取淘宝天猫所有类目分类和cateId对应关系
  10. 【技术】UEFI基础服务:系统表
  11. DR,TUN,NAT优缺点
  12. 怎样在Excel顶部单元格操作锁定,技巧干货!Excel如何冻结首行单元格?
  13. Redis 源码解析(8) AOF持久化
  14. scanf输入回车问题
  15. 非典型程序员单板滑雪入门教程指北
  16. 天馈线测试仪是什么?
  17. LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)
  18. mac win7 计算机,苹果电脑win7单系统更换OS X系统
  19. Linux C语言磁盘U盘容量读取、目录列表读取、文件夹大小读取
  20. Java编程----函数

热门文章

  1. Elastic-Job任务类
  2. MySQL sql99语法—自连接
  3. SpringSecurity分布式整合之jwt和rsa说明
  4. 释放锁的逻辑-InterProcessMutex.release
  5. ConcurrentHashMap的源码分析-put方法第四个阶段
  6. MyBatis 源码解读-执行SQL
  7. 悔不当初:回顾进化之路
  8. HelloWorld程序的编译运行
  9. mybatisdb.sql
  10. 使用#传递参数防御SQL注入攻击