GDKOI2015 Day2

P1

題目描述:

  給出一個二分圖,選擇互不相交的邊,使得邊覆蓋的點權和最大。

solution:

  簡單DP,用樹狀數組維護最大值。

  時間復雜度:$O(n \log n) $

P2

題目描述:

  給出N個或黑或白的元素,每個元素有與A集合和B集合相對應的A,B兩個值,將N個元素分成A,B兩個集合,使每個集合的前K大中的黑色元素的總和最大。

solution:

  因為每個元素都有兩個關鍵字,而且每個關鍵字只對對應的集合有用,所以必須對其中一個關鍵字進行固定。枚舉A集合的第K大是哪個元素(i),因為只需要黑色元素總和最大,所以A值比A[i]大的黑色元素都歸到A集合,A值比A[i]小的白色元素也歸到A集合(防止該元素是B集合的前K大)。然后對黑色元素和剩下的白色元素進行DP,狀態f[p][q]表示到前p個元素有q個元素分到了A集合的最大值。

  時間復雜度:$ O(n^3) $

P3

題目描述:

  給定一棵樹。在線求路徑點序列u -> ... -> v1,連續子序列a1,a2 ... ak滿足a1<a2< ... <aj>aj+1 >aj+2 >.....>ak或者a1>a2>... >aj< aj+1<aj+2<.... <ak,1<=j<=k,求最大的 \(k\)

solution:

  關于樹的算法不多,這題LCA就可以了,只是如何實現合并而已,我們對于LCA的每個區間記12個域:

  區間左端:

  - 遞增
  - 遞減
  - 先增后減
  - 先減后增

  區間右端:
- 遞增
- 遞減
- 先增后減
- 先減后增
- 區間左端編號
- 區間右端編號
- 區間長度
- 最大值

  至于轉移方程嘛……,自己推。

  時間復雜度:$ O(n \log n) $

P4

題目描述:

  給出一個一開始為0的無窮棧,每次從棧頂拿出一個數\(top\),并把棧里剩下的元素最低位變成$ (Y+1) \mod K \((Y為之前的最低位),然后用top與L相比,如果\) top < L \(,那么X減一,否則把\)top+AK\(復制K份放入棧中。當\)X=0$時,結束操作,輸出top。

solution:

  這題的數據很大,因此應該是找規律的題目。觀察可得,棧里面的數的變化只與出棧次數有關,如果要把棧里的某一個元素出棧,必須經歷s次出棧,而( s%K=1).

  令$ L=cAK+d \(,而棧里的數i只可能是\) i=pAK+p,(0\leq p\leq c+1, 0\leq q\leq d) \(因此我們可以尋找循環節。例如\)K=5,L=21,A=2$

232218508336128.png

  這表格包含了所有可能的數字,從縱向來看,它代表某一個數加AK的值,橫向來看,它代表每個數的變化。紅色為死亡瀕臨線。對于第二行(從下向上數)的數來說,必須死13次才能將其出棧,對于第一行來說,必須要死135次才能將其出棧。如果要將第一行的全部出棧,必須死$ 135^2 $次。

再舉一個例子:\(K=5,L=26,A=2\)

232219051456568.png

對于第三行要5次,第二行(5^2),第三行(5^3),……

再利用第一個例子研究答案:

30 31 32 33 34 * 31 32 33 34 30 * 22 23 24 *
31 32 33 34 30 * 22 23 24 * 30 31 32 33 34 *
22 23 24 * 30 31 32 33 34 * 31 32 33 34 30 *
23 24 * 30 31 32 33 34 * 31 32 33 34 30 * 22
24 * 30 31 32 33 34 * 31 32 33 34 30 * 22 2331 32 33 34 30 * 22 23 24 * 30 31 32 33 34 *
22 23 24 * 30 31 32 33 34 * 31 32 33 34 30 *
23 24 * 30 31 32 33 34 * 31 32 33 34 30 * 22
24 * 30 31 32 33 34 * 31 32 33 34 30 * 22 23
30 31 32 33 34 * 31 32 33 34 30 * 22 23 24 *22 23 24 * 30 31 32 33 34 * 31 32 33 34 30 *
23 24 * 30 31 32 33 34 * 31 32 33 34 30 * 22
24 * 30 31 32 33 34 * 31 32 33 34 30 * 22 23
30 31 32 33 34 * 31 32 33 34 30 * 22 23 24 *
31 32 33 34 30 * 22 23 24 * 30 31 32 33 34 *……

  規律顯得,

  當d<K時,每行有( (d+1)K+(K-d-1) )個元素,每一部分為一行出棧的死亡情況,所以答案的循環節(即整個表格死一次)為( ((d+1)K+(K-d-1))K^c )

  算答案時令( t=(d+1)K+(K-d-1) ),把X拆成( X=a_{0}+\sum_{i=1}^{c}a_{i}tK^{i-1} ),通過( (\sum_{i=1}^{c}a_{i})%K )算出答案所在行,再利用( a_{0} )確定列。

  當d>=K時,每行有K個元素,所以答案的循環節為( K^(c+2) ),計算答案就想一想好了。

  廢話不說(我也解釋不清),上代碼(和鏈接)

  wck

  lyl

#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <queue>
#include <deque>
#include <map>
#include <vector>
using namespace std;
typedef long long LL;
const LL oo=1e18;int T;
LL X, K, L, A;int main()
{freopen("avenger.in", "r", stdin);freopen("avenger.out", "w", stdout);scanf("%d", &T);while (T--){scanf("%I64d%I64d%I64d%I64d", &X, &K, &L, &A);LL AK=A*K;LL c=L/AK, d=L-AK*c;LL ans=0;if (d>=K-1){--X;for (int i=1; X && i<=c+2; X/=K, ++i)ans=(ans+X%K)%K;printf("%I64d\n", (c+1)*AK+ans);}else{LL t=(d+1)*K+(K-d-1);--X;LL a0=X%t;X/=t;for (int i=1; X && i<=c; X/=K, ++i)ans=(ans+X%K)%K;if (ans<d+1)//the last is in the front最后一行在前{if (a0<(d-ans+1)*K)//the last{LL tmp=a0%K;a0/=K;printf("%I64d\n", (c+1)*AK+(ans+a0+tmp)%K);}else//the last but one倒數第二行{a0-=(d+1-ans)*K;if (a0<K-1-d) printf("%I64d\n", c*AK+d+1+a0);else//the last最后一行{a0-=(K-1-d);printf("%I64d\n", (c+1)*AK+(a0%K+a0/K)%K);}}}else//the last but one is in the front倒數第二行在前{if (a0<(K-d-1)-(ans-d)+1)printf("%I64d\n", c*AK+a0+ans);else//the last最后一行{a0-=(K-d-1)-(ans-d)+1;if (a0<K*(d+1))printf("%I64d\n", (c+1)*AK+(a0/K+a0%K)%K);else//the last but one倒數第二行{a0-=K*(d+1);printf("%I64d\n", c*AK+d+1+a0);}}}}}return 0;
}

轉載于:https://www.cnblogs.com/GerynOhenz/p/4361184.html

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

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

相關文章

寫在SDOI2016Round1前的To Do List

理性的整理了一下自己的不足。 計算幾何啥都不會&#xff0c;字符串類DP毫無練習&#xff0c;數據結構寫的不熟&#xff0c;數論推不出式子&#xff0c;網絡流建模常建殘&#xff1b; 需要達成的任務&#xff1a; 一、網絡流&#xff1a; 熟練網絡流的板子&#xff08;之前一…

XMind入門教程

最近在總結一些框架知識的時候&#xff0c;總找不到一款好的軟件來畫流程圖&#xff0c;后來在網上查找這方面的東西&#xff0c;找到了 XMind,發現用來畫思維導圖還挺好的&#xff0c;看起來思路清晰&#xff0c;美觀。那么便將使用的一些經驗分享給大家。 1、什么是思維導圖&…

標簽與表格

bgcolor 頁面背景色 text 文字顏色 topmargain 上頁邊距 leftmargain 左頁邊距 rightmargain 右頁邊距 bottomargain 下頁邊距 background 背景壁紙 &nbsp 空…

java word轉圖片tiff_不怕復制內容 Word轉存TIFF文件這么玩

辛辛苦苦把Word文件敲好&#xff0c;為了不讓別人復制走內容&#xff0c;只能看文稿&#xff0c;有些人就選擇轉存成PDF文件——但是PDF文件依然可以被編輯&#xff0c;還有什么方法能防范呢&#xff1f;其實在Word 2003之前&#xff0c;用戶可以通過Microsoft Office Document…

item-設置可見性

如果我們想要設置menu中item的可見行&#xff0c;有兩種方式&#xff1a; 1.直接在menu的xml代碼中設置 <menu> <item android:id"id/action_hotknot"android:showAsAction"always"android:icon"drawable/action_mode_hotknot"android:…

IDC:聚焦6+6,抓住數字化轉型商機

今天&#xff0c;IDC中國2015年中國ICT市場趨勢論壇巡回系列的第二站在北京舉行。論壇的主題為“加速創新實現數字化轉型”。 這是最壞的時代&#xff1a;經濟增長乏力、實體經濟不振、傳統行業在被顛覆與重構、IT市場總體增長進入個位數區間、IT第二平臺的領導廠商仍在困境中。…

編寫EL函數

1.建立java類的靜態函數 package chapter4;public class ELFun {public static String processStr(String s){s s.replaceAll("<", "&lt");s s.replaceAll(">", "&gt");s s.replaceAll(" ", " "…

2016.3.22(關系型數據庫簡介,管理數據庫和表)

數據庫的集中式控制有什么優點&#xff1f; 1&#xff1a;降低存儲數據的冗余度 2&#xff1a;更高的數據一致性 3&#xff1a;存儲數據的可以共享 4&#xff1a;可以建立數據庫所遵循的標準 5&#xff1a;便于維護數據完整性 6&#xff1a;能夠實現數據的安全性 存儲數據有哪些…

java前端ajax提交數據_Java 前端使用Ajax通過FormData傳遞文件和表單數據到后臺

提交1&#xff0c;當僅僅想上傳文件到后臺function tijiao(){var file $("#image")[0].files[0];//打印file 為對象console.log(file);var formObj new FormData();formObj.set(image, file);$.ajax({url:test/test3,data:formObj,type: POST,dataType:json,proces…

IBM收購以色列應用發現公司EZSource

6月1日晚消息&#xff0c;IBM宣布對以色列公司EZSource進行收購&#xff0c;交易的具體條款沒有被披露。 EZSource成立于2003年&#xff0c;以自有視覺面板產品聞名&#xff0c;該公司的產品能夠幫助開發人員將重要的大型機應用程序現代化。該公司在以色列、英國、美國、瑞士、…

oracle存儲過程+游標處理select數據

create or replace PROCEDURE UPDATE_RECORDCODE iscursor location_data is select * from location where remark in(952701,9527008,952705);--申明游標serviceCode NUMBER:1; BEGINfor l in location_data loop --遍歷游標BEGIN--業務處理UPDATE SERIAL_CODE SET CUR_NUMB…

POJ 3617 Best Cow Line(最佳奶牛隊伍)

POJ 3617 Best Cow Line Time Limit: 1000MS  Memory Limit: 65536K 【Description】 【題目描述】 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual "Farmer of the Year" competition. In this contest every farmer arranges his cows in a …

js blob php_js發送blob數據, php端接收blob數據

服務器環境CentOs7.4 php7print_r($_FILES)blob結構如下Array([blob] > Array([name] > blob[type] > image/jpeg[tmp_name] > /tmp/phpu37qnN[error] > 0[size] > 1175745))很納悶這個結構為什么沒有圖片數據流&#xff0c;只有圖片的信息悶了幾個小時胡…

eclipse環境配置、快捷鍵及基本操作

Eclipse與MyEclipse的區別 Elipse是一種可擴展的開放源代碼的集成開發環境&#xff0c;具有免費、純java語言編寫、免安裝、擴展性強等特點。 MyElipse在Elipse基礎上追加的功能性插件&#xff0c;對插件收費&#xff0c;在WEB開發中提供強大的系統架構平臺。 工作空間的基本配…

php 枚舉類型比較,枚舉的比較-python編程入門系列圖文教程-PHP中文網教程

因為枚舉成員不是有序的&#xff0c;所以它們只支持通過標識(identity) 和相等性 (equality) 進行比較。下面來看看 和 is 的使用&#xff1a;#!/usr/bin/env python3# -*- coding: UTF-8 -*-from enum import Enumclass User(Enum):Twowater 98Liangdianshui 30Tom 12Twow…

我與C++的不解情緣

我是一個老實人&#xff0c;我當時報考C真的全心是為了自己自考的免考&#xff0c;絕不是為了什么二級證&#xff0c;可是&#xff0c;進行到一半的時候&#xff0c;突然獲悉&#xff0c;C自我們這次開始&#xff0c;不作為免考科目了&#xff0c;當時我的心里啊&#xff0c;那…

hadoop之 Hadoop2.2.0中HDFS的高可用性實現原理

在Hadoop2.0.0之前&#xff0c;NameNode(NN)在HDFS集群中存在單點故障&#xff08;single point of failure&#xff09;&#xff0c;每一個集群中存在一個NameNode&#xff0c;如果NN所在的機器出現了故障&#xff0c;那么將導致整個集群無法利用&#xff0c;直到NN重啟或者在…

3D坦克大戰游戲源碼

3D坦克大戰游戲源碼&#xff0c;該游戲是基于xcode 4.3&#xff0c;ios sdk 5.1開發。在xcode4.3.3上完美無報錯。兼容ios4.3-ios6.0 &#xff0c;一款ios平臺上難得的3D坦克大戰游戲源碼&#xff0c;有20張不同的作戰地圖。通過左下角方向鍵和重力感應來控制坦克運行&#xff…

mongodb php 擴展 linux,CentOS Linux 安裝PHP的MongoDB擴展

一、下載、編譯以及安裝MongoDB的php擴展cd /data0/softwaregit clone git://github.com/mongodb/mongo-php-drivercd mongo-php-drivergit submodule initgit submodule update/usr/local/webserver/php/bin/phpize./configure --with-php-config/usr/local/webserver/php/bin…

The hierarchy of the type UserOperateLogAdvisor is inconsistent

加入 aopalliance-1.0.jar轉載于:https://www.cnblogs.com/toSeeMyDream/p/4375962.html