swust oj2611
来源:互联网 发布:淘宝买ps3是新机吗 编辑:程序博客网 时间:2024/06/06 08:36
简单模拟,写挫了,然后查了一天。。。。我去。。。。傻逼了。。。。。
因为,他,那个,最少掉一滴血,然后,就是最多1000血,就是1000到头。简单模拟
主要是结构体排序,我最后右端点没+n。无数次想放弃,。。。但是。。。终于找到了。。。。贼刺激
#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <cmath>using namespace std;double x , y;int n;struct Node{ double p , d; int pos;}node[1010];bool vis[1010];bool cmp(Node a , Node b){ return a.d > b.d;}int main(){ while(~scanf("%d %lf %lf",&n , &x , &y)){ memset(vis , 0 , sizeof(vis)); int i; for(i = 1 ; i <= n ; i++) scanf("%lf %lf",&node[i].p , &node[i].d), node[i].pos = i; sort(node + 1 , node + 1 + n , cmp); double t = x , de = 0; for(i = 0 ; i <= 3000 ; i++){ for(int j = 1 ; j <= n ; j++){ if(vis[j]) continue; if(t / x <= node[j].p / 100 ){ vis[j] = 1; de += node[j].d; break; } } t -= de; t += y; if(t <= 0) break; } if(t > 0) printf("What a pity eex!\n"); else{ printf("Luckly dog eex!\n"); int sum = 0; printf("%d ",i + 1); for(i = 1 ; i <= n ; i++) if(vis[i] == 1) sum++; printf("%d\n", sum); memset(vis, 0 ,sizeof(vis)); t = x ; de = 0; for(int i = 0 ; i <= 3000 ; i++){ for(int j = 1 ; j <= n ; j++){ // printf("t %lf %lf\n",t / x , node[j].p); if(vis[j]) continue; if(t / x <= node[j].p / 100 && vis[j] == 0){ vis[j] = 1; de += node[j].d; printf("%d %d\n",i , node[j].pos); break; } } t -= de; t += y; if(t <= 0) break; } } } return 0;}
0 0
- swust oj2611
- SWUST 2530
- swust Max Area
- SWUST OJ 1025
- SWUST OJ 1137 STICKS
- SWUST OJ 1804 二进制
- swust OJ 1515
- swust OJ 1619 中位数
- swust 2551 表达式求值
- SWUST OJ 2285
- swust.oj 0259
- swust.oj 0964
- swust.oj,0541
- swust.oj.319
- swust.oj.1013
- swust.oj.1015
- swust.oj.1072
- swust.oj.1076
- 单一事件中心管理组件通信
- Testlink环境搭建
- linux下用户管
- MFC bresenham直线算法与MidPoint画圆的总结
- MFC按客户区大小获取合适的主窗口大小
- swust oj2611
- Java面试题集(五)
- web.鼠标.阻止冒泡
- Node.js 适配器模式
- Svn环境搭建
- 虚拟机下三种网络模式
- 碎片知识点-01
- 一些linux的实用小知识
- AngularJS的常见指令,来看看你知道几个嘞