思想题
mengbi_er
一个蒟蒻JLoier
展开
-
Codeforces Round #421 (Div. 2) C. Mister B and Boring Game
题目大意按字母表顺序给出一个初始字符串s,长度为a,你可以任意添加b个字符,之后你的对手将加入a个不同的长度为a的后缀中未出现的字符(字典序加入),询问从l到r中最少出现几个不同字符。题解将前a个字符写出,我们可以发现,只有自己写出前面出现过的字符,对手写出的新字符个数才能尽可能少。而为了让区间中不同字符个数少,我们应写相同的字符,由于对手只写后a字符中未出现的字符,所以每次写的字符应是当前最后一个原创 2017-06-28 01:53:53 · 566 阅读 · 0 评论 -
bzoj3714: [PA2014]Kuglarz
这题真是妙啊,只要知道所有所有[1,i]的和就能确定最后的值,当我们知道sum[i-1],询问一次[i,j],就知道了sum[j],这样我们可以用最小生成树来解决问题。对于[i,j],连一条从i-1到j的边。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; in原创 2017-11-18 17:05:37 · 206 阅读 · 0 评论 -
Codeforces Round #440 (Div. 1) B. Something with XOR Query
题目大意给一个排列p和每个数对应的位置b,你可以询问2n次,每次两个数i,j,返回p[i]^b[j],求最后如果询问n^2次都不能确定的排列个数。题解询问所有0,i和i,0,之后就能得知所有数的两两异或(a[i][j]=a[i][0] ^ a[0][j] ^a[0][0]),然后就枚举第一个数是什么,暴力计算即可。#include<iostream> #include<cstdio> #includ原创 2017-10-16 07:49:29 · 480 阅读 · 1 评论 -
bzoj2257: [Jsoi2009]瓶子和燃料
由裴蜀定理,最后结果为所有数最大公因数,所以预处理公因数然后看最大的次数>=k的数。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int read() { char ch=getchar();int f=0; while(ch<'0'||ch原创 2017-09-22 08:43:35 · 301 阅读 · 0 评论 -
bzoj2405: 数字
打表找规律发现22680时出现循环,然后就随便搞搞。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define ll long long ll n,m,a[22681]; long long read() { char ch=getchar();l原创 2017-08-31 10:58:10 · 341 阅读 · 1 评论 -
bzoj2632: [neerc2011]Gcd guessing game
转学长博客。 传送门#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define N 10010 using namespace std; int n; int p[N],cnt; bool he[N]; void getp() { int i,转载 2017-07-26 09:50:08 · 333 阅读 · 0 评论 -
bzoj4706: B君的多边形
递推式: f[n]=(f[n−1]∗(6n−3)−f[n−2]∗(n−2))/(n+1) f[n]=(f[n-1]*(6n-3)-f[n-2]*(n-2))/(n+1) 预处理逆元即可。#include<iostream> using namespace std; int mod=1000000007; long long f[1000005],inv[1000005]; int main()原创 2017-07-24 16:57:06 · 705 阅读 · 0 评论 -
bzoj3444: 最后的晚餐
有两种情况输出0:成环和一个点度数为3以上,对于一条链可以翻转,所以答案2^链数*连通块个数阶乘。 写的太丑了QAQ.#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int read() { char ch=getchar();int f=0;原创 2017-07-16 14:34:27 · 276 阅读 · 0 评论 -
Codeforces Round #421 (Div. 2) B. Mister B and Angle in Polygon
题目大意给出正多边形边数n,一个角度a,选出三个顶点,使所成角度最接近a。题解由等弧所对的圆周角相等知·,一个顶点向其它所有顶点连一条线段,相邻两线段间夹角相等(定义为单位角),所以o(n)枚举选择单位角个数,判断是否更接近(似乎能o(1)做)。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #inc原创 2017-06-28 01:42:00 · 248 阅读 · 0 评论 -
bzoj3016: [Usaco2012 Nov]Clumsy Cows
右括号匹配不到答案加一,左括号多2个答案加一。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n,now=0,ans=0;char s[100005]; scanf("%s",s+1); n=strle原创 2017-07-05 19:24:31 · 261 阅读 · 0 评论 -
bzoj2717: [Violet 4]迷路的兔子
构造,太玄学了。#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n; cin>>n; printf("%d\n",n*(n-1)/2); for(int i=1;i<=(n>>1);i++)原创 2017-07-05 19:21:50 · 450 阅读 · 0 评论 -
bzoj1968: [Ahoi2005]COMMON 约数研究
计算每个数对答案的贡献。#include<iostream> using namespace std;int main() { int n; cin>>n; int ans=0; for(int i=1;i<=n;i++) { ans+=n/i; } cout<<ans; }原创 2017-06-26 14:42:58 · 211 阅读 · 0 评论 -
Codeforces Round #420 (Div. 2) C. Okabe and Boxes
题目大意两种操作: 1.向栈中加入x元素。 2.删除栈顶元素。 需要修改几次顺序能使序列单调递增。题解模拟栈。 add操作向栈中加入元素。 remove操作若栈顶元素等于remove次数,弹出栈顶。否则把栈清空,答案加1. (博主实在太弱啦,竟然想用单调栈和最长上升子序列)#include<iostream> #include<cstdio> #include<cstring> #inc原创 2017-06-26 13:14:15 · 295 阅读 · 0 评论 -
BZOJ2659: [Beijing wc2012]算不出的算式
式子转化成求(1,1)-((p-1)/2,(q-1)/2)矩阵中有多少个整数点…#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int read() { char ch=getchar();int f=0,x=1; while(ch<'0'||原创 2017-12-03 15:05:58 · 273 阅读 · 0 评论