自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Romantic(扩展欧几里得模板)

裴蜀定理:任意整数 a, b,(a, b)|d ⇐⇒ ∃ 整数 x, y 使得ax + by = d,即ax+by=d,那么d一定是gcd(a,b)的倍数扩展欧几里得定理:对于两个不全为0的整数a、b,必存在一组解x,y,使得ax+by==gcd(a,b);题目中ax + by = 1,那么a,b需要满足互质,如果不互质就输出sorry,之后就是扩展欧几里得的模板,因为a,b互质,最后求得的r一定是1,会得到一组x,y的解,这里还有一个结论:假设d=gcd(a,b). 那么x=x0+b/dt.

2020-12-05 15:10:58 186

原创 Keywords Search(AC自动机板子题)

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e6+9;int trie[maxn][26];int cntword[maxn]; int fail[maxn]; int cnt = 0;void insertWords(string s){ int root = 0; for(int i=0;i<s.size();i++){.

2020-12-05 14:07:57 182

原创 Educational Codeforces Round 99 (Rated for Div. 2)——B. Jumps(思维,规律)

首先可以想到对于1,3,6,10…(三角形数)这些数直接向前跳就是最优解,那么根据这些数将其他数分隔,可以大致找到规律,1 1 1 2 1+2-1 33 1+2 24 -1+2+3 35 1+2+3-1 46 1+2+3 37 1-1+3+4 48 -1+2+3+4 49 1+2+3+4-1 ..

2020-12-01 13:10:00 175 1

原创 Codeforces Round #612 (Div. 2)——C. Garland(四维dp)

因为要求最小的值,可以想到用dp来做,然后就是最难想的部分,用几维dp,并且找到状态转移方程,因为可以想到题目要用被摘下的数填上去,那么就要记录这些数中奇偶分别有几个,这就要用两维,在加上位置和该位置的奇偶性,就需要四维,第一个数表当前位置,再两个数表示在该位置之前(包括该位置)已经用掉了多少奇数和偶数,最后一个数表示当前位置是奇数还是偶数,同时在输入时用pre数组记录一下每个位置之前分别有多少个0,那个dp中的中间两维不能超过该数,具体见代码#include<bits/stdc++.h>..

2020-11-24 21:17:59 160

原创 Codeforces Round #685 (Div. 2)——D. Circle Game

思路:比较典型的对称博弈,首先来看一下什么是对称博弈【博弈规则】:n 个棋子围成一圈, 两人轮流从中取走一或两个棋子, 不过取两个时必须是连续的棋子. 棋子取走之后留下空位, 相隔空位的棋子不连续。取走最后一个棋子的获胜。【博弈分析】:当n ≤ 2 n\leq2n≤2,先手必胜。当n ≥ 3 , n\geq3,n≥3,先手必败。无论先手怎么拿,后手都可以构造出不连通对称局面,模仿先手即可获胜。因为从原点出发,如果第一个人移动,第二个人的最优就是走另一个方向,直到有一个人出局#inclu..

2020-11-22 20:38:47 106

原创 CF1281——K for the Price of One (Easy Version/Hard Version)

简单和难的版本其实思路都一样,刚看到简单版的时候看到k只有2想直接贪心再模拟,但是在分类的时候有点难想,wa了几次,想了一下可以再贪心的基础上加上前缀和来记录前i件商品的总价,因为可以免单k-1件物品,那么其实购买的商品可以分成三类:前几件原价买的商品+k-1件免单商品+要付的一件,并且因为贪心的思想,这三种类型商品在数组的下标上是连续的,遍历k到n的商品用sum数组来记录价格,那么sum[i] =sum[i-k]+a[i];sum[i-k]是前面一件件买的商品,再加上a[i]的价格,然后遍历与所给金..

2020-11-09 18:27:52 120

原创 Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)——C. Division

看完题可以很快想到分两种情况,第一种很简单,p%q!=0,直接输出p即可,然后是分析第二种情况:我们首先记录下q的所有因子,然后对于每一个因子,用p去整除,直到p不能整除q,记录下这时的p,然后找到每一个因子对应的p,输出最大的ans即可#include<bits/stdc++.h>#define ll long longusing namespace std;int t;int n,m,x;int main(){ cin>>t; while(t--){ ve.

2020-11-01 22:08:00 1152 6

原创 Codeforces Round #677 (Div. 3)——D. Districts Connection

这题不要被样例骗了,仔细考虑过后其实很简单,首先排除只有一种帮派的情况输出:“NO”,之后只需要按照帮派的数值大小从小到大排序,将除了属于最大的帮派的地区跟排序后的最后一个地区连接,再把属于数值最大的帮派的地区跟排序后的第一个地区连接,这样就能保证两两间所属帮派一定不一样#include<bits/stdc++.h>using namespace std;const int maxn = 5e3+10;int t;struct node{ int id; int num;}a..

2020-10-30 23:34:25 126

原创 Codeforces Round #674 (Div. 3)——D. Non-zero Segments(思维,前缀和)

读完题还是能想到用前缀和的,用map记录前缀和是否出现过,从前往后遍历,如果出现过,ans++,sum = a[i],因为会插入新的数所以i以前的子串就不会再出现0的情况,只需要考虑后面的#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 200005;int n;int a[maxn];map<ll,int> m;int main(){ cin>..

2020-10-30 22:35:33 125

原创 Codeforces Round #676 (Div. 2)

思维题,通过推导两个样例可以知道回文字符串的对称轴一定是a[1]或者a[n],接着可以通过对称发现如果a[1]==a[3]或者a[n]==a[n-2],那么可以用两步将字符串变为回文,那么对于不符合的情况就需要将这个字符串变为上述两种情况,这也很简单,只需要进行操作:L 2 就可以变成a[1]==a[3]的情况,所以需要三步#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+10;char a[maxn]..

2020-10-29 14:53:54 104

原创 浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛——F 学长的白日梦

看完题直接套了快速幂模板,自己测试了几个大的数输出全是零,wa了两次后发现mod不是1e9而是1e10,(眼瞎。。。),这是由于快速幂里的x* x%mod因为mod太大导致爆了longlong,这里就需要加上把x*x改成快速乘#include<bits/stdc++.h>#define ll long longusing namespace std;int t;ll p = 9999999967;ll mul(ll a,ll b){ ll ans=0; while.

2020-10-24 20:08:40 141

原创 浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛——I 来解方程吧

这题算是高斯消元模板题,刚看到这题觉得模拟很复杂,百度了多元一次方程的解法后发现了一个叫高斯消元的方法,找到了模板加了一个多解的判断也就过了#include<bits/stdc++.h>using namespace std;int n,pl;double a[1001][1001];void Guess(){//高斯消元模板 int flag = 1;//记录是否有解 for(int i = 1; i <= n; i++) { pl = i; while(a[.

2020-10-24 20:01:03 100

原创 2018icpc南京——H - Magic Potion(二分图最大匹配,匈牙利算法)

读懂题之后很容易就能想到跟二分图最大匹配的模型很像,用hero和monster去匹配,可以直接·套版子,难点在于药瓶可以增加匹配路线,开始我想的很复杂,从边数的大到小排了序再去增加匹配,结果还是wa,后来想到在匈牙利算法中的matched数组已经存了匹配的点,那么我只要再跑一边匈牙利算法让剩下没有匹配的点也进行匹配,然后的到的结果ans2与k比较取较小者即可#include<bits/stdc++.h>using namespace std;const int maxn = 505;i.

2020-10-22 20:13:17 162

原创 2018icpc南京——A - Adrien and Austin

又是一道思维题,首先可以想到如果k = 1,那么如果n是奇数则必是Adrien赢,偶数就是Austin赢,然后考虑k > 1的情况,如果k大于1了,并且n是奇数那么Adrien可以第一次拿掉最中间的然后之后按对称Austin的位置去拿,就可以赢,那么如果是n是偶数就要之一如果k>=2那么Adrien一开始可以拿掉中间的两个来还原奇数的情况,所以还是Adrien赢,所以总结来说Austin赢的情况只有n = 0(特殊点) 或者n是偶数并且k=1,还要注意的是如果n<=k Adrien直接.

2020-10-22 18:39:18 169

原创 Codeforces Round #677 (Div. 3)

Codeforces Round #677 (Div. 3)C-Dominant Piranha分析:这题当时做的时候觉得很难,后来白天一想其实很简单,只要保证所有鱼不是等大的,那么一定可以找出一条最大的作为答案,遍历即可#include<bits/stdc++.h>using namespace std;int t; int a[1000005];int main(){ cin>>t; while(t--){ int n; cin>>n;

2020-10-21 22:38:56 196

空空如也

空空如也

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

TA关注的人

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