Tomorrow Peter has a Biology exam. He does not like this subject much, but d days ago he learnt that he would have to take this exam. Peter’s strict parents made him prepare for the exam immediately, for this purpose he has to study not less than minTimei and not more than maxTimei hours per each i-th day. Moreover, they warned Peter that a day before the exam they would check how he has followed their instructions.
So, today is the day when Peter’s parents ask him to show the timetable of his preparatory studies. But the boy has counted only the sum of hours sumTime spent him on preparation, and now he wants to know if he can show his parents a timetable sсhedule with d numbers, where each number sсhedulei stands for the time in hours spent by Peter each i-th day on biology studies, and satisfying the limitations imposed by his parents, and at the same time the sum total of all schedulei should equal to sumTime.
中文翻譯
Peter 在明天有一個生物考試。他不太喜歡這個科目,但在 d 天以前他就知道有這個考試。Peter嚴厲的父母命令他馬上開始準備考試,為了這個目的,他必須學習不少於 minTimei 以及不超過 maxTimei 小時在第 i天。此外,他們警告 Peter 在考試前一天他們會檢查他是否有遵照他們的指示。
因此,今天是 Peter 的父母要求他展示準備學習時間表的日子。但是這位男孩只算了他花在準備上的總時間sumTime,現在他想知道是否可以向他的父母展示一個時間表 schedule,其中包含d個數字,每個schedulei代表 Peter 每天在生物學習上花費的時間,滿足他父母的限制條件,同時總和為 sumTime。
輸入
The first input line contains two integer numbers d, sumTime (1 ≤ d ≤ 30, 0 ≤ sumTime ≤ 240) — the amount of days, during which Peter studied, and the total amount of hours, spent on preparation. Each of the following d lines contains two integer numbers minTimei, maxTimei (0 ≤ minTimei ≤ maxTimei ≤ 8), separated by a space — minimum and maximum amount of hours that Peter could spent in the i-th day.
第一行包含了兩個整數 d, sumTime (1 ≤ d ≤ 30, 0 ≤ sumTime ≤ 240) — 分別是 Peter 學習的天數以及準備的總時數。接下來的 d 行則都包含了兩個整數 minTimei, maxTimei (0 ≤ minTimei ≤ maxTimei ≤ 8),用空白間隔 — 代表著 Peter 第 i 天可以學習最小以及最大的時數。
輸出
In the first line print YES, and in the second line print d numbers (separated by a space), each of the numbers — amount of hours, spent by Peter on preparation in the corresponding day, if he followed his parents’ instructions; or print NO in the unique line. If there are many solutions, print any of them.
如果第一行印出 YES,下一行就要印出 d 個數字(用空白分隔),每一個數字代表著 — 小時的單位,Peter 每天花在準備上的時間,當然前提是如果他能遵守他爸媽的指示。要是無法,則印出 NO。而要是有多種解答 (每日時間),則印出任一一個就好。
那最簡單的方式就是讓每一天先以 minTime 來計算,若有剩餘,再去 max – min 中取值來計算
當然若第一個最小的迴圈就超過 sumTime,則我們也救不了 Peter 了哈哈…
C#解決方案
方案1
string[] first = Console.ReadLine().Split(' '); //split by space
int d = int.Parse(first[0]); //days
int sumTime = int.Parse(first[1]);
int[]minArr = new int[d]; //min value also use as the result
int[]leftArr = new int[d];
for(int i=0;i<d;i++)
{
var arr = Console.ReadLine().Split(' ');
var min = int.Parse(arr[0]);
var max = int.Parse(arr[1]);
sumTime-=min;
minArr[i] = min;
leftArr[i] = max-min;
}
if(sumTime==0){
Console.WriteLine("YES");
Console.WriteLine(String.Join(" ", minArr));
}
else if(sumTime<0){
Console.WriteLine("NO");
}
//still need more time
else{
for(int i=0;i<d;i++)
{
if(sumTime>leftArr[i]){
sumTime -= leftArr[i];
minArr[i]+=leftArr[i];
}
else{
minArr[i]+=sumTime;
sumTime = 0;
Console.WriteLine("YES");
Console.WriteLine(String.Join(" ", minArr));
break;
}
}
}
//still need more time!!
if(sumTime>0){
Console.WriteLine("NO");
}
其中的 minArr 被視為第一次最小的值以及最後的結果
要是跑完min value 還有剩餘的時數,就要對剩餘可行的時間 (max-min) 迴圈
並會更新 minArr的內容
Java解決方案
方案1
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] first = scanner.nextLine().split(" ");
int d = Integer.parseInt(first[0]); //days
int sumTime = Integer.parseInt(first[1]);
int[]minArr = new int[d]; //min value also use as the result
int[]leftArr = new int[d];
for(int i=0;i<d;i++)
{
String[] arr = scanner.nextLine().split(" ");
int min = Integer.parseInt(arr[0]);
int max = Integer.parseInt(arr[1]);
sumTime-=min;
minArr[i] = min;
leftArr[i] = max-min;
}
if(sumTime==0){
System.out.println("YES");
System.out.println(String.join(" ", Arrays.stream(minArr).mapToObj(String::valueOf).toArray(String[]::new)));
}
else if(sumTime<0){
System.out.println("NO");
}
//still need more time
else{
for(int i=0;i<d;i++)
{
if(sumTime>leftArr[i]){
sumTime -= leftArr[i];
minArr[i]+=leftArr[i];
}
else{
minArr[i]+=sumTime;
sumTime = 0;
System.out.println("YES");
System.out.println(String.join(" ", Arrays.stream(minArr).mapToObj(String::valueOf).toArray(String[]::new)));
break;
}
}
}
//still need more time!!
if(sumTime>0){
System.out.println("NO");
}
}
}
var uagb_data = {"ajax_url":"https:\/\/zyrastory.com\/wp-admin\/admin-ajax.php","uagb_masonry_ajax_nonce":"bb1fe03626"};
var uagb_data = {"ajax_url":"https:\/\/zyrastory.com\/wp-admin\/admin-ajax.php","uagb_masonry_ajax_nonce":"bb1fe03626","uagb_grid_ajax_nonce":"b895a645f5"};
( function() {
let elements = document.querySelectorAll( '.uagb-post-grid.uagb-block-567f2d62 .uagb-post-pagination-wrap a' );
elements.forEach(function(element) {
element.addEventListener("click", function(event){
event.preventDefault();
const link = event.target.getAttribute('href').match( /\/page\/\d+\// )?.[0] || '';
const regex = /\d+/; // regular expression to match a number at the end of the string
const match = link.match( regex ) ? link.match( regex )[0] : 1; // match the regular expression with the link
const pageNumber = parseInt( match ); // extract the number and parse it to an integer
window.UAGBPostGrid._callAjax({"btnBorderTopWidth":1,"btnBorderLeftWidth":1,"btnBorderRightWidth":1,"btnBorderBottomWidth":1,"btnBorderTopLeftRadius":30,"btnBorderTopRightRadius":30,"btnBorderBottomLeftRadius":30,"btnBorderBottomRightRadius":30,"btnBorderStyle":"none","overallBorderColor":"","block_id":"567f2d62","categories":"271","displayPostExcerpt":false,"displayPostComment":false,"displayPostImage":false,"imgSize":"medium","linkBox":false,"align":"center","orderBy":"rand","excludeCurrentPost":true,"postPagination":true,"pageLimit":0,"imageRatio":"2-3","imgEqualHeight":true,"UAGHideMob":true,"UAGHideTab":true,"UAGResponsiveConditions":true,"btnBorderLink":true,"btnBorderRadiusLink":true,"overallBorderLink":true,"overallBorderRadiusLink":true,"inheritFromTheme":true,"postType":"post","postDisplaytext":"No post found!","taxonomyType":"category","postsToShow":6,"enableOffset":false,"postsOffset":0,"displayPostDate":true,"excerptLength":15,"displayPostAuthor":false,"displayPostTitle":true,"displayPostTaxonomy":false,"hideTaxonomyIcon":true,"taxStyle":"default","displayPostTaxonomyAboveTitle":"withMeta","imgPosition":"top","bgOverlayColor":"#000000","overlayOpacity":"50","displayPostLink":true,"newTab":false,"ctaText":"Read More","inheritFromThemeBtn":false,"buttonType":"primary","btnHPadding":"","btnVPadding":"","columns":3,"tcolumns":2,"mcolumns":1,"width":"wide","order":"desc","rowGap":20,"rowGapTablet":20,"rowGapMobile":20,"columnGap":20,"bgType":"color","bgColor":"#f6f6f6","titleTag":"h4","titleFontSize":"","titleFontSizeType":"px","titleFontFamily":"","titleLineHeightType":"em","titleLoadGoogleFonts":false,"metaColor":"","highlightedTextColor":"#fff","highlightedTextBgColor":"#3182ce","metaFontSize":"","metaFontSizeType":"px","metaFontFamily":"","metaLineHeightType":"em","metaLoadGoogleFonts":false,"excerptColor":"","excerptFontSize":"","excerptFontSizeType":"px","excerptFontFamily":"","excerptLineHeightType":"em","excerptLoadGoogleFonts":false,"displayPostContentRadio":"excerpt","ctaBgType":"color","ctaBgHType":"color","ctaFontSize":"","ctaFontSizeType":"px","ctaFontFamily":"","ctaLineHeightType":"em","ctaLoadGoogleFonts":false,"paddingTop":20,"paddingBottom":20,"paddingRight":20,"paddingLeft":20,"contentPadding":20,"ctaBottomSpace":0,"ctaBottomSpaceTablet":0,"ctaBottomSpaceMobile":0,"imageBottomSpace":15,"titleBottomSpace":15,"metaBottomSpace":15,"excerptBottomSpace":25,"contentPaddingUnit":"px","rowGapUnit":"px","columnGapUnit":"px","excerptBottomSpaceUnit":"px","paginationSpacingUnit":"px","imageBottomSpaceUnit":"px","titleBottomSpaceUnit":"px","metaBottomSpaceUnit":"px","ctaBottomSpaceUnit":"px","paddingBtnUnit":"px","mobilePaddingBtnUnit":"px","tabletPaddingBtnUnit":"px","paddingUnit":"px","mobilePaddingUnit":"px","tabletPaddingUnit":"px","isPreview":false,"taxDivider":", ","titleLetterSpacing":"","titleLetterSpacingType":"px","metaLetterSpacing":"","metaLetterSpacingType":"px","ctaLetterSpacing":"","ctaLetterSpacingType":"px","excerptLetterSpacing":"","excerptLetterSpacingType":"px","useSeparateBoxShadows":true,"boxShadowColor":"#00000070","boxShadowHOffset":0,"boxShadowVOffset":0,"boxShadowBlur":"","boxShadowSpread":"","boxShadowPosition":"outset","boxShadowColorHover":"","boxShadowHOffsetHover":0,"boxShadowVOffsetHover":0,"boxShadowBlurHover":"","boxShadowSpreadHover":"","boxShadowPositionHover":"outset","borderWidth":"","borderStyle":"none","borderColor":"","borderRadius":"","blockName":"post-grid","equalHeight":true,"paginationBgActiveColor":"#e4e4e4","paginationActiveColor":"#333333","paginationBgColor":"#e4e4e4","paginationColor":"#777777","paginationMarkup":"","paginationLayout":"filled","paginationBorderColor":"#888686","paginationBorderSize":1,"paginationSpacing":20,"paginationAlignment":"left","paginationPrevText":"\u00ab Previous","paginationNextText":"Next \u00bb","layoutConfig":[["uagb\/post-image"],["uagb\/post-taxonomy"],["uagb\/post-title"],["uagb\/post-meta"],["uagb\/post-excerpt"],["uagb\/post-button"]],"post_type":"grid","equalHeightInlineButtons":false,"paginationType":"ajax","isLeftToRightLayout":false,"wrapperTopPadding":"","wrapperRightPadding":"","wrapperLeftPadding":"","wrapperBottomPadding":"","wrapperTopPaddingTablet":"","wrapperRightPaddingTablet":"","wrapperLeftPaddingTablet":"","wrapperBottomPaddingTablet":"","wrapperTopPaddingMobile":"","wrapperRightPaddingMobile":"","wrapperLeftPaddingMobile":"","wrapperBottomPaddingMobile":"","wrapperPaddingUnit":"px","wrapperPaddingUnitTablet":"px","wrapperPaddingUnitMobile":"px","wrapperPaddingLink":false,"wrapperAlign":"row","wrapperAlignPosition":"center","extended_widget_opts_block":{},"extended_widget_opts":{},"extended_widget_opts_state":"","extended_widget_opts_clientid":"","dateUpdated":""}, pageNumber, '567f2d62');
});
});
} )();
ai_front = {"insertion_before":"BEFORE","insertion_after":"AFTER","insertion_prepend":"PREPEND CONTENT","insertion_append":"APPEND CONTENT","insertion_replace_content":"REPLACE CONTENT","insertion_replace_element":"REPLACE ELEMENT","visible":"VISIBLE","hidden":"HIDDEN","fallback":"FALLBACK","automatically_placed":"Automatically placed by AdSense Auto ads code","cancel":"Cancel","use":"Use","add":"Add","parent":"Parent","cancel_element_selection":"Cancel element selection","select_parent_element":"Select parent element","css_selector":"CSS selector","use_current_selector":"Use current selector","element":"ELEMENT","path":"PATH","selector":"SELECTOR"};