Codeforces Round #540 (Div. 3)(部分題解)

鏈接:http://codeforces.com/contest/1118
來源:Codeforces


文章目錄

  • A. Water Buying
  • B. Tanya and Candies(前綴和)
  • D1. Coffee and Coursework (Easy version)(貪心)
  • D2. Coffee and Coursework (Hard Version)(二分)


A. Water Buying

在這里插入圖片描述

??題意:用最小的花費買到剛好合適的東西.我們可以求出兩種方案的花費,最后輸出最小的即可.

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#define pi 3.1415926
#define mod 1000000007
#include<algorithm>
using namespace std;typedef long long LL;
const int Max_n=100005;
LL a[Max_n];int main(){int t;scanf("%d",&t);while(t--){LL n,a,b;scanf("%lld%lld%lld",&n,&a,&b);LL res,res1;if(n&1)	res=a+(n-1)/2*b;else res=n/2*b;res1=n*a;printf("%lld\n",res>res1?res1:res);} return 0;
}

B. Tanya and Candies(前綴和)

在這里插入圖片描述
??題意:給你一個數組,刪除其中一個元素,剩下的元素奇數位和偶數位的元素和相等,問這樣的元素有多少個.我們可以用兩個數組分別維護奇數位和偶數位的前綴和,當我們將某一個元素刪除時,前面的不變,后面的位置奇偶互換.此時奇數和就是:sum1[i-1]+sum2[n]-sum[i](sum保存的分別是奇數和與偶數和),偶數和就是:sum2[i-1]+sum1[n]-sum1[n]-sum1[i]

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;typedef long long LL;
const int Max_n=200005;
int sum1[Max_n],sum2[Max_n],a[Max_n];int main() {int n;scanf("%d",&n);for(int i=1;i<=n;++i){scanf("%d",&a[i]);if(i&1){sum1[i]=sum1[i-1]+a[i];//奇數和sum2[i]=sum2[i-1];//偶數和}else{sum1[i]=sum1[i-1];sum2[i]=sum2[i-1]+a[i];}}int ans=0;for(int i=1;i<=n;++i){int sumj,sumo;sumo=sum2[i-1]+sum1[n]-sum1[i];sumj=sum1[i-1]+sum2[n]-sum2[i];if(sumj==sumo) ans++;}printf("%d\n",ans);return 0;
}

D1. Coffee and Coursework (Easy version)(貪心)

在這里插入圖片描述

C. Magic Ship(二分天數):https://blog.csdn.net/qq_42217376/article/details/87895706
??題意:有一個作業需要寫m頁,你有很多杯咖啡(一組數據),數值就代表喝一杯咖啡能夠寫多少頁作業,在某一天你可以選擇喝任意杯咖啡,但是當天的第一杯咖啡的貢獻值是max(0,a1),第二杯就變成了max(0,a2-1),第三杯是max(0,a3-2),貢獻值依次類推,讓我們求最少多少天可以完成這些作業.上次寫船那道題有一個奇特的想法那就是二分天數來找到最優解.這里我們可以枚舉天數來找到最優解.(二分方法見下題.)

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;typedef long long LL;
const int Max_n=200005;
int a[Max_n];int main() {int n,m,sum=0;scanf("%d%d",&n,&m);for(int i=1;i<=n;++i){scanf("%d",&a[i]);sum+=a[i];}if(sum<m){printf("-1\n");return 0;}sort(a+1,a+n+1,greater<int>());for(int days=1;days<=n;++days){//枚舉天數int ans=0,cnt=0,b=0;for(int i=1;i<=n;i++){ans+=(a[i]-cnt);//假設我們當前有兩天,我們把數組分成2組(貪心的規則去分組),計算出每組的和,最后找到最合適的天數.if(i%days==0) cnt++;if(ans>=m){b=1;break;}}if(b){printf("%d\n",days);break;}}return 0;
}

D2. Coffee and Coursework (Hard Version)(二分)

在這里插入圖片描述

??題意同上題相同,只不過這里數據范圍變了,我們沒辦法在使用枚舉來求解這道題,此時就用到二分天數來求解.

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;typedef long long LL;
const int Max_n=200005;
int a[Max_n],m,n;bool check(int mid){LL sum=0;for(int i=0,days=0;i<n;i++){sum+=max(0,a[i]-days);if((i+1)%mid==0) days++;}return sum>=m;
}int main() {scanf("%d%d",&n,&m);for(int i=0;i<n;++i)scanf("%d",&a[i]);sort(a,a+n,greater<int>());int l=1,r=Max_n,days=0;while(l<=r){int mid=l+((r-l)>>1);if(check(mid)){r=mid-1;days=mid;}else l=mid+1;}printf("%d\n",days?days:-1);return 0;
}

轉載于:https://www.cnblogs.com/zut-syp/p/10543669.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249581.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

集合一些方法陷阱

一&#xff1a;asList 數組轉ArrayList陷阱&#xff1a; asList() 源碼&#xff1a;public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); } private final E[] a; ArrayList(E[] array) { if (arraynull) throw new NullPointerExcept…

java項目中的classpath

在java項目中&#xff0c;你一定碰到過classpath&#xff0c;通常情況下&#xff0c;我們是用它來指定配置/資源文件的路徑。在剛開始學習的時候&#xff0c;自己也糊里糊涂&#xff0c;但是現在&#xff0c;是時候弄清楚它到底是指什么了。 顧名思義&#xff0c;classpath就是…

C++命名空間(namespace)

在c中&#xff0c;名稱&#xff08;name&#xff09;可以是符號常量、變量、函數、結構、枚舉、類和對象等等。工程越大&#xff0c;名稱互相沖突性的可能性越大。另外使用多個廠商的類庫時&#xff0c;也可能導致名稱沖突。為了避免&#xff0c;在大規模程序的設計中&#xff…

P1556 幸福的路

題意&#xff1a;平面內有N頭牛$N\le 10$john從&#xff08;0,0&#xff09;出發&#xff0c;最后回到(0,0) 只有走到牛那里john才可以改變方向&#xff0c;否則沿著直線走 問john經過每一頭牛并且在每一頭牛出恰好改變方向一次的方案&#xff08;牛可以經過多次&#xff0c;但…

Class.getResource和ClassLoader.getResource

一案例驅動 二源碼分析 三類加載器ClassLoader 四總結 五參考 一案例驅動 最近加載文件的時候遇到了一個問題&#xff0c;很有意思&#xff01; 具體看下面案例代碼 public class TestClassLoader {public static void main(String[] args) {System.out.println(TestClassLoad…

spring-6、動態代理(cglib 與 JDK)

JDK動態代理與Cglib動態代理 JDK動態代理: 1.能夠繼承靜態代理的全部優點.并且能夠實現代碼的復用.2.動態代理可以處理一類業務.只要滿足條件 都可以通過代理對象進行處理.3.動態代理的靈活性不強.4.JDK 的動態代理要求代理者必須實現接口, , 否則不能生成代理對象. . 1 packag…

JDK安裝與配置(Windows 7系統)

1.前言 安裝之前需弄清JDK、JRE、JVM這幾個概念&#xff0c;不然稀里糊涂不知道自己在裝什么。 &#xff08;1&#xff09;什么是java環境&#xff1a;我們知道&#xff0c;想聽音樂就要安裝音樂播放器&#xff0c;想看圖片需要安裝圖片瀏覽器&#xff0c;同樣道理&#xff0c;…

UVA839

這道題又是一道遞歸的題目 先貼上代碼 //這種沒有明確說個數的動態分配還是得用new #include<cstdio> #include<iostream> using namespace std; struct mobile {int WL,DL,WR,DR;mobile *left,*right;mobile(mobile *aNULL,mobile*bNULL):left(a),right(b){} }; m…

Thread.getContextClassLoader與Thread.getClassLoader()區別

在閱讀spring boot啟動時候的源碼中&#xff0c;發現獲取classLoader使用的是getContextClassLoader于是乎產生了疑問&#xff0c;這種獲取ClassLoader的方式與我們最常見的通過Class.getClassLoader二者有什么區別&#xff1f;都是在什么場景下使用呢&#xff1f; 首先來看看…

ssl 的jks 生成工具

https://www.myssl.cn/tools/merge-jks-cert.html 通過key 私鑰 &#xff0c;和公鑰pem 生成jks 轉載于:https://www.cnblogs.com/vana/p/9594298.html

NOIP模擬賽10 題解

t3&#xff1a; 題意 給你一棵樹&#xff0c;然后每次兩種操作&#xff1a;1.給一個節點染色 &#xff1b; 2. 查詢一個節點與任意已染色節點 lca 的權值的最大值 分析 考慮一個節點被染色后的影響&#xff1a;令它的所有祖先節點&#xff08;包括自身&#xff09;的所有除去更…

洛谷 P1136 迎接儀式 解題報告

P1136 迎接儀式 題目描述 LHX教主要來X市指導OI學習工作了。為了迎接教主&#xff0c;在一條道路旁&#xff0c;一群Orz教主er穿著文化衫站在道路兩旁迎接教主&#xff0c;每件文化衫上都印著大字。一旁的Orzer依次擺出“歡迎歡迎歡迎歡迎……”的大字&#xff0c;但是領隊突然…

spring源碼分析-core.io包里面的類

前些日子看《深入理解javaweb開發》時&#xff0c;看到第一章java的io流&#xff0c;發覺自己對io流真的不是很熟悉。然后看了下JDK1.7中io包的一點點代碼&#xff0c;又看了org.springframework.core.io包的一些類和組織方式&#xff0c;當作是學習吧。總結一下。 先掛下spri…

對類Vue的MVVM前端庫的實現

關于實現MVVM&#xff0c;網上實在是太多了&#xff0c;本文為個人總結&#xff0c;結合源碼以及一些別人的實現 關于雙向綁定 vue 數據劫持 訂閱 - 發布ng 臟值檢查backbone.js 訂閱-發布(這個沒有使用過&#xff0c;并不是主流的用法)雙向綁定&#xff0c;從最基本的實現來說…

java.util.prefs.Preferences

我們經常需要將我們的程序中的設定&#xff0c;如窗口位置&#xff0c;開啟過的文件&#xff0c;用戶的選項設定等數據記錄下來&#xff0c;以做便用戶下一次開啟程序能繼續使用這些數據。 以前我們通常的做法是使用Properties類&#xff0c;它提供以下方法: void load(InputS…

django的母板系統

一.母板渲染語法 1.變量 {{ 變量 }} 2.邏輯 {% 邏輯語 %} 二.變量 在母板中有變量時,母板引擎會去反向解析找到這個傳來的變量,然后替換掉. .(點),在母板中是深度查詢據點符,它的查詢順序: 字典 > 屬性或方法 > 數字索引 三.過濾器 1.語法 {{ value|filter_name:參數}} 2…

python學習總結----時間模塊 and 虛擬環境(了解)

python學習總結----時間模塊 and 虛擬環境&#xff08;了解&#xff09; time- sleep&#xff1a;休眠指定的秒數(可以是小數) - time&#xff1a;獲取時間戳# 獲取時間戳(從1970-01-01 00:00:00到此刻的秒數)t time.time()print(t) - localtime&#xff1a;將時間戳轉換為對象…

【CSS】flex的常用布局

1、垂直居中&#xff0c;寫在父級上div{display: flex;justify-content: center;align-items: center; } 2、flex-左右兩端&#xff0c;垂直居中該布局在移動端較為常見<style> .wrap{display: flex;justify-content: space-between;align-items: center;width: 200px;he…

java.util.Properties

ava.util.Properties是對properties這類配置文件的映射。支持key-value類型和xml類型兩種 首先&#xff0c;新建一個文件&#xff0c;如圖&#xff1a; 然后再Java代碼段輸入如下代碼&#xff1a; import java.io.FileInputStream; import java.io.InputStream; import java…

Xpath使用方法

Xpath使用方法 注&#xff1a;默認死格式 先寫 //* 代表定位頁面下所有元素 1、Xpath支持ID、Class、Name定位功能 通過ID定位 //*[idkw]通過Class定位//*[classclass_name]通過Name定位//*[namename]-----------------------------------------------------------------------…