FOI冬令營 Day 3

目錄

  • T1、簽到題(sort)
    • 傳送門
    • Code
  • T2、送分題(queue)
    • 傳送門
    • Code
  • T3、簡單題(game)
    • 傳送門
    • Code
    • 咕咕咕

T1、簽到題(sort)

傳送門

原題:LOJ 2767

Code

//2019/2/14
//50pts
#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return x*f;
}
#define MN 1000005
int n,q,a[MN],pw2[35];
int d[MN][35];bool r[MN];
inline void solve()
{register int i,j;memset(r,0,sizeof r);int ret=0;r[n]=true;for(i=30;~i;--i){int ans=-1;for(j=1;j<=n;){if(r[j]){++j;continue;}int hr=d[j][i],k;for(k=j+1;!r[k-1]&&d[k][i]==hr;++k);if(r[k-1]){j=k;continue;}int tl=d[k][i],l;for(l=k+1;!r[l-1]&&d[l][i]==tl;++l);if(!r[l-1]) {puts("-1");return;}j=l;if(hr>tl){if(ans==-1) ans=1;if(ans==0) {puts("-1");return;}}else{if(ans==-1) ans=0;if(ans==1) {puts("-1");return;}}r[k-1]=true;}if(ans==1) ret+=pw2[i]; }printf("%d\n",ret);
}
int main()
{freopen("sort.in","r",stdin);freopen("sort.out","w",stdout);n=read();register int i,S,ans,j;pw2[0]=1;for(i=1;i<=30;++i) pw2[i]=pw2[i-1]<<1;for(i=1;i<=n;++i) a[i]=read();for(i=1;i<=n;++i) for(S=a[i],j=0;S>0;++j,S>>=1) d[i][j]=S&1;solve();q=read();register int p,val;while(q--){p=read();val=read();memset(d[p],0,sizeof d[p]);for(i=0;val>0;++i,val>>=1) d[p][i]=val&1;solve();}return 0;
}


/*只要考慮相鄰兩行的最高的不相同的位,記錄一下每個位的情況即可2019/2/14 21:48~22:14
*/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return x*f;
}
#define MN 1000005
int n,q,d[MN][31],f[31][2];
int pw2[31];
inline void add(int x,int y)
{register int i;for(i=30;~i&&d[x][i]==d[y][i];--i);if(i==-1) return;++f[i][d[x][i]>d[y][i]];
}
inline void dec(int x,int y)
{register int i;for(i=30;~i&&d[x][i]==d[y][i];--i);if(i==-1) return;--f[i][d[x][i]>d[y][i]]; 
}
inline int solve()
{register int i,ret=0;for(i=0;i<=30;++i)if(f[i][0]>0&&f[i][1]>0) return -1;else if(f[i][1]>0) ret+=pw2[i];return ret;
}
int main()
{freopen("sort.in","r",stdin);freopen("sort.out","w",stdout);n=read();register int i,j,S;for(pw2[0]=1,i=1;i<=30;++i) pw2[i]=pw2[i-1]<<1;for(i=1;i<=n;++i) for(S=read(),j=0;S>0;++j,S>>=1) d[i][j]=S&1;q=read();for(i=2;i<=n;++i) add(i-1,i);printf("%d\n",solve());while(q--){int pos=read();if(pos>1) dec(pos-1,pos);if(pos<n) dec(pos,pos+1);memset(d[pos],0,sizeof d[pos]);for(S=read(),j=0;S>0;++j,S>>=1) d[pos][j]=S&1;if(pos>1) add(pos-1,pos);if(pos<n) add(pos,pos+1);printf("%d\n",solve());} 
}

T2、送分題(queue)

原題:LOJ 2734 / 洛谷 如廁計劃

傳送門

Code

/*我們先考慮怎樣的序列是滿足條件的。不難發現,對于男生=女生的情況顯然每次都是一男一女如廁,充要條件是,對于任何一個后綴,男生<=女生,這很顯然而對于男生<女生的情況顯然是無解的對于女生>男生的情況,我們可以把多出來的女生變成男生,使他滿足上面的條件我們可以從頭開始往后掃,只要當前位是女生,且往后的女生>男生,就把這個女生變成男生不難發現,滿足條件的序列就是,對于任何一個后綴,男生<=女生換言之,就是從后往前的第i個女生的位置應該在從后往前的第2i個位置之后(不包括第2i個位置)從后往前掃,如果當前第i個女生的位置不對,就把她移到第2i個位置上,這樣貪心很正確假設第i個女生和2i匹配,那么ans=max{Val_i=pos_i-2i}對每個復讀串(設當前的長度為x,女生數為y)分別處理,那么每復讀一次,每個女生的 Val值減少2y-x所以,如果2y-x>0只需考慮第一個復讀串如果2y-x<0,只需考慮最后一個復讀串當然如果已經考慮到了第n個女生,之后的女生Val<0,就不用再掃啦2019/2/14 題解寫于2019/2/15 12:43 
*/
#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline ll read()
{ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}return x*f;
}
#define MN 100005
std::string s[MN];
ll n,m,l,ans,x[MN];
void solve(std::string &s,int siz)
{for(int i=siz;i--;--l)if(s[i]=='F'&&n) --n,ans=max(ans,2*n+1-l);
}
int main()
{freopen("queue.in","r",stdin);freopen("queue.out","w",stdout);register int i,j,y;n=read(),m=read();l=n<<1;for(i=1;i<=m;++i) std::cin>>s[i],x[i]=read();for(i=m;i;--i){register int siz=s[i].size();for(j=y=0;j<siz;++j) y+=s[i][j]=='F';if((y<<1)-siz>=0){solve(s[i],siz);l-=(x[i]-1)*siz;n-=(x[i]-1)*y;if(n<=0)break;}else{l-=(x[i]-1)*siz;n-=(x[i]-1)*y;solve(s[i],siz);if(n<=0) break; }}return 0*printf("%lld\n",n>0?-1:ans);
}

T3、簡單題(game)

傳送門

原題:LOJ 2731

Code

咕咕咕

Blog來自PaperCloud,未經允許,請勿轉載,TKS!

轉載于:https://www.cnblogs.com/PaperCloud/p/10386177.html

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

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

相關文章

委托事件觀察者模式

委托的默認返回類型&#xff1a;void 聲明委托的關鍵字&#xff1a;delegate 多播委托&#xff1a;將多個方法綁定到一個委托變量 在調用方法時 可以執行綁定的方法 委托的描述&#xff1a; 委托是一個類 定義了方法的類型 可以將方法當做另一個方法進行傳遞 委托并不等同于方法…

贏在CSDN——名利兼收

文章目錄&#x1f30a; 相識CSDN&#x1f30a; 益于CSDN流量將成為你我的亮點我的專欄收益到賬啦學習會員助你拿捏專欄更多曝光自己的機會CSDN問答為你準備的零花錢&#x1f30a; 忠于CSDN&#x1f30a; 相識CSDN 小編自注冊CSDN至今兩年有余&#xff0c;記得初衷也僅僅是為了…

124angular1實現無限表單(僅供自己看)

//將本行的內容對象作為參數&#xff0c;傳給點擊函數&#xff0c;點擊函數向后臺發送請求&#xff0c;把獲取的返回值作為內容對象的一個屬性。 (function (angular) {angular.module(myModule, []).directive(treeModel, [$compile, function ($compile) {return {restrict: …

了解 Vue SSR 這一篇足以

文章目錄1 - 什么是服務器端渲染&#xff1f;1.1 新建server文件夾1.2 生成一個node項目1.3 安裝express1.4 服務端渲染小案例1.5 運行查看效果1.6 打開瀏覽器1.7 右鍵查看源代碼2 - 什么是客戶端渲染&#xff1f;2.1 新建client文件夾2.2 生成一個vue項目2.3 安裝依賴并啟動2.…

3 數組中的重復數字

題目描述 在一個長度為 n 的數組里的所有數字都在 0 到 n-1 的范圍內。數組中某些數字是重復的&#xff0c;但不知道有幾個數字是重復的&#xff0c;也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。 Input: {2, 3, 1, 0, 2, 5}Output: 2 思路 給出了長度為n且數組…

小型軟件項目開發流程探討

一&#xff0e;導言國內很多項目都是小型項目, 參與人員少(兩到五個人), 要快速交付(一兩個月) . 要成功完成這種項目, 除了使用成熟且被團隊成員熟練使用的技術之外, 有一個良好的開發流程, 也是很必要的. 二&#xff0e;小型軟件項目開發流程下圖是我對小型軟件項目開發流程…

Vue2的核心原理剖析

? 用了這么久的Vue2了你真的 知其然&#xff0c;知其所以然么&#xff1f; ?今天博主就為大家帶來一篇對Vue核心功能的部分剖析\textcolor{pink}{今天博主就為大家帶來一篇對Vue核心功能的部分剖析}今天博主就為大家帶來一篇對Vue核心功能的部分剖析 ?后續文章會用更多小案…

Scrum之成敗——從自身案例說起,僅供參考

從07年中初次接觸Scrum的概念到其中幾年項目中逐漸實踐CI、TDD&#xff0c;到親自掌握項目實踐Scrum近一年&#xff0c;最終我們放棄了Scrum這個框架和所謂的“自組織”。原因為何&#xff1f; 1.成員放棄了Scrum所“賦予”的“權利” 比如領用任務、評估工作量、自組織協作、決…

sanic官方文檔解析之下載和Configuration

1,sanic框架是做什么的? sanic的官方網址:https://sanic.readthedocs.io/en/latest/sanic框架是一個類似于flask框架的在Python3.5以上版本的文本服務器,他能夠快速的編寫,它是通過驚人的開發效率完成開發,希望通過這篇文章得到激勵sanic框架的理念是:簡單,高效 sanic的應用如…

首秀 Express 框架

文章目錄框架特性express的使用初始化項目&#xff1a;下載框架模塊&#xff1a;測試代碼&#xff1a;總結以上代碼&#xff1a;請求處理的中間件概念&#xff1a;中間件——app.use基本用法&#xff1a;next的用法app.use中間件的應用路由的保護網站維護公告自定義404&#xf…

云原生技能樹測評

前言 利用午休后的10多分鐘時間&#xff0c;看了看APP的技能樹板塊&#xff0c;簡單的提出幾個看法&#xff01; 答題過程 可以設置為闖關類型&#xff0c;答對一道后可以進入下一關&#xff0c;或者是一個章節為一關&#xff0c;讓大家一直有一種期待 回答錯誤數量 可以…

原型和閉包

原型和閉包 一切皆對象 一切皆對象&#xff08;類型值除外&#xff09; undefined, number, string, boolean屬于簡單的值類型 函數、數組、對象、new Number(10)都是對象。他們都是引用類型 Null是基本數據類型&#xff0c;不是引用數據類型 基本數據類型的值就是它本身的值&a…

python 排序算法

冒泡排序&#xff1a; 1 #coding:utf-82 3 比較相鄰的元素&#xff0c;每一趟交換后&#xff0c;最后的元素是最大的。4 第一次比較n-1次&#xff0c;第二次比較n-2次。。。第n-1次比較1次5 進行n-1次冒泡次數6 最優時間復雜度O(n),最壞時間復雜度O(n^2)7 8 9 def bubble_sort…

獎勵 CSDN 社區的領軍人物

設計動機 領軍人物榜單在這里&#xff1a;https://blog.csdn.net/rank/list/role CSDN 是中國 IT 人士學習、成長、成功的平臺&#xff0c; 這個平臺有很多博主&#xff0c; 博主寫的很多優秀文章獲得了粉絲。 那么&#xff0c; 博主獲得粉絲之后&#xff0c; 博主以粉絲為榮…

一文教會你何為重繪、回流?

文章目錄css圖層圖層創建的條件重繪(Repaint)回流觸發重繪的屬性觸發回流的屬性常見的觸發回流的操作優化方案requestAnimationFrame----請求動畫幀寫在最后學習目標&#xff1a; 了解前端Dom代碼、css樣式、js邏輯代碼到瀏覽器展現過程了解什么是圖層了解重繪與回流了解前端層…

mockjs中的方法(三)

1&#xff09;Mock.mock()&#xff1b; Mock.mock( url, type, template, function(options) ); 其中 url 是定義我們要請求的 url 地址&#xff0c;以便于我們請求的時候 mock 去進行攔截&#xff0c;知道我們要去請求那個值&#xff1b;但是它也是可選的&#xff0c;而且格式…

js函數、js對象的這些點你真的懂嗎?

本篇學習目標 ?了解函數&#xff08;高級&#xff09;原型原型鏈概念\textcolor{green}{了解函數&#xff08;高級&#xff09;原型原型鏈概念}了解函數&#xff08;高級&#xff09;原型原型鏈概念 ?掌握函數作用域\textcolor{green}{掌握函數作用域}掌握函數作用域 ?掌握…

前端處理跨域的幾種方式

什么是跨域&#xff1f; 跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源&#xff0c;這里跨域是廣義的。 廣義的跨域&#xff1a; 1、資源跳轉&#xff1a;A鏈接、重定向、表單提交 2、資源嵌入&#xff1a; <link>、<script>、<img>、<frame&g…

程序員必知的緩存套圖

文章目錄1. 線程與進程1.1 進程:1.2. 線程:1.3. 關系2. 瀏覽器內核模塊組成4. 事件循環機制5. 緩存5.1. 緩存理解5.2. 緩存分類5.3. 緩存使用示意圖5.4. 緩存中的header參數1. 線程與進程 1.1 進程: 進程是計算機中的程序關于某數據集合上的一次運行活動&#xff0c;是系統進…

安裝webpack及使用

前言 你是否也是只會運用框架中集成好的Webpack配置呢&#xff1f;你明白每一項的意義么&#xff1f;你懂多少Webpack的個性化配置項呢&#xff1f;本篇文章為你講解Webpack中的各種配置項參數及作用&#xff01; 文章目錄了解Webpack相關開啟項目編譯打包應用使用webpack配置…