
--贪心---
a1s4z5
这个作者很懒,什么都没留下…
展开
-
Hdu 5676 ztr loves lucky numbers
定义幸运数字为十进制表示下只有44和77,并且44和77的个数一样多的数。求不小于nn的最小幸运数字n≤1018n\le10^{18}(这是我称为数位贪心的一个题首先显然的是一个幸运数字的位数一定是偶数所以如果给出的nn的位数是奇数的话,可以直接构造一个444...777444...777作为答案如果是偶数的话依然是从高位到低位考虑记录当前的位置pospos,剩下的44的个数,剩下的77的个数,是否原创 2016-05-01 10:46:49 · 431 阅读 · 0 评论 -
Codeforces 349C - Mafia
Codeforces 349C - Mafia有nn个小朋友玩游戏。每一次游戏都必须有一个小朋友坐庄,其他的人作为playerplayer参加。对于小朋友ii,他希望至少有aia_i次游戏作为playerplayer参加,问至少需要多少次游戏才能满足所有小朋友的条件。二分游戏的次数,计算每个小朋友可以坐庄的次数,加和判断是否大于总次数即可#include<bits/stdc++.h>using n原创 2016-10-31 13:45:35 · 531 阅读 · 0 评论 -
Codeforces 347E - Number Transformation II
给出nn个数字xix_i,两个整数AA,BB(A−B≤106)(A-B \le 10^6)每一步可以做两个操作其中一个1 将AA变成A−1A-12 将AA变成 A−A(modx1)A - A \pmod{x_1}问将AA变成BB的最小步数。每次贪心的找到能减到的最小的大于等于BB的AA即可。如果一个A−A(modxi)<BA -A\pmod{x_i} < B ,那就可以将这个xix_i删掉。#inc原创 2016-10-31 13:44:13 · 578 阅读 · 0 评论 -
Codeforces 344E - Read Time
二分后贪心#include<bits/stdc++.h>using namespace std;#define LL long long const int maxn = 112345;const LL INFF = 0x3f3f3f3f3f3f3f3fll;LL h[maxn],p[maxn];int n,m;bool check(LL x){ int pos = 0;原创 2016-10-31 13:35:39 · 282 阅读 · 0 评论 -
Codeforces 344D - Alternating Current
桌上有两根相互缠绕的电线,问能否在符合题目要求的移动下将这两根电线解开不难看出相邻的两个同色线结是可以消去的,那么能否解开就等价于能否把线结消空。这样用一个栈模拟即可。#include<bits/stdc++.h>using namespace std;const int maxn = 112345;char arr[maxn];stack<char> S;int main(){ sca原创 2016-10-30 22:10:33 · 306 阅读 · 0 评论 -
Codeforces 344C - Rational Resistance
刚开始有一个阻值为1的电阻。每次可以将一个电阻和某个阻值为1的电阻串联或者并联来获得一个新的电阻,问至少需要多少个阻值为1的电阻能凑出阻值为ab(1≤a,b≤1018)\frac{a}{b}(1 \le a,b\le 10^{18})的电阻假设当前手头上有xy\frac{x}{y}的电阻,那么每一次加电阻可以将其变为xx+y\frac{x}{x+y}或者x+yy\frac{x+y}{y}的电阻。通过原创 2016-10-30 22:07:31 · 332 阅读 · 0 评论 -
Poj 3140 Contestants Division
水题,一遍dfs就好#include<vector>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;#define LL long long const int maxn = 112345;vector<int> edge[maxn];void init(int n){ for(int原创 2016-07-18 09:46:26 · 276 阅读 · 0 评论 -
Hdu 5720 Wool
总的来说大概就是一个区间并嗯。。。#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;#define LL long longconst int maxn = 112345;LL arr[maxn];pair<LL,LL> seg[maxn];int main(原创 2016-07-18 08:04:38 · 255 阅读 · 0 评论 -
Hdu 5719 Arrange
简单的加加减减去强行写一个树状数组也是没谁了…已经有官方题解了窝就贴一个代码嗯#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define LL long longconst int maxn = 112345;const int mod = 998244353;int arr[maxn];i原创 2016-07-18 08:02:16 · 249 阅读 · 0 评论 -
sdut 3254 stars
给出平面坐标的n(n≤400)n(n\le 400)个整数点(坐标为(x,y)(0≤x,y≤n)(x,y)(0\le x,y\le n),求最小的边长为整数的能至少覆盖kk个点的矩形的面积考虑到n只有400,我们可以枚举矩形的平行于x轴的两条边的坐标,这样的话就退化为了给出一个数组求一个最小的区间并且区间内的数的和大于等于k,这部分可以用双指针来做为了方便起见,我们可以预处理一下二维前缀和其它的细节原创 2016-05-30 17:42:35 · 512 阅读 · 0 评论 -
NOI2014起床困难综合症
按二进制位考虑,每一个位在做了那些操作之后,最后的结果是唯一的,那么从高位到低位开始贪心就好原创 2016-05-02 10:20:40 · 346 阅读 · 0 评论 -
Hdu 5661 Claris and XOR
一句话题面系列 求max(x⊕y)max(x \oplus y) x∈[a,b],y∈[c,d]1≤a≤b≤1018,1≤c≤d≤1018x\in [a,b] , y \in [c,d] 1 \le a \le b \le 10^{18} , 1\le c \le d \le 10^{18}题面就这样了,然后怎么做呢让我们来考虑两件事情第一件事情 两个数要比较大小的话,是从最高位开始比较原创 2016-04-18 12:58:58 · 491 阅读 · 0 评论 -
Codeforces 350E - Wrong Floyd
简单的构造,通过AA数组的元素个数我们可以确定可以构造出来的图的边的上界。然后判断即可。#include<bits/stdc++.h>using namespace std;const int maxn = 3123;bool vis[maxn];int getnod(int n){ for(int i = 1;i<=n;i++) if(vis[i] == false) return i;原创 2016-11-02 12:20:37 · 589 阅读 · 0 评论