首页 > 其他分享 >P8271 [USACO22OPEN] COW Operations S (思维)

P8271 [USACO22OPEN] COW Operations S (思维)

时间:2024-07-06 09:53:45浏览次数:15  
标签:Operations std USACO22OPEN COW int long && define

P8271 [USACO22OPEN] COW Operations S

思维题

遇到不明白的操作,尝试在纸上模拟操作过程,找到性质。

第一种操作目前没有什么特别的,有一个它不会改变字符的奇偶性。重点是第二个。我们容易发现 CO->W->OC 这样的过程,它实现了相邻位置的互换,这个性质正是冒泡排序的过程,所以字符的排列不再重要。

有了这个性质,操作一中的相邻也可以去掉。

现在可以考虑什么时候合法了。容易发现只有两种情况:

  1. C 为奇数,OW 都为偶数。
  2. C 为偶数,OW 都为奇数。

预处理每个字符的前缀和即可。复杂度 \(O(n)\)。

#include <bits/stdc++.h>
#define pii std::pair<int, int>
#define mk std::make_pair
#define fi first
#define se second
#define pb push_back

using i64 = long long;
using ull = unsigned long long;
const i64 iinf = 0x3f3f3f3f, linf = 0x3f3f3f3f3f3f3f3f;
const int N = 2e5 + 10;
int c[N], o[N], w[N];
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
	std::string s;
	std::cin >> s;

	s = "#" + s;
	int n = s.length();
	for (int i = 1; i <= n; i++) {
		c[i] = c[i - 1] + (s[i] == 'C');
		o[i] = o[i - 1] + (s[i] == 'O');
		w[i] = w[i - 1] + (s[i] == 'W'); 
	}	

	int q;
	std::cin >> q;
	while(q--) {
		int l, r;
		std::cin >> l >> r;

		int C = c[r] - c[l - 1], O = o[r] - o[l - 1], W = w[r] - w[l - 1];
		if(((C & 1) && !(O & 1) && !(W & 1)) || (!(C & 1) && (O & 1) && (W & 1))) std::cout << "Y";
		else std::cout << "N";
	}

	return 0;
}

标签:Operations,std,USACO22OPEN,COW,int,long,&&,define
From: https://www.cnblogs.com/FireRaku/p/18286930

相关文章

  • Create Operations and the Oracle Restart Configuration
    CreateOperationCreatedComponentAutomaticallyAddedtoOracleRestartConfiguration?CreateadatabasewithOUIorDBCAYesCreateadatabasewiththe CREATE DATABASE SQLstatementNoCreateanOracleASMinstancewithOUI,DBCA,orASM......
  • 有趣的Python库——CowSay
    有趣的Python库——CowSay安装:pipinstallcowsay命令式使用:cowsay-cpig-t你好,我是一只猪哦!输出:__________|你好,我是一只猪哦!|==========\\\\,.(_|,......
  • P3056 [USACO12NOV] Clumsy Cows S
    [USACO12NOV]ClumsyCowsS题目描述Bessiethecowistryingtotypeabalancedstringofparenthesesintohernewlaptop,butsheissufficientlyclumsy(duetoherlargehooves)thatshekeepsmis-typingcharacters.Pleasehelpherbycomputingthemi......
  • [题解]AT_abc249_f [ABC249F] Ignore Operations
    思路反悔贪心套路题。发现一个性质,当一个操作1生效意味着在这一步之前的所有操作都没用。那么考虑倒着枚举,对于每一个操作1的选取状态做一个简单的分讨:如果保留,那么这种情况下的答案就是之前的\(sum\)加上当前的\(y\)。如果不保留,继续往前走,\(k\leftarrowk-1\)。......
  • ProxmoxVE(PVE)使用IMG镜像文件,img/raw转qcow2
    第一步,创建虚拟机。第二步,登陆SHELL,具体登陆方法自己探索。使用WinSCP之类的软件把img2kvm和IMG镜像上传到ROOT目录,当然也可以使用wget命令下载到PVE宿主机。img2kvm下载地址:*注:第二种方法无需img2kvm。第三步:IMG转换第一种:chmod+ximg2kvm./img2kvmLEDE.img101vm-1......
  • P1474 [USACO2.3] Money System / [USACO07OCT]Cow Cash G
    有点水,但是细究还是有点意思的题目https://www.luogu.com.cn/problem/P1474一开始的代码:#define_CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<......
  • 【题解】 [USACO 2009 Mar] Cow Frisbee Team S
    题目描述题意分析从\(N\)个整数中取若干个(不能不选),且取的数之和为\(F\)的倍数的总方案数对\(10^8\)取余的值。思路这道题是一道二维线性DP。那么根据线性DP的解题方法。首先,找出题目的阶段性。这道题显而易见方案数随着选择的个数而变化,那么这道题就以选择的个数作为阶段......
  • 题解:P8267 [USACO22OPEN] Counting Liars B & U208878 晴天
    其实,这个题,只需要最简单的枚举,加上最简单的二分查找即可~\(1\leN\le1000\)?枚举吧~咋枚举?显然,最好状态下Bessie的位置一定是某个\(p_i\),否则差一个就会导致有个奶牛要说谎。所以我们枚举(理论来讲要先去个重,这样快一点,不过貌似数据没有重的~)\(p_i\),每次遍历这帮奶牛看看有......
  • [Javascript] Perform Set Operations using JavaScript Set Methods
    The "SetMethods" proposalintroduces7newmethodstoJavaScript/ECMAScript:union(setB):ReturnsanewSetcontainingallelementsfromtheoriginalsetandanothersetsetB.Thismethodeffectivelycombinesthemembersoftwosetswithoutd......
  • P3611 [USACO17JAN] Cow Dance Show S
    原题链接题解一句话总结:第\(i\)头奶牛继承场上\(k\)头奶牛里结束时间最短的code#include<bits/stdc++.h>usingnamespacestd;intn,t;intd[100005];intcheck(intk){priority_queue<int,vector<int>,greater<int>>q;for(inti=1;i<=n;i++)......