当前位置:网站首页>Transform optimization problems into decision-making problems
Transform optimization problems into decision-making problems
2022-07-05 05:36:00 【Falling spring is only inadvertently】
Turn the optimization problem into a decision problem
Preface
It is a bit similar to the binary search problem , Translate the best answer into , Is there any equal to x Or a better answer .
Travel to Canada
The main idea of the topic
Dongjian decided to drive across Canada . Canadian 1 Highway is one of the longest highways in the world , It connects all major cities from east to West . Dongjian plans to start from the western city of Victoria , Go straight east along the highway , Go to 8030km Outside the eastern city of St. John .
This highway is famous for its numerous road signs ”. Because the highway passes n Major cities , And when we are about to reach a city , The number of road signs indicating the remaining distance is very large . Marked with a distance of i How far is the road sign of the city from before it arrives Mi Rice starts , With Gi Meter interval is set .
int n,k;
int l[5000],m[5000],g[5000];
// Decision making issues , arrive dist Can encounter k More than road signs
bool decision(int dist){
int ret = 0;
for(int i=0;i<n;++i){
// Can meet 1 More than i The road signs of a city
if(dist >= l[i]-m[i])
ret += (min(dist,l[i]) - (l[i]-m[i]))/g[i] + 1;
return ret>= k;
}
}
// Computation first k Location of road signs
int optimize(){
// Cyclic inequality : !decision(lo)&& decision(hi)
int lo = -1,hi = 80300001;
while(lo+1 < hi){
int mid = (lo + hi)/2;
if(decision(mid))
hi = mid ;
else lo = mid;
}
return hi;
}
Drop out course
The main idea of the topic
Bojun blindly chose more courses this semester , The result exceeded the credits . After getting the midterm grades , Because the grades did not meet the criteria for obtaining scholarships next semester , There is only one sigh left . Now? , He can only seize the opportunity to withdraw from the course starting next week .
The school will allocate scholarships according to the ranking after the mid-term and final exams . for example , A student chooses the first 1 There are courses c: Students attend classes . If this student's first i The mid-term ranking of courses is Ii,
that , The cumulative ranking of the student's mid-term exam will be defined as the following form .
∑ r i ∑ c i \frac{\sum_{}{}{}{r_i}}{\sum_{}{}{}{c_i}} ∑ci∑ri
If you drop out of the course , Then the withdrawn subjects will not be included in the cumulative ranking of the mid-term exam . School rules , Even if you drop out of the course , As long as the remaining courses exceed k individual , You can get scholarships according to the ranking . When Bo Jun withdraws from the course appropriately , Try to write a program to calculate the minimum cumulative ranking he can get .
Their thinking
Convert to decision(x) = Withdrawing courses appropriately can reduce the cumulative ranking to x The following
Turn into ∑ r i ∑ c i < = x \frac{\sum_{}{}{}{r_i}}{\sum_{}{}{}{c_i}} <= x ∑ci∑ri<=x
Finishing becomes
0 < = x ∑ c i − ∑ r i = ∑ ( x c i − r i ) 0<= x\sum_{}{}{}{c_i} - \sum_{}{}{}{r_i} = \sum_{}{}{}{(xc_i - r_i)} 0<=x∑ci−∑ri=∑(xci−ri)
int n,k;
int c[N],r[N];
// Decision making issues , Can the cumulative ranking be changed into average
bool decision(double average){
vector<double>v;
for(int i=0;i<n;++i)
v.push_back(average*c[i] - r[i]);
sort(v.begin(),v.end());
// Turn this question into ‘v in k Can the sum of the elements be greater than 0’ The problem of , Then use greedy methods to solve
double sum = 0;
for(int i = n-k;i<n;++i)
sum += v[i];
return sum >= 0;
}
// optimization problem , Calculate the minimum cumulative ranking that can be accumulated
double optimiza(){
// The cumulative ranking is [0,] The real number between
// Cyclic infinitive
double lo = -1e9 ,hi = 1;
for(int iter = 0;iter<100;iter++){
double mid = (lo + hi)/2;
// Can you reach the cumulative ranking mid
if(decision(mid))
hi = mid;
else
lo = mid;
}
return hi;
}
边栏推荐
- ALU逻辑运算单元
- Haut OJ 1316: sister choice buys candy III
- Animation scoring data analysis and visualization and it industry recruitment data analysis and visualization
- [es practice] use the native realm security mode on es
- Hang wait lock vs spin lock (where both are used)
- Codeforces Round #715 (Div. 2) D. Binary Literature
- A new micro ORM open source framework
- Codeforces Round #716 (Div. 2) D. Cut and Stick
- 挂起等待锁 vs 自旋锁(两者的使用场合)
- Chapter 6 data flow modeling - after class exercises
猜你喜欢
object serialization
Hang wait lock vs spin lock (where both are used)
Remote upgrade afraid of cutting beard? Explain FOTA safety upgrade in detail
读者写者模型
智慧工地“水电能耗在线监测系统”
Sword finger offer 06 Print linked list from beginning to end
【实战技能】非技术背景经理的技术管理
Fried chicken nuggets and fifa22
个人开发的渗透测试工具Satania v1.2更新
[to be continued] [UE4 notes] L1 create and configure items
随机推荐
Sword finger offer 58 - ii Rotate string left
Codeforces round 712 (Div. 2) d. 3-coloring (construction)
智慧工地“水电能耗在线监测系统”
Sword finger offer 05 Replace spaces
Animation scoring data analysis and visualization and it industry recruitment data analysis and visualization
AtCoder Grand Contest 013 E - Placing Squares
Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
Web APIs DOM node
剑指 Offer 53 - II. 0~n-1中缺失的数字
每日一题-无重复字符的最长子串
Zzulioj 1673: b: clever characters???
PC寄存器
软件测试 -- 0 序
To be continued] [UE4 notes] L4 object editing
Convolution neural network -- convolution layer
A preliminary study of sdei - see the essence through transactions
PC register
【Jailhouse 文章】Jailhouse Hypervisor
Service fusing hystrix
搭建完数据库和网站后.打开app测试时候显示服务器正在维护.