自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 Codeforces Round #507 (Div. 1) B. Subway Pursuit 交互题

脑洞交互题   给出范围 系统会返回 yes no 来表示列车是不是在该范围内二分范围  然后范围差不多了 猜一下范围里面的一个点 然后继续二分范围 直到猜对   注意可以用cout<<endl清理缓存区#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ s...

2018-09-23 18:49:13 367 2

原创 Codeforces Round #507 (Div. 1)C. Network Safety

题意:给个n个点 m条边的图  每个点有个权值c 范围(0,2^k-1) 如果边的两个定点的权值不同 那么他们的连接就是安全的   现在有一个病毒  他的值x 在上述范围内随机   存在一个集合 <set<int>,int>前面 是点集 后面病毒值x  如果 x感染了 前面的点集的所有点后  (攻击就是  c=c^x)原来的连接仍然是安全的  就是合法的  让你求有多少个合...

2018-09-23 18:43:40 327

原创 Help Tomisu UVA - 11440 gcd+欧拉 加证明

紫书的思路 其中有个证明是看的 https://blog.csdn.net/a197p/article/details/45649019 的博客引用自 https://blog.csdn.net/a197p/article/details/45649019 那么先看一个证明:求kn中与n互质的个数,答案为kϕ(n)。ϕ(n)表示1-n中与n互质的个数,那么由此考虑[n + 1, 2n]...

2018-09-12 20:35:55 217

原创 Joseph's Problem UVA - 1363

紫书写的很清楚被除数固定,除数逐次加1,直观上余数也应该有规律。 假设k/i的整数部分等于p,则kmod i = k-i*p。 因为k/(i+1)和k/i差别不大,如果k/(i+1)的整数部分也等于p,则k mod (i+1) = k-(i+1)*p = k-i*p - p = k mod i - p。 换句话说,如果对于某一个区间i, i+1, i+2,…, j,k除以它们的商的整数部...

2018-09-12 17:58:15 211

原创 Double Patience UVA - 1637 dp+概率

注意 一个是等概率选择 则  d[i]为后继状态的成功概率的平均值  意思是  如果取了 牌堆 1 2的牌后 剩下的选择只有 取1 3 后才能成功  则取 1 2成功的概率 为  取 1 3的方案 即 1   除以总方案数#include<bits/stdc++.h>using namespace std;char card[9][4][3];map<vector&l...

2018-09-08 15:33:56 185

原创 筛法求Phi

void phi_table(int n){for(int i=2;i<=n;i++)phi[i]=0;//先初始化所有为0phi[1]=1;//小于等于1且与1互质的数 初始化为1for(int i=2;i<=n;i++)if(!phi[i])//如果这个数没有被改变过 说明这个数 i为素数 for(int j=i;j<=n;j+=i){ if(!phi[j])...

2018-09-08 13:30:00 360

原创 Irrelevant Elements UVA - 1635 二项式定理+唯一分解定理

 n个数 一层一层往下加就会形成类似杨辉三角形的形状 到了最后一行 系数呈现二项式定理分布 从 C(n-1,0)到C(n-1,n-1) 又因为m至少为2 所有C(n-1,0) C(n-1,n-1)可以不用算  又因为公式C(n,k)=(n-k+1)/kC(n,k-1)可用用递推关系算 只要在前一个的基础上乘以那个递推系数   #include<bits/stdc++.h>u...

2018-09-08 11:59:17 285

原创 Minimum Sum LCM UVA - 10791 gcd+lcm+唯一分解定理

这里的题目意思是 2个或2个以上的数组成的最大共因数是n并且使得这几个数的和最小  例如有两数 a b  不互质  即 gcd(a,b)!=1假设他们的最小公倍数 lcm(a,b)=n  即  a/gcd(a,b)*b  而a/gcd(a,b) 和n的最小公倍数也为n   反而和更小了  所以 应该取互质的数这里就要用到唯一分解定理了 其中有一些细节处理见代码#include<...

2018-09-07 21:24:26 200

原创 牛客练习赛25 最长区间

其中表示left_len right_len可以用一个Len[i] 表示 len[i]表示包括i的在i之前的最长递增序列 用Len数组可以很方便得记录到从x往左的left_len等于多少  然后向由可以推出right_lencnt[i ]计算每一个长度i的序列有多少个 其中 一个i的子长度的序列也会记录更新a[x]后 只会改变x左右的值 例如 如果ax比ax-1要小了 则len[x]=1;...

2018-09-06 22:33:51 195

原创 牛客练习赛25 因数个数和

https://blog.csdn.net/u011787439/article/details/82183783 大佬的博客写的很清楚  求1-n的因子个数和 就是从1-n中qu的数任意取一个数i 在1-n之间有多少是i的倍数 即[n/i]   因为n/i的结果也是 n的因数 所以可以只算 1-sqrt(n)  然后乘 2 , 因为n/i可以等于i,乘2重复计算了,还要减去这些重复计算的数  只...

2018-09-06 20:30:41 233

原创 Choose and divide UVA - 10375 唯一分解定理+Eratosthenes筛法

Eratosthenes筛法筛一遍素数 直接朴素判也能过 然后 写一个add_factorial算阶乘   add_integer用来唯一分解定理#include<bits/stdc++.h>using namespace std;bool is_prime[100000+5];vector<int>prime;int e[100000+5];void in...

2018-09-04 20:25:51 140

原创 Disgruntled Judge UVA - 12169 拓展欧几里得 +暴力

参考了 https://www.cnblogs.com/Przz/p/5409721.html 大佬的题解 他写的推导非常清晰 #include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod =10001;long long f[10005];void gcd(ll a,ll...

2018-09-04 17:02:32 166

原创 Bigger is Better UVA - 12105 dp

用两个数组 一个dp[i][j]表示用i根火柴 余数为j的数字最大位数 而p[i][j]记录一下这个位数中的最右边的那个数字是什么#include<cstdio>#include<cstring>using namespace std;const int maxn = 100 + 5;const int maxm = 3000 + 5;// dp[i]...

2018-09-02 21:18:04 161

原创 Fixing the Great Wall UVA - 1336 区间dp+前缀和+记忆化

紫书代码  dp中表示方向的p  因为机器人的有效位置肯定是i j两个点上 所以只要判断 是从左端点出发还是从右端点出发就能很快得计算出路程的时间  p=0时表示当前位于左边如果想要J+1 就要  j+1的标号x减去i的x  其他位置同理同时最后要加上 每个点时间为0的修理费用#include<bits/stdc++.h>using namespace std;const...

2018-09-02 20:24:55 167

原创 Dropping water balloons UVA - 10934 dp 有点难想

思路 dp[i][j]表示用i个球实验j次款所能测试的楼的最高层数  这个层数 不是从1开始的狭义的层数 是一个所能测的的层数的值  比如 在2 楼 如果所能测试的最高层数为5 则最高的所能测的层数位2+5=7如果气球破了 当前测试的楼层位k  dp[i-1][j-1]+1 ==k  如果没破 当前测试的楼层位k   dp[i][j]=k+dp[i][j-1]表示测试之后没破则 i个球测j...

2018-09-02 16:17:52 176

原创 Tango Tango Insurrection UVA - 10618 多转移dp 终点逆推

紫书的代码 多转移问题 从终点逆推 #include<cstdio>#include<cstring>#include<cassert>const int UP = 0;const int LEFT = 1;const int RIGHT = 2;const int DOWN = 3;const int maxn = 70 + 5;/...

2018-09-02 14:33:36 169

原创 Fund Management UVA - 1412 状压dp 状态的表示

太菜 看紫书代码看半天见注释 主要是状态难表达 转移倒是非常简单#include<cstdio>#include<cstring>#include<vector>#include<map>using namespace std;const double INF = 1e30;const int maxn = 8;const i...

2018-09-01 17:28:11 207

原创 Twenty Questions UVA - 1252 状压dp 子集生成

题意有点绕 等于说是求最优策略下 即排除方案最优的情况下   需要排除最多次的集合的排除次数  详见代码注释#include<bits/stdc++.h>const int maxn=13;char objects[300][200];int d[1<<maxn][1<<maxn],cnt[1<<maxn][1<<maxn],...

2018-09-01 15:31:01 144

原创 Headmaster's Headache UVA - 10817 dp集合构造

紫书dp 用位表示集合  其中位运算集合需要注意下#include<bits/stdc++.h>using namespace std ;int m,n,s;int d[150][1<<10][1<<10];int c[150];int st[150];string temp;const int INF=1<<20;int dp...

2018-08-31 22:14:12 185

原创 Perfect Service UVA - 1218 树形dp

紫书dp 主要是状态的确定  无根树转有根树 d(u,2)的状态转移很有意思 详见代码注释#include<bits/stdc++.h>using namespace std;int n;const int maxn=10000+5;const int INF=1<<20;vector<int>G[maxn],vertices;int p[ma...

2018-08-31 20:47:17 166 1

原创 Party at Hali-Bula UVA - 1220 树的最大独立集

紫书dp #include<bits/stdc++.h>using namespace std;int n;int cnt=0;int d[205][3],f[205][3];//d(u,0) f(u,0)标志以u为根的子树中不选u点所能得到的最大人数以及方案的唯一性 f(u,0)=k k==1唯一 0不唯一而d(u,1) f(u,1)则是取u点的最大人数 v...

2018-08-31 19:23:06 156

原创 POJ1651 dp 最优矩阵链乘

dp[i][j]   i j代表矩阵的边  dp[i][j]等于乘法次数状态转移:dp[i][j]=min(dp[i][k]+dp[k][j]+p[i]*p[k]*p[j])#include<cstdio>#include<iostream>#include<cstring>using namespace std;int a[105];in...

2018-08-28 21:32:18 181

原创 Color Length UVA - 1625 dp

紫书上的代码  其中运用了滚动数组  (i-1,j)    (0,j)   (i,j-1) (1,j-1) (i, j)    (1,j-1) (i,j+1) (i+1,j-1)   (i+1,j)      其中(i+1,j)要用上和左的数据  所以t 在每一行的循环结尾要 t^=1才能使用到上一行1的数据  #include<cs...

2018-08-28 20:45:34 134

原创 Planning The Expedition 暴力||二分

暴力题 枚举天数 数据量小直接枚举 大点可以二分  题意有点坑   type bj 是bj号的食物有一份  当时一直不知道 样例都过不去 也没想到暴力枚举  和贿赂投票那题枚举类似 但是更简单  #include<bits/stdc++.h> using namespace std; int a[105]; int m...

2018-08-15 11:41:36 178

原创 Codeforces Round #500 (Div. 2) [based on EJOI] Chemical table 图论 思维 求联通快

思路 当图形呈现1 1 1 1 0 0 1 0 0 1为有点 2为无点 时   就可以不同添加点了    1 0 0 0 1 0 1 0 0 这种情况时 1可以填入左或右   都能生成 另外 中间那个点对应的行或列 也就相当于  每个点的(x,y)看成x和y相连  (x1,y1)(x2,y2) ...

2018-08-14 17:18:58 187

原创 Photo of The Sky 数学

题意 给出2*n个 值 可以任意构成(x,y)的点 找出一种组合 使得一个矩形可以框住所有的点并且矩形最小可以简化成把2*n个值分成一个X集合和一个Y集合先把a数列排序分两种情况 1.数列的最大值和最小值在一个集合中 例如在X集合中  此时矩形的一条边为(xmax-xmin)已确知 即已经排序的数列的a[2*n-1]-a[0]  Y的边的值应该由Y确定 因为要包含在矩形里 所以要选择连...

2018-08-14 16:07:05 299

原创 D. Vasya And The Matrix 数学 思维 位运算

 推理过程如下a b c d e f g h i ⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇a b^e^h c^f^i d^e^f 0 0 g^h^i 0 0  其中   第一行 a^b^e^h^c^f^i ...

2018-08-13 18:22:08 271

转载 1016C - Vasya And The Mushrooms 前缀和模拟

看了作者:kimoyami: https://www.jianshu.com/p/6b226d8ee82f  翻译并注释CF上的题解  写的特别简单 码力++ 故转载了一下 #include<cstdio>#include<algorithm>using namespace std;long long sum123[2][300001],sum321[2][3...

2018-08-13 15:26:15 297

原创 B - Segment Occurrences substr操作

看到别人的代码 自己菜打了一堆  substr 解放双手 #include<iostream>#include<cstring>using namespace std;int a[1050];int main(){ int n,m,k,q,l,r,ans; memset(a,0,sizeof(a)); string s,t; ...

2018-08-13 00:07:49 202

原创 Codeforces Round #503 (by SIS, Div. 2) C Elections 暴力枚举贪心

贪心 打的时候思路对 但自己比较菜 码力不足   看了大神的代码#include<bits/stdc++.h>using namespace std;struct Node{int p,c;bool operator<(const Node&a)const {return c<a.c;}}node[3005];int x[3005];int ...

2018-08-12 19:39:50 457 1

原创 Codeforces Round #501 (Div. 3) Stars Drawing

题意  图中的*是否可以由 十字形的* 覆盖  (组成的十字架必须是从中心出发上下左右长度一样)十字架相互之间可以覆盖重叠    也就是两十字架可以公用边      这题简单和复杂两个版本都能暴力过去 就是遍历一遍数组 把每个十字架找出来然后标记一下  最后便利一下看有没有没有被标记到的*#include<bits/stdc++.h>using namespace std;c...

2018-08-12 17:54:31 181

原创 Walking Between Houses 贪心 码力

思路:码力测试 刚开始写菜得感人 看了大佬的代码发现写得特别简单  每次最少走一步s-k 剩余的步数如果大于n-2直接走最大的n-2 如果不足了就不用走了  因为前面已经减了每一步走的一格 #include <bits/stdc++.h>using namespace std;long long n, k, p = 1, ans[200005], temp;long...

2018-08-11 19:57:29 144

原创 牛客练习赛24 三轮 dp

5W的数据范围没想到背包能过 惊了dp[j+x]=dp[j]+dp[j+x]; x为物品体积 dp[x]为x体积下 的方案数    #include<bits/stdc++.h>using namespace std;int dp[100010];int main(){int n,m;cin>>n>>m;int x;dp[0]=1; ...

2018-08-11 13:08:25 141

原创 牛客练习赛24 凤凰 dfs

思路:因为和根节点相连的边每秒只能过一个 所以找到根的子节点中 子节点最多的那个根子节点 就是答案了#include<bits/stdc++.h>using namespace std;vector<int>G[1000010];int dfs(int x,int pre){int cnt=1;for(auto&v:G[x]){ if(v!=...

2018-08-11 13:05:50 240

原创 Change UVALive - 7503 思维

思路:枚举余下的钱   然后只要面值最大的钱用的多的组合可以凑成B 那所有情况都可以凑成 b 这里巧妙都用了递归 #include<bits/stdc++.h>using namespace std;int a,b;const double ex=0.0000001;int z[]={1,2,5,10,20,50,100,200,500,1000,2000,5000,...

2018-08-10 19:44:00 168

原创 CodeForces-651C 思维数学

思路:两边平方化简一下可以发现 x1==x2或者y1==y2时成立 算有多少个组合  就是算组合数  1+2+3......+n同时要减去相同的点的组合数 例如有2个(1,2) 3个(2,2)就要减去   (1  )+(2+1)  前者是(1,2)的重复数,后者是(2,2)的重复数   使用map可以很方便快捷地码完 其中cnt要用long long #include<bits/s...

2018-08-10 19:20:07 193

原创 Pagodas HDU - 5512 GCD 更相减损术

思路:a+b a-b所得出的为等差数列,其中等差数列的第一项 即为gcd(a,b) 因为该相减过程和 更相减损术类似  所以直接求出最大公约数  然后用N/gcd(a,b)   - 2如果为奇数则先走的赢 如果为偶数则后走的赢 ...

2018-08-10 19:02:05 135

原创 MU Puzzle HDU - 4662 思维

题意中要注意的是使后面的字串加倍是使所有的字串加倍 英文有毒   所有U都是3各I组成的 所以加倍只能有2 4 6 8 16 ....1<<n的I又因为可以同时删去UU  即删去6个I  所以如果一个串可以被生成 则该串后面 转换成的I数要么是2的幂 要么是2得幂-6的倍数#include<bits/stdc++.h>using namespace std;c...

2018-08-09 00:29:28 179

原创 String Problem CodeForces - 33B最短路FLOYD

思路: 预处理最短路 然后每个不同字符选两个串变成变成相同字母的最短路径      如果有a->b b->c则可以a->c因为可以无限次数都换   #include<bits/stdc++.h>using namespace std;char s1[1000010];char s2[1000010];int hua[30][30];int main(...

2018-08-09 00:24:22 238

原创 Duizi and Shunzi HDU - 6188贪心

思路 贪心 优先选择对子  同时要考虑123345的情况  即如果当前牌为单数 则对子选择完之后剩一张 如果 下一个点树有奇数张牌 并且 下下一个点树有牌存在 则组成顺子出掉  为什么下一个为奇数下下个有牌就出掉的  因为  当前点数剩余的一张 如果不顺掉就废了  而下一个点数如果为偶数 直接对子掉不会消耗下下个点数的牌  当下一个点数为奇数时,如果下下张有牌就出掉的原因是  如果下下个点数的总数...

2018-08-09 00:20:53 218

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除