![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
构造
Ambrumf
这个作者很懒,什么都没留下…
展开
-
CF round739(div3) VP
A-C 水D:思路考虑暴力匹配n与1−2601-2^{60}1−260中二的幂次数,可以O(n)求出n中有p个非连续数位可以匹配上x的p个前缀,则通过操作使n等于x的代价为len(n)−p+len(x)−plen(n)-p+len(x)-plen(n)−p+len(x)−p。#include <bits/stdc++.h>using namespace std;typedef long long ll;ll mi[63];ll f(ll x, ll p){ vector&原创 2022-01-09 20:09:19 · 360 阅读 · 0 评论 -
CF 1620 E. Replace the Numbers 构造
思路:反向思考,建立x到px的映射表,如果输入的指令是第一类,直接按照映射表插入px,如果输入的指令是第二类,修改映射表,将x的映射px改为py。最后逆序输出。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e7 + 7;int x[N], y[N], op[N];vector<int> p;int main(){ ios::sync_with_st原创 2022-01-09 18:34:17 · 235 阅读 · 0 评论 -
CF 1616 C. Representative Edges
思路:O(n3)O(n^3)O(n3)枚举所有公差#include <bits/stdc++.h>using namespace std;typedef long long ll;double a[30000];bool equal(double a, double b){ if (abs(a - b) <= 1e-6)return 1; return 0;}void solve() { int n; cin >> n;原创 2022-01-08 19:53:38 · 509 阅读 · 1 评论 -
CF 1617 D2. Too Many Impostors 构造
思路:没三个连续的元素作为一组,查询n/3n/3n/3次。在所有的结果中必定至少有一组的结果为0,且至少有一组的结果为1;找到连续的两组(i,i+1,i+2),(i+3,i+4,i+5)满足前一组查询的结果为0,后一组查询的结果为1。然后查询(i+1,i+2,i+3),(i+2,i+3,i+4),根据以上四组结果的值我们可以在i-i+5的六个数中确定一个数一定为伪装者,确定另一个数为同伴。接下来尝试用每两次查询确定三个数的为伪装者还是同伴。根据之前n/3次查询的结果,我们再对每组数做两次额外的查询就可以确原创 2022-01-04 19:30:08 · 156 阅读 · 0 评论 -
CF1621 C. Hidden Permutations
思路:每个位置上出现的数字最终一定成为一个环,且若前一次查询中第i位置上的元素为xxx,则后一次查询时第i位置上的元素为PxP_xPx.那么我们可以利用这个性质在每个环中查找该环上的所有数,最多需要n+c次查询,c是一个小常数。#include <bits/stdc++.h>using namespace std;typedef long long ll;int ask(int x){ cout << "? " << x+1 << endl原创 2022-01-04 19:20:42 · 333 阅读 · 0 评论 -
CF1483 A. Basic Diplomacy 构造 贪心
思路:首先任意选取每一天邀请的朋友,如果存在一个朋友被邀请超过m/2次,不断选择一个该朋友被邀请的一天,将这一天邀请的朋友调整为任意一个其他朋友直到这个朋友被邀请的天数恰好等于m/2。若无法将被邀请的天数调整至m/2说明答案不存在。#include <bits/stdc++.h>using namespace std;typedef long long ll;vector<int> v[100005];int cnt[100006],ans[100006];void so原创 2022-01-02 21:43:08 · 180 阅读 · 0 评论 -
CF1503 B. 3-Coloring 构造
题解:采用类似国际象棋网格的形式构造数的填法。假设将棋盘分为黑白色,尝试用1填满白色区域,2填满黑色区域,在两种颜色都未填满时,输入1,2,3时优先用1,2填满对应颜色。当其中一种颜色填满时,用剩余的颜色填完棋盘的剩余区域。#include <bits/stdc++.h>using namespace std;typedef long long ll;int ma[200][200];int n,flag=0;void out(int op,int x,int y){ co原创 2022-01-01 18:16:47 · 241 阅读 · 0 评论 -
CF1503 A. Balance the Bits 暴力贪心
题解:符合要求的01串需满足首尾为1且0,1的个数都为偶数。括号序列的构造:前k/2个1为左括号,后k/2个1为右括号,0位置上左右括号轮换。#include <bits/stdc++.h>using namespace std;typedef long long ll;char a[200005],b[200005];bool check(char *c){ stack<int> s; int i=0; while(c[i]) {原创 2022-01-01 18:12:52 · 581 阅读 · 0 评论 -
CF 1536 C. Diluc and Kaeya(构造)
#define _CRT_SECURE_NO_WARNINGS#include <bits/stdc++.h>using namespace std;typedef long long ll;map<pair<int,int>,int> mp;int gcd(int x,int y){ return y==0?x:gcd(y,x%y);}void solve(){ int n; mp.clear(); scanf("%d",&原创 2021-10-23 17:01:33 · 189 阅读 · 0 评论 -
CF 1537 E1. Erase and Extend(构造)
#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,k,ok=0; cin>>n>>k; char t[5006]; int ans=n; cin>>t; for(int len=1原创 2021-10-23 17:00:22 · 106 阅读 · 0 评论 -
CF 1535C Unstable String
#define _CRT_SECURE_NO_WARNINGS#include <bits/stdc++.h>using namespace std;typedef long long ll;ll aa[200005],bb[200005],n;ll f(ll *p){ ll cnt=0,sum=0; for(int i=0;i<=n;i++) { if(p[i]==0 || i==n){sum+=cnt*(cnt+1)/2;cnt=0;原创 2021-10-22 10:25:05 · 58 阅读 · 0 评论 -
CF 1519D Maximum Sum of Products
#define _CRT_SECURE_NO_WARNINGS#include <bits/stdc++.h>using namespace std;typedef long long ll;ll aa[200005],bb[200005],n;ll f(ll *p){ ll cnt=0,sum=0; for(int i=0;i<=n;i++) { if(p[i]==0 || i==n){sum+=cnt*(cnt+1)/2;cnt=0;原创 2021-10-22 10:22:12 · 76 阅读 · 0 评论 -
CF 1538 F Interesting Function
#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ int T; scanf("%d",&T); while(T--) { int l,r; scanf("%d %d",&l,&r); int sum=0; while(l!=0 || r!=0) {原创 2021-10-22 10:19:48 · 84 阅读 · 0 评论 -
CF 1555 D. Say No to Palindromes(构造)
#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m; cin>>n>>m; string t,s="abc"; cin>>t; vector<vector<int>原创 2021-10-19 15:09:51 · 73 阅读 · 0 评论 -
CF 1594 C Make Them Equal
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=300005;bool notprime[N]={};ll prime[N],k=0;void pr(){ notprime[1]=1; for(ll i=2;i<=300000;i++) { if(!notprime[i])prime[++k]=i; for(int原创 2021-10-09 12:03:58 · 109 阅读 · 0 评论 -
CF 1151 D Min Cost String
#include <bits/stdc++.h>using namespace std;typedef long long ll;int n,k;void f(int pos,int &id){ if(pos==k+1)f(0,id); if(id>=n)return; cout<<(char)('a'+pos); id++; if(id>=n)return; for(int i=1;i+pos<=k原创 2021-10-08 19:59:00 · 43 阅读 · 0 评论