构造
goto_1600
我何来寂寞,哪有寂寞可言。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CF1305E Kuroni and the Score Distribution(构造)
Link题意:思路:先构造1,n直到溢出了位置,然后考虑加n,如果单纯加n,那么对于前面贡献是n2\frac{n}{2}2n,然后发现n每隔2个数对前面的贡献都会减1,感性的理解,就是,之前n和一个值能匹配x,现在x变大了,n怎么匹配也匹配不了了,那么暴力加n知道刚好能满足m就行了,然后最妙的就是如何处理剩下的数,要造成0贡献,不如隔开构造,也就是说当前的最大值是max,前面有n个数,我们可以构造1e9-n*(maxv+1),1e9-(n-1)*(maxv+1)…代码://#pragma GC原创 2021-10-01 16:48:45 · 308 阅读 · 0 评论 -
E. Road to 1600(构造,打表)
题意:构造方格1~n*n,皇后和车的走法如图,皇后和车会走当前能走的位置中没走过的值最小的来走,如果没有花费就会加1并且跳到整个图中没走过中的最小的方格来走,让你构造一个矩阵,使得车的花费比皇后少。思路:n<=2显然是无解的,n=3可以通过打表打出来,然后想想怎么拓展,我们可以通过走蛇形矩阵的方法,先蛇形递增的摆放食物诱导皇后和车同轨迹走,最后让车和皇后走到n,1或者1,n,(取决于n的奇偶性),然后皇后会跳进子问题n=3的陷阱,那么皇后就输了。代码:// Problem: E. Road.原创 2021-09-02 17:38:01 · 286 阅读 · 2 评论 -
D. Diane
题意:让你构造一个长度为n的字符串,使得每一个子串都出现奇数次。思路:死活构造不出来,只知道每一个字母只能出现奇数次,有一个奇妙的性质没有挖掘到,就是相邻长度l和l+1的连续的字母两个一块构造的话就能出现奇数次,那么讨论讨论就行了,把两个字符串分开用别的字母就可以。注意1的特判。// Problem: C. Mikasa// Contest: Codeforces - Codeforces Round #735 (Div. 2)// URL: https://codeforces.com/con原创 2021-07-30 11:46:39 · 290 阅读 · 0 评论 -
牛客IOI周赛26-普及组 最短路
link:https://ac.nowcoder.com/acm/problem/219918思路:建立虚拟原点 31个点,如果a[i]>>k&1 就和k连一条边权为a[i]的无向边,比赛时候没想到这种建图=-=。// Problem: 最短路// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/11233/D// Memory Limit: 524288 MB// Time Limit: 2000原创 2021-06-04 22:47:40 · 411 阅读 · 0 评论 -
CF1217D Coloring Edges 构造
题意:选择最少的k种颜色给有向图中染色,让图中不存在只有一个颜色的环。思路:如果没有环那么就1个颜色,否则两个颜色,构造如下:有向边 a,b a>b染成1 否则染成2。因为环中的边不可能存在单调递增的情况,总会有下降的情况。#include<bits/stdc++.h>using namespace std;//#define int long long typedef long long ll;const int INF = 1e9;const int N=5010,原创 2021-05-06 11:55:07 · 230 阅读 · 0 评论 -
D. Enchanted Artifact
link题意:本题为交互题。有一个字符串s,只由字符’a’和’b’组成。每次你可以询问一个字符串,它会返回这两个字符串的编辑距离。为一个字符串经过修改,删除或插入操作得到另一个字符串,两个字符串编辑距离的定义为最小的操作次数,若返回值为0,那么就是字符串s。让你在n + 2操作内得出字符串s(n为字符串s的长度,未知)。思路:先问一个a ,问出他的长度,特判一下全b的情况,然后如果问出来是300的话也是全b,坑点=-=,不能询问超过三百的字符串,然后依次枚举位数,看答案的变化,直到问到编辑距离为0为原创 2021-04-15 20:49:22 · 249 阅读 · 0 评论 -
D - Irreducible Anagrams 字符串构造
题意:两个字符串之间如果是同构的,给定一个s,如果他存在一个同构串使得,他俩不能分割成大于1的同构串的话输出"Yes",否则输出"No"思路:由于分割成k个,我们可以把k个合并成两个,然后考虑特殊情况,如果长度为1那么可以,如果首尾单词不同,我们交换这两个也是可以的,例如abbb,交换得到bbba,这样只能分割自己本身,还有一种情况就是,不同单词有三个以上,例如A…B…C…A ,我们可以构造成C…A…A…B,那么也只能分割成1个了。#include<bits/stdc++.h>using原创 2021-04-14 16:38:43 · 172 阅读 · 0 评论 -
G - Subset with Zero Sum
link题意:要求在数组中选一些数,使得他们的和为0,i从1到n ,i-n<=a[i]<=i-1;思路:我们把等式变形一下,可以发现i-a[i]>=1 && i-a[i]<=n,然后我们按照这个建图,从i指向i-a[i],每个点都会有出度,这不是基环树嘛,那么图中的环可以发现把环上这些点加起来就是0。复杂度O(n)代码:#include<bits/stdc++.h>using namespace std;const int N=100001原创 2021-04-14 11:52:57 · 272 阅读 · 0 评论 -
E - Divide Points
link题意:让你将点的集合划分成两个,然后两集合之间的距离没有在集合内部出现。思路:一开始以为是二分图啥的,结果是思维,考虑把点划分成4类,00,01,10,11,0代表奇点,1代表偶点,然后如果存在两个不同类的点就可以划分,把00,11放在一起,01,10放在一起,如果符合的话,如果只存在一个集合的点,那么我们就把所有点就/2,改变其奇偶性,直到出现解位置。复杂度n*log2e6(写个jvavhhh)代码:import java.math.*;import java.util.*;原创 2021-04-14 11:49:55 · 210 阅读 · 0 评论 -
Vasya And Array
题目含义:给定一个长度为n的数列,给你m次操作 ,输入t,l,r ,如果t等于1的话说明l到r之间是不降序区间,t=0则相反,然后问你这所有询问是否有矛盾,如果无矛盾输入一组解。思路:定义一个差分序列,原数组flag[i]代表i与i+1是否呈不降序,那么可以发现t等于1的时候每次操作就等价于将a[l]++和a[r]–,然后我们把所有前缀和累加起来,如果flag大于0则a[i]=true,将所有t=0的询问放到容器里面处理,判断是否矛盾等价于s[y-1]-s[x-1]==y-x,s数组表示的是前缀和,如果区原创 2020-09-01 17:34:25 · 340 阅读 · 0 评论 -
构造AR
好久没写题解了,于是我不要脸的又回来了,这题算是水题,但是我并没有看出来,????,如果给定的n 存在a和b 使得a+b==n && a*b == n那么答案可以由a个A和b个R组成,那么一般的情况呢,可能会存在余数为k的情况,什么是余数为k的情况呢,就是在第一个放A后面几位放k个R接着再正常的放A然后放B,我们可以枚举放k然后质因数分解的方法看看是不是存在这样一个构造方案。#include<iostream>#include<cstring>using na原创 2020-07-17 18:10:00 · 276 阅读 · 0 评论
分享