1. 程式人生 > >【NOIP2017模擬】密州盛宴

【NOIP2017模擬】密州盛宴

Description

這裡寫圖片描述

Solution

首先考慮當前的情況是否合法?先明白幾個前提:能夠被東坡吃到的菜要等於n,可以先判斷是否有解。每一刻雙方都應該在吃東西,這樣當我們倒序操作時,把0視作-1,1視作+1,在求字尾和的過程中,若是小於了-1,則說明東坡有不能吃到的菜,該方案不合法。如何調整方案能夠理論上最優有解?即當0越靠前時,能夠達到理論最優。同時發現,每當有一個0被提到了前面時,字尾和都會+1,現在就變成了求字尾和最小是多少,答案就變成了-x-1。

Code

#include<math.h>
#include<string.h>
#include<math.h>
#include<string.h> #include<stdio.h> using namespace std; #define fo(i,a,b) for(i=a;i<=b;i++) #define fd(i,a,b) for(i=a;i>=b;i--) const int N=1e6+5,M=1e5+5; typedef long long ll; struct arr{int l,r;}D[100005]; char c[N],S[N]; ll i,j,n,m,len,tot,num,ans,tim[M]; int main(){ do{ tot=0
; scanf("%lld%lld",&n,&m); if(n==0&&m==0) break; tot=num=0; fo(i,1,m){ scanf("%s",c+1);len=strlen(c+1); scanf("%lld",&tim[i]); num=0; fo(j,1,len) num+=(c[j]=='0')?-1:1; num*=tim[i];tot+=num; D[i]=(arr){D[i-1
].r+1,D[i-1].r}; fo(j,1,len) S[++D[i].r]=c[j]; } if(tot<0){printf("-1\n");continue;} tot=ans=0; fd(i,m,1){ num=0; fd(j,D[i].r,D[i].l){ num+=(S[j]=='0')?-1:1; if(tot+num<ans) ans=tot+num; } num*=tim[i]; tot+=num; if(ans>tot) ans=tot; } if(ans<0) printf("%lld\n",-ans-1);else printf("0\n"); }while(n||m); }

相關推薦

NOIP2017模擬盛宴

Description Solution 首先考慮當前的情況是否合法?先明白幾個前提:能夠被東坡吃到的菜要等於n,可以先判斷是否有解。每一刻雙方都應該在吃東西,這樣當我們倒序操作時,把0視作-1,1視作+1,在求字尾和的過程中,若是小於了-1,則說明東坡

NOIP2017模擬春思

Description Data Constraint Solution 首先可以先把A分解質因數,依照正常的套路一般都是在質因數上做文章。我們先想一想求某一個數的因數個數的方法,大概就是各質數組合而得,這題的想法也類似,想辦法把個個質數組合在一起

NOIP2017模擬8.5隊伍統計

優先級 con isp pla cnblogs noip 技術分享 freopen 100% Description 現在有n個人要排成一列,編號為1->n 。但由於一些不明原因的關系,人與人之間可能存在一些矛盾關系,具體有m條矛盾關系(u,v),表示編號

NOIP2017模擬8.8Trip

關系 pan 根據 大於 二叉 計算 我們 else freopen Description 多年之後,worldwideD厭倦競爭,隱居山林。 他的家鄉開始發展起了旅遊業,在一條很長的主幹道上,有N個旅遊景點,按順序編號為1到N。根據遊客們

NOIP2017練習跳躍切除子序列(模擬

class clock com goto def main std fail () 題意: 思路: 已放棄 1 #include <bits/stdc++.h> 2 typedef long long LL; 3 4 int main(){

JZOJ 5164、NOIP2017模擬6.25小A做CF

lds des dst ali 解法 參加 6.2 其它 () 日常吐槽:我......已經不想再說什麽了,8:20還要做初賽然後很心累:) 題目: Description 目標rating超過CLJ的小A最近在瘋狂做CF,話說這次CF在賽前十分鐘出了個相當

NOIP2017提高寶藏——(假)模擬退火入門

題目:luogu3959. 題目大意:給定一張圖,讓你選擇一棵生成樹,並選定一個根,那麼這棵生成樹的價格極即為每個節點的價格之和,一個節點的介個為這個節點到根的所經過的節點數乘上它到它的父親的邊權.現在要求輸出最小价格. 這道題一看到就像最小生成樹,然而很明顯最小生成樹是錯的. 考慮

5164. NOIP2017模擬6.25小A做CF

Description 目標rating超過CLJ的小A最近在瘋狂做CF,話說這次CF在賽前十分鐘出了個相當奇葩的預選題,要求十分鐘內必須做出這道題才能參加這次CF。 這道題是這樣的,給你一個N*N的矩陣,每行有一個障礙,資料保證任意兩個障礙不在同一行,任意兩個障礙不在同一

NOIP2017模擬二分圖+狀態壓縮DP Graph(好題)

題解 這道題其實是一個NP完全問題(23333),但是由於資料小啊,我們可以搞一搞。很容易發現,如果我們將一個點拆成兩個點,一個代表出點,一個代表入點。當增加了一條有向邊,就出點向入點連一條邊

jzoj5343NOIP2017模擬9.3A組健美貓

description solution 可以把點投射到以i座標為x座標,以a[i]為y座標的二維平面,考慮維護兩條斜率為1直線,點到直線豎直距離和即為答案,分別為維護多少個點在直線上,用兩個桶

NOIP2017模擬9.3A組摘果子

Description Input Output Sample Input 7 9 39 6 13 2 22 6 7 4 -19 5 28 6 -17 1 2 1

[JZOJ5344]NOIP2017模擬9.3A組摘果子

Description Solution 樹形依賴揹包裸模型 F[i][j]表示表示DFS序上第i~N個已經做完了,重量為j F[i][j]=max(F[i+1][j−weight[

NOIP2017模擬思維+轉化+圖論 徒然Children(好題)

題目描述 全世界都在談戀愛,只有我深愛著學習。——前言。 2333身為單身狗卻意外喜歡的吃狗糧的yuki堅信著:“自古紅藍出cp,黑白天生是夫妻,最是銷魂紅綠配,天然金紫成雙對,生死相隨紅與黃,白紫一逢春滿堂,千里緣牽白與綠,紅黑生來為相聚。”的cp配對原則

jzoj5340NOIP2017模擬9.2A組春思

description solution 分解質因數然後等比數列求和,可能沒有逆元(本程式沒有處理這種情況),這時候需要特殊處理。 code #include<cstd

noip模擬連環

!= ++ emc def lib 長度 似的 sof 答案 【題目描述】 惠子說:“連環可解也”。 這說明他是一個破解機關的高手,連連環都能解開,魯班鎖什麽的自然不在話下。一位魯班的後人非常不服氣,於是找到惠子,給他出了一道題。 他首先給了惠子

noip模擬德充符

amp 時間限制 一行 我們 但是 i++ 如果 time shuffle 時間限制:2s 內存限制:512MB 【題目描述】 申徒嘉和鄭子產都是伯昏無人的學生,子產因為申徒嘉是殘疾人,非常看不起他,於是想要刁難他。 子產給了申徒嘉 n個數 a1,a2...an。 現在他

noip模擬Fantasia

show line sum 後繼 模擬 什麽 問題 %d ide Time Litmit: 1000ms Memory Limit: 256MB Description 給定一張 $N$ 個點、$M$ 條邊的無向圖 $G$ 。每個點有個權值$W_i$。 我們

noip模擬最小點覆蓋

mes 都是 ons mar 長度 最小 一句話 標記 com Time Limit: 1000ms Memory Limit: 128MB Description 最小點覆蓋是指在二分圖中,用最小的點集覆蓋所有的邊。當然,一個二分圖的最小點覆蓋可能有很多

noip模擬2048

ans align span 模擬 現在 tdi ring 最大 說我 Time limit: 1000ms Memory limits: 256MB Description 2048曾經是一款風靡全球的小遊戲。今天,我們換一種方式來玩這個小遊戲。現在

NOIP2017練習函數變換(DP,dfs)

col close gin const cnblogs max 題意 .cn for 題意: 思路: 極限步數大概不會超過30 1 const max=100000; 2 var dp:array[1..max,0..2]of longint; 3