LINK 题意:给出最左和最右两个数,要求往中间填n-2个数,使得相邻数间差的绝对值$∈[L,R]$ 思路:其实也是个水题,比赛中大脑宕机似的居然想要模拟构造一个数列,其实我们只要考虑作为结果的数,其结果必定是进行n-1次了+L -L +R -R 的其中一项,其最小值为$x*L-(n-1-x)*R$ 最大值则是$x*R-(n-1-x)*L$ 那么我们枚举x 其中只要有一种情况使b在区间中满足条件就行了 /** @Date : 2017-07-09 20:31:43 * @FileName: B.…
LINK 题意:树上NIM的模板题,给出一颗树,现有操作删去端点不为根节点的边,其另一端节点都将被移除,不能取者为败 思路:一看就是个NIM博弈题,只是搬到树上进行,树上DFS进行异或 记得#014D题也是博弈...巨水 比赛B题没想出来先做了这题:P /** @Date : 2017-07-09 21:15:04 * @FileName: D 树上删边 NIM 博弈.cpp * @Platform: Windows * @Author : Lweleth (SoungEarlf@gmail.c…
LINK 题意:水题 求取数,使得和为奇数或偶数的方案数. 思路:统计奇数和偶数,组合求一下发现结果就是$2^{odd-1} + 2^{eve-1}$ 注意特殊情况,即奇数个为0又要求和为奇数的方案数为0,其他情况最小也有1.然后就是很脑残的因为数据范围比赛中交了2次WA,本来写的就慢半天才看出来是2的幂次,还错两次... /** @Date : 2017-07-09 19:57:01 * @FileName: A.cpp * @Platform: Windows * @Author : Lwe…
题面 B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statement There are N squares in a row. The leftmost square contains the integer A, and the rightmost contains the integer B. The other squares are empty.…
http://agc017.contest.atcoder.jp/tasks/agc017_b B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statement There are N squares in a row. The leftmost square contains the integer A, and the rightmost contain…
在此处输入标题 标签(空格分隔): 未分类 A - Biscuits dp[i][0/1]表示当前和是偶数还是奇数,直接转移即可 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar(' ') #define enter putchar('…
又是一道思路特别清奇的题qwq...(瞪了一上午才发现O(1)的结论...差点还想用O(n)解决) 问题可以转化为是否能够由\(f_{1}=a\)通过\(\pm x \in[c,d]\)得到\(f_{n}=b\),于是考虑用数学方法解决 证明比较简单...就是...能想到这一点就很毒瘤了qwq...让我来随手拿一个样例举例qwq 输入样例2:4 7 6 4 5 输出样例2:NO 丝毫不想画图...太乱惹qwq 为了能看的更明白我还是画吧qwq(感谢GeoGebra) 注:横坐标表示框内数值,纵坐…
模的是这位神犇的代码:Atcoder AGC012F : Prefix Median 题意: 在动态中位数那道题上做了一些改动.给你一个序列a,可以将a重新任意排序,然后对于a序列构造出b序列. 假设a序列有2*n-1个元素,b序列有n个元素. 其中b[i]=Median(a[1],a[2],a[3]...a[2i-1]).求能够构造出多少个不同的b序列. 数据范围: 1<=N<=50,1<=ai<=2N-1 思路: 这道题真的是究极神题...虽然说代码实现比较简单,但是分析的过程…
#include<bits/stdc++.h>using namespace std;int n,a,b,sum;void dfs(int x,int y,int ban){    if(__builtin_popcount(ban^sum)==1){        printf("%d %d ",y,x^y);        return;    }    for(int i=0;i<n;i++)        if((~(ban>>i)&1)&…
\(给出n个数字,要求构造一个由这n个数组成的序列,使得|a_1-a_2|<=|a_2-a_3|...<=|a_{n-1}-a_n|\) \(排序后,从数列中间取个数,然后从左右分别循环取数,这样保证差值递增\) \(还是很巧妙地.\) #include <bits/stdc++.h> using namespace std; int t,n,a[100009]; int main() { cin>>t; while(t--) { cin>>n; for(i…