
贪心
syyyyyw
acmer一枚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj 2376
思路如下, 首先看最大的和最小是否把1到t包含,如果不能包含,输出-1 剩下的就贪心,在s小于当前的e+1时找最大的e,如果找不到,就退出,输出-1 否则就输出结果。 代码如下 #include #include #include #include using namespace std; struct Node { int s,e; }a[25005],temp; bool cmp(原创 2017-07-30 18:03:29 · 230 阅读 · 0 评论 -
poj 3614
贪心加优先队列 代码如下 #include #include #include #include #include using namespace std; typedef pair p; priority_queue,greater > q; p cow[2505],bot[2505]; int main() { int c,l; while(~scanf("%d%d",&c原创 2018-03-04 16:48:48 · 288 阅读 · 0 评论 -
poj 3262
就一个排序,代码如下 #include #include #include #include using namespace std; struct Node { int t,d; }a[100005]; bool cmp(Node a,Node b) { return a.t*b.d<b.t*a.d; } int main() { int n; while(~s原创 2018-01-25 13:41:30 · 269 阅读 · 0 评论 -
poj 3040
参考的别人的代码 代码如下 #include #include #include #define INF 0x3f3f3f using namespace std; int use[30];//记录当前取法的第i种面值取的个数 struct node { int v,b; }a[25]; int cmp(node a,node b) { return a.v<b.v; } int原创 2018-01-25 11:50:51 · 272 阅读 · 0 评论 -
poj 1862
代码如下 #include #include #include #include #include #include using namespace std; int main() { int n; while(~scanf("%d",&n)) { priority_queue q; for(int i=0;i<n;i++){原创 2018-01-25 13:20:50 · 213 阅读 · 0 评论 -
poj 3190
要用优先队列去维护结束的时间 代码如下 #include #include #include #include #include using namespace std; const int maxn=50005; int used[maxn]; struct Node { int pos,l,r; bool operator <(const Node &a) const{ retur原创 2017-09-03 08:54:36 · 194 阅读 · 0 评论 -
poj 2586
最近状态有点差,总是不是这里写错一点,就是那里写错一点; 亏损的放后面,可以保证公用 代码如下; #include #include #include//2 3为5和7 #include//1 4 为3 和 9 using namespace std; int main() { int s,d; while(~scanf("%d%d",&s,&d)){ int ans;原创 2017-08-26 19:27:01 · 216 阅读 · 0 评论 -
poj 2109
就这样吧,不是一个贪心题 代码如下 #include #include using namespace std; int main(void) { double n,p; while(cin>>n>>p) cout<<pow(p,1.0/n)<<endl; //指数的倒数就是开n次方 return 0;原创 2017-08-26 16:18:25 · 300 阅读 · 0 评论 -
hdu 5933
注意细节 从左向右,贪心 #include #include #include #include using namespace std; int main() { int t,cnt=0; scanf("%d",&t); while(t--){ int n,k; scanf("%d%d",&n,&k); int a[100005]; long long sum=0;原创 2017-08-14 20:54:28 · 232 阅读 · 0 评论 -
HDU - 5935
注意精度 速度不一定是整数 #include #include #include #include using namespace std; #define eps (1e-8) int main() { int t,cnt=0; scanf("%d",&t); while(t--){ int n; int a[100005]; scanf("%d",&n); a[0]=原创 2017-08-14 20:11:27 · 259 阅读 · 0 评论 -
Codeforces Round #386 (Div. 2) D
先插多的,再插少的; 代码如下 #include #include #include #include using namespace std; int main() { int n,k,a,b,p; char aa='G',bb='B'; scanf("%d %d %d %d",&n,&k,&a,&b); if(b>a) { swap(a,b); swap(aa,bb); //原创 2017-08-06 10:45:11 · 211 阅读 · 0 评论 -
UVALive 7483
就是贪心; 可以看自己写的贪心总结 区间3大问题 代码如下 #include #include #include #include using namespace std; struct Node { int l,u; }a[105]; bool cmp(Node a,Node b) { if(a.u==b.u) return a.l>b.l; return a.u<b.u; }原创 2017-08-19 22:22:57 · 262 阅读 · 0 评论 -
区间问题 贪心总结
今天无意间在紫书上发现了这个问题 分为3大类 其中有一类正好是前几天wa的题 第一类是选择不相交区间问题,即选择尽可能多的区间,使区间两两没有交点(a,b) 如果一个区间被另一个区间完全包含,那一定去选小的区间、 按照b从小到大排序 分两种情况 a2 a2>a1 如果完全不相交,就没有影响 否则只能二选一 不选区间2,实际的有效部分被区间2包含,所以就不能选 综上 选择原创 2017-08-19 10:43:44 · 618 阅读 · 0 评论 -
POJ 1017
贪心 关键是求除数是 可以(x+n-1)/n来求 代码如下 #include #include #include #include using namespace std; int main() { int a,b,c,d,e,f; while(~scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f)){ if(a==0&&b==0&&c==0&&d==0&原创 2017-08-10 15:37:35 · 177 阅读 · 0 评论 -
poj 2393
维护一个最小值就行 代码如下 #include #include #include #include using namespace std; int main() { int n,s; scanf("%d %d",&n,&s); long long sum=0; int mi=9999; for(int i=0;i<n;i++) { int c,y; scanf("%d原创 2017-08-10 11:41:37 · 153 阅读 · 0 评论 -
poj 1328
代码如下 一开始思路想用坐标来记录能装多少个小岛,但没给数据范围 换成小岛,就很容易写出来了。 代码如下 #include #include #include #include #include using namespace std; struct Node { double l,r; }; int cmp(Node a,Node b) { return a.l<b.l; } int原创 2017-05-26 09:32:40 · 175 阅读 · 0 评论 -
hdu 5461
想来想去感觉写起来好麻烦啊 最后存了6个数,直接暴力 看别人是这样写的 存到两个数组 如果坐标相同 就取两个最大值 否则那个就是最大值 代码如下 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; con...原创 2018-10-04 19:03:44 · 217 阅读 · 0 评论